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

C++Builder Discussion :

Retour de chariot automatique


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 25
    Par défaut Retour de chariot automatique
    Dans un RichEdit, j'ai besoin de faire un retour de chariot automatique après 40 caractères, j'utilise ce code, probleme après l'envoie du VK_RETURN, j'ai des retours de chariot à l'infinie

    Comment corriger le bug ?

    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void __fastcall TForm1::RichEdit1KeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
         //Pour trouver le nombre de caractère sur la ligne
         longLigne = (RichEdit1->Perform(EM_LINELENGTH, (LPARAM) (DWORD) numCaractere, 0));
         if (longLigne > 40)
         {
              Key = VK_RETURN;
     
         }
    }

  2. #2
    Membre éprouvé Avatar de .:morgoth:.
    Profil pro
    Inscrit en
    Février 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 124
    Par défaut
    Tu peux tenter quelque chose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TForm1::RichEdit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
    {
      int n=(RichEdit1->Perform(EM_LINELENGTH, (LPARAM) (DWORD) numCaractere, 0)); 
      if (n>40) RichEdit1->Text=RichEdit1->Text+"\r\n";
    }
    Sinon y'a aussi une astuce qui consiste à mettre la taille de ton RichEdit pile poil pour contenir 40 caractères et définir la propriété WordWrap=true

    A toi de voir

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Par défaut Bizarre
    C'est bizarre, j'ai testé ton code, et ça n'a chez moi aucun effet.
    La nouvelle valeur affectée à Key dans l'évenement KeyDown
    ne modifie pas la frappe. Avec KeyPress c'est mieux!

    Ton problème doit avoir une autre origine. Regarde tes évenements.

  4. #4
    Membre éprouvé Avatar de .:morgoth:.
    Profil pro
    Inscrit en
    Février 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 124
    Par défaut
    Ouais completement d'accord avec toi Troll.
    J'avais meme pas tilté...
    C'est bien OnKeyPress qu'il faut utiliser etpas OnkeyDown.

    Par contre mon code devrait marcher...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 25
    Par défaut
    Mon code fonctionne bien, mais que je fasse \r\n ou Key = VK_RETURN , le problème est après 40 frappes il vais des retour de chariot sans fin..

    Je ne veux pas avoir une fenêtre fixe j’aime bien laisser l’utilisateur avec un minimum de contrôle sur l application.

    Je vais tester dans OnKeyPress.

    Merci.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 25
    Par défaut Retour de Chariot automatique


    Merci,

    J'ai trouver, une ligne de code dans RichEdit1Change causer le Bug.

    Maintenant ceci est nickel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void __fastcall TForm1::RichEdit1KeyPress(TObject *Sender, char &Key)
    {
         //Pour trouver le numéro de ligne(s) et de caratère(s)
         numLigne = RichEdit1->Perform(EM_EXLINEFROMCHAR, 0, (LPARAM) (DWORD) RichEdit1->SelStart);
         numCaractere = (RichEdit1->SelStart - RichEdit1->Perform(EM_LINEINDEX, (LPARAM) (DWORD) numLigne, 0));
         AnsiString LigneCol(IntToStr(numLigne) + ": " + IntToStr(numCaractere));
         //Form1->StatusBar->Panels->Items[0]->Text = LigneCol;
     
         if (numCaractere > 39)//Maximum de 40 caracteres par ligne
         {
              Key = VK_RETURN;
         }
    }
    Merci.

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

Discussions similaires

  1. [WD14] Retour chariot automatique
    Par Raptor92 dans le forum WinDev
    Réponses: 4
    Dernier message: 06/08/2009, 09h58
  2. [XSL-FO] Comment faire un retour de chariot
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 22/03/2005, 07h20
  3. Réponses: 4
    Dernier message: 24/01/2005, 15h50
  4. [JOptionPane]retour à la ligne automatique ?
    Par Pill_S dans le forum Composants
    Réponses: 5
    Dernier message: 01/12/2004, 11h55
  5. Réponses: 4
    Dernier message: 10/06/2004, 18h05

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