AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Farbe in Zeilen eines RichEdits

Ein Thema von Matze · begonnen am 11. Sep 2004 · letzter Beitrag vom 11. Sep 2004
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Farbe in Zeilen eines RichEdits

  Alt 11. Sep 2004, 10:19
Hi!

Ich möchte z.B. die ersten 3 zeichen eines RichEdits farbig haben. Mit SelStart und SelLength komme ich nicht weiter, dann habe ich es so versucht:

Delphi-Quellcode:
  RichEdit1.SelAttributes.Color := clRed;
  RichEdit1.Text := '123';
  RichEdit1.SelAttributes.Color := clBlack;
  RichEdit1.Text := RichEdit1.Text + ' was schwarzes'; }
  RichEdit1.Lines.Add('');
Das geht aber auch nicht, wie mache ich denn sowas?
In der DP gibt es nur Threads, die mich nicht weiterbringen...
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Farbe in Zeilen eines RichEdits

  Alt 11. Sep 2004, 10:28
Hi,

Das geht so:

Delphi-Quellcode:
  RichEdit1.Text := '123';
  RichEdit1.SelStart := 0;
  RichEdit1.SelLength := 2;
  RichEdit1.SelAttributes.Color := clRed;

  RichEdit1.Text := RichEdit1.Text + ' was schwarzes';
  RichEdit1.SelStart := 4;
  RichEdit1.SelLength := Length(RichEdit1.Text);
  RichEdit1.SelAttributes.Color := clBlack;

  RichEdit1.Lines.Add('');
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Farbe in Zeilen eines RichEdits

  Alt 11. Sep 2004, 11:41
Ach so muss ich das machen, da hätt ich echt selbst drauf kommen können.

Herzlichen Dank toms.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Farbe in Zeilen eines RichEdits

  Alt 11. Sep 2004, 11:56
ABer das:

Delphi-Quellcode:
  RichEdit1.Text := RichEdit1.Text + '123';
  RichEdit1.SelStart := 0;
  RichEdit1.SelLength := 2;
  RichEdit1.SelAttributes.Color := clRed;

  RichEdit1.Text := RichEdit1.Text + ' was schwarzes';
  RichEdit1.SelStart := 4;
  RichEdit1.SelLength := Length(RichEdit1.Text);
  RichEdit1.SelAttributes.Color := clBlack;

  RichEdit1.Lines.Add('');
funktioniert nicht ganz, da hinterher der ganze Text nur schwarz dargestellt wird.
Dann müsste ich ja immer die Länger der letzten Zeile auslesen, was dann schon komplizierter bei einem Zeilenumbruch ist, nehme ich an.

Gibt es da nicht's, wo ich nur die einzelnen Zeilen ansprechen kann?
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Farbe in Zeilen eines RichEdits

  Alt 11. Sep 2004, 17:29
Wenn du so RichEdit1.Text lädst, dann lädst du ja jedesmal den gesamten Text von RichEdit immer wieder neu ...also werden Format-Informationen, die da mit dem alten Text assoziiert waren, auch jedesmal wieder mit überschrieben, also gelöscht. Und das RichEdit1.Text auf der rechten Seite der Zuweisung ist dann natürlich auch wieder nur ein normaler String ohne Format-Infos.


Wenn du nur eine einzelne Zeile ansprechen willst, könnte das ungefähr so aussehen:

Delphi-Quellcode:
procedure markLineNo(LineIndex : integer; clColor : TColor; MarkLen : integer = 0);
begin
  with form1.RichEdit1 do begin
    SelStart := Perform(EM_LINEINDEX,LineIndex,0);
    if MarkLen = 0 then SelLength := Perform(EM_LINELENGTH,SelStart,0)
                   else SelLength := MarkLen;
    SelAttributes.Color := clColor;
  end;
end;
Bei fehlendem MarkLen-Wert in der übergebenden Parameterliste würde dann die gesamte Zeile markiert.
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Farbe in Zeilen eines RichEdits

  Alt 11. Sep 2004, 18:07
Vielen Dank, funktioniert bestens
Hab's so umgebaut:

Delphi-Quellcode:
procedure MarkLineNo(LineIndex : integer; clColor : TColor; Start, Length: integer);
begin
  with form1.RichEdit1 do begin
    SelStart := Perform(EM_LINEINDEX, LineIndex, 0) + Start;
    SelLength := Length;
    SelAttributes.Color := clColor;
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz