![]() |
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 |
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. |
AW: Synedit Text farbig darstellen
Zitat:
![]() |
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. |
AW: Synedit Text farbig darstellen
Ja in der richtung bin ich auch gerade am schauen OnGetSpecialLineColors scheint hier eine Möglichkeit zu sein
|
AW: Synedit Text farbig darstellen
Zitat:
|
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 15:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz