Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TRichEdit - automatische Worterkennung und -formatierung (https://www.delphipraxis.net/181016-trichedit-automatische-worterkennung-und-formatierung.html)

MCSuperior 8. Jul 2014 15:18

TRichEdit - automatische Worterkennung und -formatierung
 
Hallo Community,

Ich versuche ein Programm zu schreiben, den Text einer TRichEdit bei Eingabe automatisch erkennt und bestimmte Begriffe automatisch formatiert. Im Prinzip also das, was der Delphi-Quelltexteditor auch macht, wenn man z.B. "//" oder "begin" oder "{$ }" eingibt.

Mir ist nur nicht die eleganteste Methode dafür bekannt. Versucht habe ich es bereits mit einer Methode, die den ganzen Text der Richedit durchläuft, nach den Begriffen sucht und dann den entsprechenden Begriff markiert und formatiert. (SelStart, SelAttributes.* etc wurde dafür verwendet). Hat dann an sich auch funktioniert, allerdings mit ein paar Hässlichkeiten:

- Die Cursorposition spielt verrückt sobald man Teile des Texts verändert, die sich nicht am Ende des Texts befinden
- Extrem...langsam

Aber es muss doch dafür eine recht simple Möglichkeit geben; schließlich hat so ziemlich jede IDE diese Funktion und ich denke mal nicht, dass man dafür tausende Zeilen Code geschrieben hat. Recherchen im Internet waren nicht ertragreich, daher wollte ich hier mal fragen wie das am besten zu lösen ist.

Jasocul 8. Jul 2014 15:27

AW: TRichEdit - automatische Worterkennung und -formatierung
 
Muss es ein TRichEdit sein?
Falls nicht, schau dir mal TSynEdit an. Ist meines Wissens OpenSource. Frag einfach mal Tante Google.

DeddyH 8. Jul 2014 15:40

AW: TRichEdit - automatische Worterkennung und -formatierung
 
Stimmt, gibt es auf Sourceforge.

Dejan Vu 8. Jul 2014 15:57

AW: TRichEdit - automatische Worterkennung und -formatierung
 
Zitat:

Zitat von MCSuperior (Beitrag 1264853)
Aber es muss doch dafür eine recht simple Möglichkeit geben; schließlich hat so ziemlich jede IDE diese Funktion und ich denke mal nicht, dass man dafür tausende Zeilen Code geschrieben hat.

Na ja. Du musst unterscheiden zwischen dem Schlüsselwort 'procedure', oder ob -wie hier- das Wort Teil eines strings ist. Dann kann es noch in einem Kommentar vorkommen, und davon gibt es auch drei Sorten (mit '//', '(*' und '{')

Verwendest Du dafür zum Beispiel RegEx und zählst die Zeilen der RegEx-Komponente mit, sind das schon 1000 (geschätzt).

Dann willst Du das nicht so grottenlahm haben, wie bei einem Richedit. Ergo musst Du dir eine eigene Memobox bauen, die den Text auch farblich rendert. Junge junge, alles in allem sind das dann doch einige 1000 Zeilen, denke ich.


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