AGB  ·  Datenschutz  ·  Impressum  







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

Synedit Text farbig darstellen

Ein Thema von v2afrank · begonnen am 17. Feb 2021 · letzter Beitrag vom 17. Feb 2021
Antwort Antwort
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
571 Beiträge
 
Delphi XE2 Professional
 
#1

Synedit Text farbig darstellen

  Alt 17. Feb 2021, 11:59
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
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Synedit Text farbig darstellen

  Alt 17. Feb 2021, 12:32
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.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#3

AW: Synedit Text farbig darstellen

  Alt 17. Feb 2021, 12:54
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.
https://wiki.freepascal.org/SynEdit_Highlighter

Geändert von haentschman (17. Feb 2021 um 13:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch
Online

Registriert seit: 11. Aug 2012
Ort: Essen
1.464 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Synedit Text farbig darstellen

  Alt 17. Feb 2021, 13:10
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.
Thomas Mueller
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
571 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Synedit Text farbig darstellen

  Alt 17. Feb 2021, 13:16
Ja in der richtung bin ich auch gerade am schauen OnGetSpecialLineColors scheint hier eine Möglichkeit zu sein
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch
Online

Registriert seit: 11. Aug 2012
Ort: Essen
1.464 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Synedit Text farbig darstellen

  Alt 17. Feb 2021, 14:04
Ja in der richtung bin ich auch gerade am schauen OnGetSpecialLineColors scheint hier eine Möglichkeit zu sein
Ja, der wars.
Thomas Mueller
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#7

AW: Synedit Text farbig darstellen

  Alt 17. Feb 2021, 14:35
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;
  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 12:54 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