Einzelnen Beitrag anzeigen

Benutzerbild von derpepe
derpepe

Registriert seit: 16. Mär 2005
Ort: Dotternhausen
164 Beiträge
 
Delphi 2005 Personal
 
#1

SynEdit: Textfarbe an bestimmter Stelle herausfinden

  Alt 16. Mär 2005, 23:33
Hallo,

nun bin ich schon seit gestern fast ununterbrochen auf der Suche und hoffe hier endlich die Lösung zu finden

Ich verwenden in meinem Projekt die TSynEdit-Komponente von http://synedit.sf.net. Ich brauche diese Komponente wegen dem Syntax-Highlighting und kann nicht auf TRichEdit o.ä. ausweichen.

Wie kann ich jetzt nun die Farbe an einer bestimmten Stelle (sagen wir Zeile 5, Zeichen 10) feststellen?
Die Farbe bekommt das SynEdit-Control von dem verknüpften SynHighlighter. Diesen habe ich meinen Wünschen entsprechend angepasst.

Hätte ich ein TRichEdit wäre das einfach, ich könnte per SelAttributes.Color einfach den Wert abfragen.
Auf diesem Gedanken aufbauend habe ich folgenden Code entwickelt (bitte nicht hauen, ist echt grausam):

Delphi-Quellcode:
RichEdit1.Clear;
With SynExporterRTF1 Do Begin
  ExportAll (SynEdit1.Lines);
  CopyToClipboard;
End;
With RichEdit1 Do Begin
  PasteFromClipboard;
  CaretPos := Point(10,5);
  SelLength := 1;
End;
ShowMessage (IntToStr(Richedit1.SelAttributes.Color));
Ich habe es nicht mal geschafft den Text direkt vom SynEdit zum RichEdit zu übernehmen (farbig!), dazu habe ich dann die SynExporterRTF-Komponente verwendet.
Nur nochmal zur Verdeutlichung: obiger Code funktioniert! Er hat jedoch einige Haken:
- unschön (!!)
- langsam (ist in Wirklichkeit sogar recht schnell, dennoch wohl nicht das effektivste)
- die Zwischenablage wird benutzt (eine Lösung hierzu wäre höchstens für andere Projekte hübsch, für meinen Fall ist es jedoch nicht akzeptabel, auch wenn ich den Umweg über die Zwischenablage nicht mehr bräuchte)
- ich brauche die SynExporterRTF-Komponente (darauf müßte man verzichten können)

Man müßte die Farbe über den SynHighlighter abfragen können, leider habe ich nichts passendes gefunden, auch ein Studium der Quelltexte und mehrere intensive Suchversuche (btw: tolles Wort *g*) mit Google führten nicht zum Erfolg.

Ihr seht also, ich habe mir bereits viel Mühe gegeben und hoffe hier ein offenes Ohr zu finden und jemanden der sich mit dem SynEdit besser auskennt als ich oder eine Idee für eine alternative Lösung hat

Vielen Dank schonmal im Voraus und entschuldigt das überlange Post.
Liebe Grüße

Peter
Peter J. Schneider
  Mit Zitat antworten Zitat