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

Composants VCL Delphi Discussion :

[TRichEdit] Colorier 1 ligne


Sujet :

Composants VCL Delphi

  1. #1
    Membre expérimenté
    Avatar de mohamed
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 217
    Par défaut [TRichEdit] Colorier 1 ligne
    Bonjour,

    Je voudrais surligner ou mettre 1 couleur sur 1 ligne particuliere d'1

    TRichEdit.

    Comment faire?

    D'avance merci.

    PS: S'il y'a 1 autre composant qui le fait mieux, il est le bienvenu!!

  2. #2
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Dans une fiche, j'ai mis deux boutons, un TRichedit et quelques ligne de code (pas de moi) que j'ai trouvé ici :
    http://www.phidels.com/php/index.php...0a26289b14e51d

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls,richedit;
     
    type
      TForm1 = class(TForm)
        RichEdit1: TRichEdit;
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
    procedure SupprSurligne(const RE: TRichEdit);
    var
      Format : CHARFORMAT2;
    begin
      FillChar(Format, SizeOf(CHARFORMAT2), 0);
      Format.cbSize := SizeOf(CHARFORMAT2);
     
      SendMessage(RE.Handle, EM_GETCHARFORMAT, WPARAM(True), LPARAM(@Format));
     
      Format.dwMask := CFM_BACKCOLOR;
      Format.dwEffects := CFE_AUTOBACKCOLOR;
     
      SendMessage(RE.Handle, EM_SETCHARFORMAT, SCF_SELECTION, LPARAM(@Format))
    end;
     
    procedure Surligne(const RE: TRichEdit; const Color: TColor);
    var
      Format : CHARFORMAT2;
    begin
      FillChar(Format, SizeOf(CHARFORMAT2), 0);
      Format.cbSize := SizeOf(CHARFORMAT2);
     
      SendMessage(RE.Handle, EM_GETCHARFORMAT, WPARAM(True), LPARAM(@Format));
     
      Format.dwMask := CFM_BACKCOLOR;
      Format.crBackColor := ColorToRGB(Color);
      Format.dwEffects := 0; // CFE_AUTOBACKCOLOR
     
      SendMessage(RE.Handle, EM_SETCHARFORMAT, SCF_SELECTION, LPARAM(@Format))
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Surligne(RichEdit1, clRed);
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      SupprSurligne(RichEdit1);
    end;
     
    end.
    Bref, ça marche nickel-chrome

  3. #3
    Membre expérimenté
    Avatar de mohamed
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 217
    Par défaut
    Oui J'ai vu le meme code mais ca ne marche pas !!!!

    En plus je ne vois pas là ou on lui indique le numéro de ligne.

  4. #4
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Citation Envoyé par mohamed
    Oui J'ai vu le meme code mais ca ne marche pas !!!!

    En plus je ne vois pas là ou on lui indique le numéro de ligne.
    Mais si ça marche, j'ai essayé !!!

    Essaies l'exemple, avec un texte dans ton RichEdit. Sélectionne du texte à la souris, puis cliques sue le Button1...
    Là tu verras que ça marche, d'accord ?

    Bien, en fait, comme tous les formattage de texte, celà ne fonctionne qu'après avoir sélectionné un bout de texte.

    En programmation la selection se fait avec les propriétés SelStart et SelLength qui permettent de sélectionner du texte en indiquant l'index du premier caractère et du dernier caractère de la sélection.

    Reste à trouver l'index du premier caractère d'une ligne et l'index du dernier caractère...

    A partir de là, dans la FAQ, tu trouves ça :
    Comment se positionner sur une ligne/Colonne d'un TMEMO/TRichEdit ?

    Donc en adaptant un peu le code, tu rajoute ça dans le code que je t'ai déjà donné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure SurligneUneLigne(const RE: TRichEdit; const Color: TColor;NumeroDeLigne:integer);
    begin
      RE.SelStart:=RE.Perform(EM_LINEINDEX, NumeroDeLigne, 0);
      RE.SelLength:=RE.Perform(EM_LINELENGTH, RE.SelStart, 0);
      Surligne(RE,Color);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      SurligneUneLigne(RichEdit1, clMoneyGreen,2);
    end;
    Sinon, il ne faut pas oublier l'unité RichEdit dans les uses

Discussions similaires

  1. [VBA-E] Colorier une ligne dans une feuille excel
    Par skyst3f dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/10/2006, 11h42
  2. Colorier Cellule / ligne sélectionnée dans JTable
    Par Sebou77 dans le forum Composants
    Réponses: 7
    Dernier message: 06/09/2006, 12h04
  3. [JTable] colorier une ligne de manière simple
    Par _KB_ dans le forum Composants
    Réponses: 10
    Dernier message: 16/06/2006, 13h51
  4. [VB6] Colorier les lignes d'une listeview
    Par alliance dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 14/05/2006, 14h29
  5. Colorier une ligne d'un RichEdit
    Par didi59650 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 05/05/2006, 11h40

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