IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Contrôle multi lignes [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Points : 172
    Points
    172
    Par défaut Contrôle multi lignes
    Bonjour.

    Dans un de mes programmes, j'ai un TEdit qui, suivant je que je veux saisir, n'est pas toujours assez large. Il me semble q'il n'est pas possible de le rendre multi-lignes ...

    J'essaye donc de le remplacer par un TMemo. Le problème, c'est que je dois ensuite récupérer la 1ère ligne sous forme d'une string et là :
    • si j'utilise la propriété Text, j'ai tout le contenu alors que je ne veux que la 1ère ligne
    • d'où l'idée de prendre Lines[0] mais la ligne est tronquée si le Memo est venu à la ligne

    Une idée ?

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    ta question est un peu contradictoire car si tu utilises un TEdit c'est que tu ne veux saisir qu'une ligne alors pourquoi parles-tu de plusieurs lignes de saisie sur le TMemo ? Sinon il y a pour le memo le scrollbar horizontal avec un wordwrap à false.
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Points : 172
    Points
    172
    Par défaut
    Bonjour.

    Je me suis peut-être mal exprimé ... je veux effectivement saisir du texte sur une seule ligne mais avec un retour à la ligne quand j'atteins la fin du contrôle. Il me semble que c'est impossible avec un TEdit (pas de propriété WordWrap).

    D'où mon passage au TMemo avec WordWrap à True (sinon je retrouve la situation précédente).

    Mon problème est alors de récupérer le contenu saisi dans une variable chaine de caractères (String).

    Si j'utilise Text, j'ai tout le texte contenu dans le Memo alors que j'aimerais n'avoir que la 1ère ligne. Ce qui pose problème si l'utilisateur a involontairement fait un retour à la ligne. Peut-on obliger un TMemo à n'avoir qu'une seule ligne ? Je n'ai pas trouvé comment ...

    d'où l'idée de prendre Lines[0] mais, si WordWrap a été appliqué, ce n'est pas la ligne complète qui est retournée : c'est la première ligne "affichée", la suite étant dans Lines[1] puis éventuellement Lines[2], etc ...

    En résumé : j'aimerais saisir une seule ligne de texte dans un contrôle pratiquant le "WordWrap" et ensuite récupérer le texte saisi dans sa totalité, sans caractères parasites, ...
    (en fait, il s'agit d'une requête SQL saisie par l'utilisateur puis exécutée ensuite)

    Bonne journée.

  4. #4
    Membre éclairé
    Avatar de Chrispi
    Homme Profil pro
    Chargé de missions
    Inscrit en
    Juin 2020
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé de missions
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2020
    Messages : 204
    Points : 885
    Points
    885
    Par défaut
    Bonjour thewolf,

    Je pense que la solution à ton problème de retour à la ligne involontaire de l'utilisateur, c'est de mettre la propriété WantReturns de ton TMemo à false. Ainsi, lors de la saisie, celle-ci se fait sur plusieurs lignes avec la propriété WordWrap à True, mais il est impossible de faire volontairement ou non un retour à la ligne. Il faut aussi s'assurer que la propriété Lines du TMemo soit bien à 0 ligne et 0 caractère.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Points : 172
    Points
    172
    Par défaut
    Bonjour Chrispi.

    Merci pour le conseil de mettre WantReturns à False. (En revanche, il reste possible de faire un retour à la ligne avec ctrl-Enter ...)

    Je reste cependant surpris que les "Lines" d'un Memo correspondent au texte affiché et non au texte réel. Ou alors il faudrait considérer chaque bloc de texte sans retour à la ligne comme un paragraphe et avoir en plus de "Lines" accès aux "Paragraphs" d'un Memo. Je n'ai pas l'impression que cela existe.

    Le passage au TMemo m'a donné l'idée de sauvegarder et recharger son contenu. Il contiendrait différentes requêtes, chacune étant un "paragraphe" et par un jeu de copier/coller il faudrait mettre en 1ère position celle que je veux exécuter ...

    Je devrais pouvoir atteindre mon but en testant les caractères du "Text" et en tronquant si je trouve un #13.

  6. #6
    Membre éclairé
    Avatar de Chrispi
    Homme Profil pro
    Chargé de missions
    Inscrit en
    Juin 2020
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Chargé de missions
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2020
    Messages : 204
    Points : 885
    Points
    885
    Par défaut
    Bonjour thewolf,

    (En revanche, il reste possible de faire un retour à la ligne avec ctrl-Enter ...)
    Oui, c'est vrai. Je n'y avais pas pensé. Tu peux contourner ce problème en faisant saisir l'utilisateur dans un TEdit avec visualisation simultanée de la saisie dans le TMémo.
    Pour faire ça, tu conserves les propriétés du TMemo paramétrées comme vu précédemment, mais il faut mettre en plus sa propriété ReadOnly à True.
    Puis mettre ce code au niveau de l'évènement OnChange du TEdit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      Memo1.text:= Edit1.text;
    end;
    Ainsi, sauf erreur de ma part, il n'y a plus de possibilité de faire de retour à la ligne.
    En espérant que ça pourra t'aider.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Points : 172
    Points
    172
    Par défaut
    Bonjour Chrispi.

    Effectivement une idée intéressante.

    Mais j'ai pris la voie que j'indiquais dans ma précédente réponse : l'utilisateur peut saisir autant de requêtes SQL qu'il le souhaite avec un retour à la ligne entre elles (et possibilité de sauvegarder l'ensemble). Lors du traitement, je récupère la requête correspondant au "paragraphe" du memo dans lequel se trouve le curseur ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Auto-scroll d'une zone de texte multi ligne
    Par malek_dz77 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/11/2005, 13h09
  2. [HTML] Supprimer le multi ligne d'une zone de text
    Par Furius dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 29/11/2005, 14h49
  3. Jtable et multi-lignes dans les cellules
    Par tuxor dans le forum Composants
    Réponses: 2
    Dernier message: 19/11/2005, 07h32
  4. [JTree] Libelle multi-ligne d'un noeud
    Par dmasse dans le forum Composants
    Réponses: 6
    Dernier message: 22/07/2005, 15h48
  5. Multi lignes dans un StringGrids ?
    Par Xavier dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/11/2002, 23h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo