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 Keyword Highlight (https://www.delphipraxis.net/159846-synedit-keyword-highlight.html)

Codehunter 15. Apr 2011 09:15

SynEdit Keyword Highlight
 
Hallo!

Da es hier mal etliche Leute gab die sich mit SynEdit auskannten frag ich einfach mal. Ich suche eine Möglichkeit, ein bestimmtes Keyword mit einer anderen Hintergrundfarbe hervorzuheben. Dabei soll aber nicht der aktuelle Syntax Highlighter geändert werden. Ich möchte nur die Suchfunktion nachbilden wie sie z.B. der aktuelle Opera-Browser verwendet (und auch euer Foren-Script hier so ähnlich ^^):

1. Man gibt ein Keyword in die Suche ein
2. Der erste Treffer wird in clHighlight und clHighlightText dargestellt
3. Alle weiteren Treffer werden in clYellow und clWindowText dargestellt

Von der Sache her habe ich versucht, die Routine hinter GetMatchingBrackets zu adaptieren aber das war a) reichlich schwierig und b) am Ende hochgradig inperformant weil der Algorithmus für einzelne Zeichen gedacht ist. Gibts vielleicht eine elegante Lösung die ich in Betriebsblindheit übersehen habe?

Grüße
Cody

uligerhardt 15. Apr 2011 09:36

AW: SynEdit Keyword Highlight
 
Vielleicht OnPaintTransient? Ich hab noch nie damit gearbeitet und bin mir ehrlich gesagt auch nicht sicher, wofür das genau gut ist, aber es geht wohl irgendwie in die Richtung. Kannst ja mal nach ...\SynEdit\Demos\OnPaintTransientDemo schauen.

Codehunter 15. Apr 2011 10:00

AW: SynEdit Keyword Highlight
 
Das mit dem OnPaintTransient ist schon klar, GetMatchingBrackets ist ja auch dort imlementiert.

Hawkeye219 15. Apr 2011 10:10

AW: SynEdit Keyword Highlight
 
Hallo Codehunter,

dieser Thread könnte helfen: klick

Gruß Hawkeye

Codehunter 15. Apr 2011 12:53

AW: SynEdit Keyword Highlight
 
Zitat:

Zitat von Hawkeye219 (Beitrag 1095345)
dieser Thread könnte helfen: klick

Hallo Adlerauge,

könnte man so sagen dass der geholfen hat ;-) Prinzipiell war ich schon auf dem selben Weg, die Lösung dort ist aber kürzer und eleganter. Hat aber auch noch ein paar Bugs zum Schluss gehabt (Regex-Patterns führten zu falschen Markierungen, Markierung am aktuellen Cursor auch gelb statt blau). Ließ sich aber einfach beheben und funkt nun prima.

Danke!


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