Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Synedit Text farbig darstellen (https://www.delphipraxis.net/207018-synedit-text-farbig-darstellen.html)

v2afrank 17. Feb 2021 11:59

Synedit Text farbig darstellen
 
Hallo, ich möchte zu Debugzwecken den Datenverkehr auf der seriellen Schnittstelle darstellen.
Im ersten schritt habe ich die Daten in einem Memo mit dem Zeichen ">" und "<" ausgegeben um die Richtung darzustellen. Hat alles auch prima funktioniert. Im zweiten Schritt habe ich ein Richtext element genommen und die Farbe über SelAttributes gesetzt. Funktionierte zuerst auch aber nach einiger Zeit habe ich eine Schutzverletzung in riched20.dll bekommen. Damit wollte ich mich nicht weiter beschäftigen sondern hab gedacht ich setze die Synedit Komponente ein die in dem Projekt auch schon vorhanden ist.

Ohne die farbige Ausgabe funktioniert es auch prima, aber jetzt möchte ich eben je nachdem ob ich die Daten empfangen oder gesendet habe unterschiedlich farbig darstellen. Ich möchte zum Beispiel die gesendeten Daten in blau und die empfangenen in rot haben
Das gelingt mir allerdings nicht. Gibt es da einen einfachen Trick ?

Falls es von Belang ist. Es ist ein altes Projekt und ich nutze dort Delphi 2006

TiGü 17. Feb 2021 12:32

AW: Synedit Text farbig darstellen
 
Ich kann dir jetzt nicht konkret helfen.
Du könntest aber überlegen anstatt einer TMemo-Variante eine TListView oder einen TVirtualStringTree zu nutzen.
Da ist das farbige Darstellen über die CustomDraw-Handler sehr simpel.

haentschman 17. Feb 2021 12:54

AW: Synedit Text farbig darstellen
 
Zitat:

Das gelingt mir allerdings nicht. Gibt es da einen einfachen Trick ?
Den Trick kann ich auch nicht verraten. Ich weis nur, daß die Highlighter, SQL etc., die Texte auch farbig markieren...also es geht mit SynEdit. :wink:
https://wiki.freepascal.org/SynEdit_Highlighter

dummzeuch 17. Feb 2021 13:10

AW: Synedit Text farbig darstellen
 
Wenn ich das richtig in Erinnerung habe, gibt es einen Event, der zu einer gegebenen Zeile Vor- und Hintergrundfarbe setzen kann.
Das ist die einfach Methode, wenn dir das ausreicht.

Soll es was komplexeres ala Syntax-Highligiting sein, wirds aufwändig.

v2afrank 17. Feb 2021 13:16

AW: Synedit Text farbig darstellen
 
Ja in der richtung bin ich auch gerade am schauen OnGetSpecialLineColors scheint hier eine Möglichkeit zu sein

dummzeuch 17. Feb 2021 14:04

AW: Synedit Text farbig darstellen
 
Zitat:

Zitat von v2afrank (Beitrag 1483192)
Ja in der richtung bin ich auch gerade am schauen OnGetSpecialLineColors scheint hier eine Möglichkeit zu sein

Ja, der wars.

Delphi.Narium 17. Feb 2021 14:35

AW: Synedit Text farbig darstellen
 
Dem Ereignis OnSpecialLineColors im Objektinspektor per Doppelklick eine Ereignisroutine verpassen und dann sowas in der Art:
Delphi-Quellcode:
procedure TForm1.SynEdit1SpecialLineColors(Sender: TObject; Line: Integer; var Special: Boolean; var FG, BG: TColor);
begin
  if (Copy(SynEdit1.Lines[Line - 1],1,1) = '<') then begin
    Special  := true;
    fg       := clGreen;
    bg       := clYellow;
  else
  if (Copy(SynEdit1.Lines[Line - 1],1,1) = '>') then begin
    Special  := true;
    fg       := clRed;
    bg       := clBlue;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf