Richedit et couleur

Signaler
Messages postés
205
Date d'inscription
samedi 10 mai 2003
Statut
Membre
Dernière intervention
2 juin 2005
-
Messages postés
205
Date d'inscription
samedi 10 mai 2003
Statut
Membre
Dernière intervention
2 juin 2005
-
Bonjour,

J'arrive à mettre une couleur differente sur chaque ligne d'un richedit

s1 et s2 sont des strings
RichEdit1.SelAttributes.Color := clNavy;
Richedit1.Lines.Add(s1);
RichEdit1.SelAttributes.Color := clteal;
Richedit1.Lines.Add(s2);


mais comment fait_on pour avoir deux couleurs differentes sur la meme ligne.

Je suppose qu'il faut mettre autre chose pour le deuxieme add mais la j'ai un pb de vocabulaire.

ou encore

Il faut ecrit la ligne et ensuite mettre les couleurs. Mais on fait ca comment ?

Merci

Yoghi.

3 réponses

Messages postés
205
Date d'inscription
samedi 10 mai 2003
Statut
Membre
Dernière intervention
2 juin 2005
1
Youah, c'est vieux...

Heu, de mémoire, il faut sélectionner le texte (comme dans Word, quand tu selectionnes un texte avant de le copier) et lui attribuer un couleur

RichEdit.SelStart : pour définir le début de la selection
RichEdit.SelLength : pour définir la longueur de la selection
RichEdit.SelAttributes.Color : tu attribues une couleur à la selection
Messages postés
205
Date d'inscription
samedi 10 mai 2003
Statut
Membre
Dernière intervention
2 juin 2005
1
Je me reponds pour en faire profiter les autres, peut etre que ca pourra interesser quelqu'un un jour...

Le plus simple, c'est :
richedit1.SelAttributes.Color:=clNavy;
richedit1.SelText:=ExtractFileName(listbox1.Items[i])+' : ';
richedit1.SelAttributes.Color:=clTeal;
richedit1.SelText:=options.ListBox2.Items[version1];
richedit1.Lines.Add('');


Un truc que j'avais fait avant le truc de dessus :
procedure TForm1.ColorRichLine(RichEdit: TRichEdit; Index, debut, longueur: Integer; couleur: TColor);
var
  p: Pchar;
  s: TStrings;
  i,a,b: integer;
begin
  p := PChar(RichEdit.Lines.Text);
  b := 0;
  if Index < RichEdit.Lines.Count then begin
    i := Index;
    While (i > 0) and (not (p = nil)) do begin
      a := pos(#13 + #10, p) + 1;
      b := b + a;
      p := p + a;
      dec(i);
    end;
    RichEdit.SelStart := b + debut;
    RichEdit.SelLength := longueur;
    RichEdit.SelAttributes.Color := couleur;
  end;
End;


Yoghi
Messages postés
10
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
16 janvier 2006

merci pour le 1er post ;-) le second manque d'explications ;-)