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 :

TMemo et TRichEdit [FAQ]


Sujet :

C++Builder

  1. #1
    Invité
    Invité(e)
    Par défaut TMemo et TRichEdit
    Il y a quelque chose qui m'échappe depuis longtemps : je ne vois pas la différence entre un composant TMemo et un composant TRichEdit.

    Comme semble le suggérer l'icone de la palette de composants, le RichEdit permet d'utiliser une police différente pour les différentes lettres du message contenu dans les "strings" du composant.

    Or, je n'arrive absolument pas à changer la casse des textes que je place dans ce composant.

    C'est normal ? Il y a un truc ? :

    J'ai regardé dans l'aide et je n'ai rien vu de fondamentalement différent concernant l'utilisation de ces deux composants ? De plus, leurs propriétés semblent les mêmes...

    Vous auriez la réponse ?

  2. #2
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    Il est effectivement très difficile de saisir la différence. Il semble que TRichEdit s'utilise pour du texte formaté et TMémo pour du multilignes standard. TRichEdit a des comportements dérivés de TCustomRichEdit alors que TMemo a des comportement dérivés de TCustomMemo.

    À bientôt
    Gilles

  3. #3
    CGi
    CGi est déconnecté
    Expert éminent
    Avatar de CGi
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 8 254
    Points
    8 254
    Par défaut
    Dans un RichEdit on peut mettre des fonts et des couleurs de fonts différentes pour le texte.
    Un petit exemple tu prends un TRichEdit (TRichEdit1) tu y mettera du texte a l'execution. Tu en sélectionnera des parties et quand c'est partie
    de texte seront sélectionné tu executera une des lignes de code suivante:

    Changer la fonte pour la sélection:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RichEdit1->SelAttributes->Name = "Courier New";
    Changer la taille de la fonte pour la sélection:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RichEdit1->SelAttributes->Size = 24;
    Passer la sélection en Gras

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RichEdit1->SelAttributes->Style = 
              RichEdit1->SelAttributes->Style << fsBold;
    ........

  4. #4
    Membre chevronné
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Points : 1 911
    Points
    1 911
    Par défaut
    Merci CGi, j'enlève donc ma réponse qui n'est pas bonne, on peut effectivement avoir autant de polices et de couleurs qu'on veut dans le RichEdit qui porte donc dès lors un nom correct. Il fallait passer par une sélection, ce que je ne savais pas.

    On peut aussi procéder à ces initialisations par programme, dans ce cas on utilise la propriété SelStart pour le numéro de caractère de départ et SelLength pour la longueur, par exemple en choisissant une sélection à partir du caractère 3 de longueur 5 en rouge Papyrus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RichEdit1->SelStart=3;
    RichEdit1->SelLength=5;
    RichEdit1->SelAttributes->Name="Papyrus";
    RichEdit1->SelAttributes->Color=clRed;
    À bientôt
    Gilles

  5. #5
    Invité
    Invité(e)
    Par défaut TMemo & TRichEdit [RESOLU]
    Merci pour ces réponses...

  6. #6
    Invité
    Invité(e)
    Par défaut Comment formater un RichEdit ? [RESOLU]
    Suite à vos messages, j'ai gratté un peu le TRichEdit et je me suis fait un petit bout de code pour formater certaines zones de textes de mon controle TRichEdit.
    Je vous le colle ci-dessous, au cas où vous en auriez besoin.
    Je pense que ça pourrait figurer dans la FAQ, parce que ce n'est pas évident en lisant la doc, et au vu des réponses, leTRichEdit est bien mal connu...


    Dans le code ci-dessous, j'ai une fiche avec un controle TRichEdit.
    Dans ce RichEdit, j'ai un petit texte avec des titres et je voudrais que tous les titres apparaissent avec un style de police différent du texte.

    Dans la doc (appuyer sur F1 après avoir sélectionné la propriété Plain Text du controle), il est proposé de remplir le TRichEdit à partir d'un fichier .RTF par la méthode RichEdit1->Lines->LoadFromFile(fichier);
    Il semble d'ailleurs qu'il y a une erreur car dans l'exemple, ils placent PlainText à true alors que dans la doc, ils disent qu'il faut le mettre à false pour prendre en compte le formatage. A vérifier...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    //---------------------------------------------------------------------------
    // Apparition de la fiche
    //---------------------------------------------------------------------------
    void __fastcall TF_info_X::FormShow(TObject *Sender)
    {
      //
      // Déclarations
      //
      int nI;
      // variables de formatage du TRichEdit
      int nFind;
      TStringList * pListeChaine = new(TStringList);
     
      // Remise du focus sur les conseils
      this->RichEdit_conseils->SetFocus();
      //
      // Application des styles
      //
      // - initialisation du texte à passer en style
      pListeChaine->Clear();
      pListeChaine->Add("Mon titre 1");
      pListeChaine->Add("Mon titre 2");
      pListeChaine->Add("Etc.");
      pListeChaine->Add("...");
      pListeChaine->Add("Les TRichEdit, c'est pas simple !");
      pListeChaine->Add("Mon dernier titre");
     
      // - balayage de la fiche
      for (nI = 0; nI < pListeChaine->Count; nI++)
      {
        nFind = RichEdit_conseils->FindTextA(pListeChaine->Strings[nI],
                                             0,
                                             RichEdit_conseils->Text.Length(),
                                             TSearchTypes()<< stMatchCase);
        if (nFind >= 0)
        {
          RichEdit_conseils->SelStart = nFind;
          RichEdit_conseils->SelLength = pListeChaine->Strings[nI].Length();
          // Application du style
          RichEdit_conseils->SelAttributes->Size = 10;
          RichEdit_conseils->SelAttributes->Style =
              RichEdit_conseils->DefAttributes->Style << fsBold
                                                      << fsItalic
                                                      << fsUnderline
                                                      << fsStrikeOut;
        }
      }
      // Désélection
      RichEdit_conseils->SelStart = 0;
      RichEdit_conseils->SelLength = 0;
      // Libération de la mémoire
      delete pListeChaine;
    }
    Juste une petite suggestion à Monsieur Borland pour le TRichEdit de la prochaine version... on pourrait pas le remplir juste par copier-coller depuis un fichier rtf ? :

  7. #7
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 197
    Points : 11 619
    Points
    11 619
    Par défaut
    Il me semble également qu'un TMemo et dans la librairie CLX et pas le TRichEdit.
    Merci pour le code que tu as posté.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 01/07/2012, 15h12
  2. Réponses: 2
    Dernier message: 09/01/2007, 21h39
  3. Position d'une ScrollBar dans un TRichEdit (ou TMemo)
    Par Troll dans le forum C++Builder
    Réponses: 9
    Dernier message: 24/02/2005, 15h18
  4. Adaptation d'un code TMemo vers TRichEdit : problème de ScrollBars
    Par Droïde Système7 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/01/2005, 15h06
  5. Capacité d'un TMemo ou d'un TRichEdit
    Par alainvh dans le forum Composants VCL
    Réponses: 3
    Dernier message: 15/10/2004, 13h05

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