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 :

Limiter un Memo à 30 caractères/ligne et max 10 lignes


Sujet :

Lazarus Pascal

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 12
    Points
    12
    Par défaut Limiter un Memo à 30 caractères/ligne et max 10 lignes
    Bonjour,
    en gros mon problème est que je dois avoir un texte entré par l'utilisateur qui ne dois pas dépasser 30 caractères de larges et 10 lignes !
    Comment puis-je m'y prendre ?

    Pour la limitation de ligne, j'ai trouvé une solution qui marche bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: char);
    begin
      if (Memo1.Lines.Count >= 10) then
        if Key = #13 then Key:=#0;
    end;
    Par contre pour limiter a 30 caractères par ligne je ne sais pas !

    Merci

    Cordialement,
    Yoanben

  2. #2
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    Bonjour

    Et avec MaxLength limité a 30 caractères.
    A+
    .
    Why
    .
    //------------------

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Eh nan !
    MaxLength, c'est le nombre total de caractère autorisé !

    Mais merci de m'avoir répondu.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Il faudrait être plus précis dans la description de votre problème. Il est possible qu'utiliser le MaxLength (par exemple à 300 [10 lignes de 30 caractères]) ne mène pas au résultat escompté.

    C'est éventuellement un problème de césures. "Eventuellement"... car cela dépend de ce que contient le mémo... Si c'est un texte intelligible, à chaque saisie de caractère, il faut redécouper le contenu du mémo en fonction des espaces (règle de césure usuelle) et de la règle que vous imposez de 30 caractères max. par ligne (en réglant le cas où un mot dépasserait 30 caractères [Genre faute de frappe comme oubli d'un espace...]). Dans ce cas, tant que la 10ème ligne ne contient pas plus de 30 caractères, la saisie est autorisée...

    S'il s'agit d'une série de caractères genre matrice, liste ou d'une utilisation systématique du retour à la ligne par CRLF, le problème est différent.

    Cordialement. Gilles

  5. #5
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    Oui mais si tu met ton Maxlength a 10 x 30 et que tu indique que tout les 30 caractère on saute une ligne.

    MaxLength := 300;

    Si ( Length ( Memo Text = 30 ) alors memo #13

    Peut que ???
    .
    Why
    .
    //------------------

  6. #6
    Membre confirmé Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    668
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Novembre 2004
    Messages : 668
    Points : 628
    Points
    628
    Par défaut
    il y a cela qui le fait mais le problème c'est qu'il saute une ligne au depart:

    Le code brut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     procedure TForm1.Memo1Change(Sender: TObject);
     
      { var posx : Integer; }
           { posy : Integer; }
     begin
        {  posx := Memo1.CaretPos.X +1 ;  Label1.Caption := IntToStr(posx); }
        { posy := Memo1.CaretPos.Y +1; }
     
    { CaretPos.X indique la position droite ou gauche du curseur dans le memo }
       if(Memo1.CaretPos.X >=9) then
          Memo1.Text := Memo1.Text+#13;
     
     end;
    Code a mettre dans l'evenement OnChange du Memo,
    .
    Why
    .
    //------------------

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 18
    Points : 12
    Points
    12
    Par défaut
    Bonjour
    D'abord merci a vous pour les réponses.

    Le mémo ne contient que du texte que l'utilisateur va entrer.
    Mon programme récupère la saisie et l'insère dans un document word piloté par OLE.
    Le problème, c'est que si le texte fait plus de 10 lignes, le document word sera sur 2 pages.
    Et si les lignes sont trop longues, il reviendra automatiquement à la ligne et donc risque de faire une 2eme page si l'utilisateur utilise les 10 lignes.
    Le problème avec la méthode de winow, c'est que si l'utilisateur écrit moins de 30 caractères sur une ligne et qu'il complète les dix lignes suivantes, il pourra dépasser les 30 caractères sur la dernière ligne (ou même sur une ligne après celle qui n'est pas complète) ce qui aura pour effet de faire un retour a la ligne dans le document word, et donc faire une 2eme page.

    Après ton deuxième code, je ne comprend pas ce que c'est "Memo1.CaretPos.X" !

    Merci

Discussions similaires

  1. Limiter le Nbr de caractères par ligne dans un textaera.
    Par anca2 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/06/2009, 08h31
  2. Limite max de ligne dans une table Access
    Par roidurif dans le forum VBA Access
    Réponses: 4
    Dernier message: 25/05/2009, 16h16
  3. GtkTreeView limiter le nombre de caractère par ligne
    Par zephyrin_damortien dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 28/03/2009, 11h39
  4. [CKEditor] limiter le nombre de caractères par ligne
    Par janclod dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 29/09/2008, 16h42
  5. Limiter le nombre de caractère par ligne d'un textarea
    Par rantanplan08 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 04/01/2006, 19h31

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