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 :

RichEdit, Changer la couleur de tous les mêmes caractères présents dans un texte


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Par défaut RichEdit, Changer la couleur de tous les mêmes caractères présents dans un texte
    Bonjour à tous,

    J'utilise un bouton, un printDialog et un RichEdit.
    En cliquant sur mon bouton je vais chercher un code.txt qui va se mettre dans mon RichEdit.

    Il se compose de cette façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    G90 G80 G40 M3
    G92 X0 Y0 Z0
    G1 F140
    X0.000
    Z-0.026
    Y0.029
    Y0.058 Z-0.026
    Y0.116 Z-0.025
    ... etc
    c'est donc ce que je retrouve dans mon RichEdit et j'aimerai par exemple que tout les 'G' soit en rouge , le 'M' en bleu

    Je viens de passer environ 1h sur google à essayer d'adapter des idées a mon code et j'en viens à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    RichEdit1->SelAttributes->Color = clRed;
    RichEdit1->SelText = "G";
    RichEdit1->SelAttributes->Color = clBlue;
    RichEdit1->SelText = "M";
    Seulement ça rajoute un G rouge sur ma premiere ligne suivie directement d'un M bleu ne faisant pas partie du code d'origine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GMG90 G80 G40 M3
    ...

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    C'est normal, tu modifie SelText !
    Il faut utiliser SelStart et SelLength pour positionner le Curseur au bon endroit (penser aux CR+LF lors des saut de ligne), ensuite tu appliques SelAttributes
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Par défaut
    En procédant de cette maniere je débute au caractère 0 et je prends une longueur de 1. Mon tout premier G devrait donc etre rouge non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RichEdit1->SelStart=0;
    RichEdit1->SelAttributes->Color = clRed;
    RichEdit1->SelLength=1;
    PS : Je n'ai pas l'aide builder

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    Tu n'as pas l'aide ? C'est bien Dommage ?
    Version inférieur à 6 sous Seven ?
    Programme d'aide de Windows (WinHlp32.exe) pour Windows 7
    Sinon Doc Wiki Embarcadero, autant l'utiliser Embarcadero nous offre une aide en ligne, c'est mieux que ces dernières années !

    lien vers ComCtrls.TRichEdit

    Je dirais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    RichEdit1->SelStart=0;
    RichEdit1->SelLength=1;
    RichEdit1->SelAttributes->Color = clRed;
    RichEdit1->SelStart=1;
    RichEdit1->SelLength=1;
    RichEdit1->SelAttributes->Color = clBlue;
    Comme le je disais il faut utiliser SelStart et SelLength pour positionner le Curseur au bon endroit ensuite tu appliques SelAttributes

    Normalement, cela fonctionne, c'est comme cela que je procédais pour colorer une trace en temps réel de débogage dans mon ancien taf en Delphi !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 33
    Par défaut
    Exact !
    C'est vrai j'avais mal placé mon SelLength

    J'ai la version 10 mais je ne l'avais pas installé.
    En tout cas super le site ! Merci

    Faut que j'essaye de trouver pour que tout les G soit en rouge maintenant, car cette technique me permet que de choisir manuellement quelle lettre je veux coloré.
    Et en cliquant sur mon bouton j'importerai beaucoup d'autres codes de tailles différentes et les G ne seront pas a la meme place

    Le RichEdit est il capable de faire ceci ? (Coloré automatiquement tout les G dans son contenu)

    Juste pour 4 caractères (d'une même ligne) en couleur il me faut 12 lignes

    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
     
    RichEdit1->SelStart=0;
    RichEdit1->SelLength=1;
    RichEdit1->SelAttributes->Color = clRed;
     
    RichEdit1->SelStart=4;
    RichEdit1->SelLength=1;
    RichEdit1->SelAttributes->Color = clRed;
     
    RichEdit1->SelStart=7;
    RichEdit1->SelLength=1;
    RichEdit1->SelAttributes->Color = clRed;
     
    RichEdit1->SelStart=11;
    RichEdit1->SelLength=1;
    RichEdit1->SelAttributes->Color = clBlue;
    Sachant que j'ai 59925 lignes dans mon code...

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    Je dirais Pos, PosEx te permettrons de faire de recherches de chaine ton texte ...
    Tu fais une sorte de coloration syntaxique, il te faut construire un dictionnaire de mot, leur associer une couleur, et faire une boucle qui recherche les mots (tu peux le faire ligne par ligne).

    Une astuce, si la 1ere lettre correspond à la 1ere d'un mot, tu regardes tout de suite la dernière lettre (si c'est possible), cela peut améliorer les perfs, il y a plein de technique d'optimisation pour chercher chaine dans un dico !
    La méthode de tri des mots dans le dictionnaire sous forme d'arbre peut-être intéressante à coder (ça c'est valable pour des mots de plus de 4 lettres, si tu en reste à une lettre, c'est pas bien compliqué)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. [JavaScript] Changer le style de tous les éléments d'une même classe en javascript
    Par dragonno dans le forum Contribuez
    Réponses: 1
    Dernier message: 12/10/2018, 19h09
  2. changer la couleur de tous les contrôles
    Par Peanut dans le forum IHM
    Réponses: 10
    Dernier message: 11/12/2006, 13h26
  3. Définir la couleur de tous les backgrounds
    Par karatepla dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 04/06/2005, 14h54
  4. Est-ce que les fichiers .obj sont tous les mêmes?
    Par Bubonik software dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 30/12/2003, 21h04
  5. Les Langages ne sont pas tous les mêmes ......
    Par Max Payne dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 28/08/2003, 13h51

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