Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [Gelöst] Einzelne Zeile farbig im JvRichEdit (https://www.delphipraxis.net/49693-%5Bgeloest%5D-einzelne-zeile-farbig-im-jvrichedit.html)

Neuni 14. Jul 2005 17:15


[Gelöst] Einzelne Zeile farbig im JvRichEdit
 
Hi,
wieder mal eine Frage zu meiner Lieblings-Komponente dem JvRichEdit :mrgreen:

In der Demo kann man einen ausgewählten Teil farbig machen, allerdings raff ich nicht ganz wie.
Bei mir würds schon reichen, wenn einfach eine bestimmte Zeile dann eingefärbt wird.

Also sowas wie
Delphi-Quellcode:
JvRichEdit1.lines[5].color := clred;
oder so.

Kann mir jemand erklären wie das geht?

eddy 14. Jul 2005 17:41

Re: Einzelne Zeile farbig im JvRichEdit
 
Hallo Neuni,

der Bereich, der verändert werden soll, muß zuvor markiert werden. Dann funktioniert (getestet mit TRichEdit):


Delphi-Quellcode:
  rtf.SelAttributes.Color := clRed;
mfg
eddy

Neuni 14. Jul 2005 18:53

Re: Einzelne Zeile farbig im JvRichEdit
 
Danke, das geht ja schonmal wunderbar, aber wie kann ich eine Zeile markieren?
Hab schonmal sowas probiert:
Delphi-Quellcode:
  Line := SendMessage(RichEdit.Handle, EM_LINEFROMCHAR, RichEdit.SelStart, 0);
  RichEdit.SelStart := RichEdit.Perform(EM_LINEINDEX, Line, 0);
  RichEdit.SelLength := Length(RichEdit.Lines[Line]);
Aber das geht nur dann wenn man das im onclick oder so des JvRichEdits benutzt. Bei mir muss das ganze beim klicken eines Buttons passieren.

eddy 14. Jul 2005 20:51

Re: Einzelne Zeile farbig im JvRichEdit
 
Hallo Neuni,

ich habe es mal ausprobiert:

Delphi-Quellcode:
procedure TFAuf.SpeedButton4Click(Sender: TObject);
const
  crlf = chr($0D) + chr($0A); // #13#10
begin
  s := rtfpp.Text;
  i := Pos(crlf, s);
  if i > 0 then begin
    rtfpp.SelStart := i +1;           // <-- hier hatte ich +2 erwartet    
    s := copy(s, i +1, length(s));
    i := Pos(crlf, s);
    if i = 0
      then rtfpp.SelLength := length(s)
      else rtfpp.SelLength := i;
    rtfpp.SelAttributes.Color := clBlue;
  end;
end;
Mit dem obigen Code wird die 2. Zeile auf Farbe Blau gesetzt und komplett fett geschrieben.
Damit wäre Dein Problem wohl gelöst, Du mußt Dir nur überlegen, wie Du die Stelle findest, die Du vom Programm aus ändern willst. Soll eine ganze Zeile markiert (= geändert) werden, dann mußt Du das ganze bloß noch in eine entsprechende Schleife verpacken.

mfg
eddy

Neuni 14. Jul 2005 23:01

Re: Einzelne Zeile farbig im JvRichEdit
 
Habs schon hinbekommen. Hier meine Lösung:
Delphi-Quellcode:
i := chat.Lines.Count-1;
chat.SelStart := chat.Perform(EM_LINEINDEX, i, 0);
chat.SelLength := Length(chat.Lines[i]);
chat.SelAttributes.Color := edit1.Font.Color;
chat ist ein JvRichEdit.
i ist als integer festgelegt.

Es wird also immer die letzte Zeile gefärbt, denn die Nachricht die man einträgt ist ja immer die letzte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 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