Syntaxhervorhebung

Hallo!

ich will/muss einen kleinen editor für einen eigenentwickelden pseudocode in vb schreiben, der dann diesen dann in eine regdatei parst. ich verwende dafür eine rtf-text-box. ich wollte nun zum abschluss noch erreichen, dass schlüsselwörter beim schreiben farblich hervorgehoben werden. dies klappt soweit auch „ganz gut“ über den onchange event des steuerelementes. doch führt dieses leider zu einer lustigen flackerei auf dem bildschirm beim schreiben und der algo ist auch nicht gerade der schnellste. gibs da nicht noch irgendwas besseres?

thx kai

Hallo Kai,

also eine Loesung faellt mir da auch nicht auf Anhieb ein, zumal ich sie hier auf Unix gerade nicht ausprobieren koennte :wink: Aber versuch doch mal, das KeyDown- oder KeyPressd- Ereignis auszuwerten, so dass er beispielsweise immer nur dann die Formatierung aendert, wenn ein Leerzeichen gedrueckt wird.

Achso, Mist, da faellt mir ein, dass der gedrueckte Buchstabe nicht mehr in der Textbox „ankommt“, wenn man den Tastendruck abfragt. Oder taeusche ich mich da?

Ansonsten waere eine Billig-Variante natuerlich ein manueller Update-Knopf oder auch ein zeitgesteuertes Update alle x Sekunden oderso.

Vielleicht bringt Dich das auf irgendeine gute Idee :wink:

Gruss,
Kristian

erstmal danke für deine antwort

Hallo Kai,

also eine Loesung faellt mir da auch nicht auf Anhieb ein,
zumal ich sie hier auf Unix gerade nicht ausprobieren koennte
:wink: Aber versuch doch mal, das KeyDown- oder KeyPressd-
Ereignis auszuwerten, so dass er beispielsweise immer nur dann
die Formatierung aendert, wenn ein Leerzeichen gedrueckt wird.

Achso, Mist, da faellt mir ein, dass der gedrueckte Buchstabe
nicht mehr in der Textbox „ankommt“, wenn man den Tastendruck
abfragt. Oder taeusche ich mich da?

die „taste“ dürfte trotzdem noch in der textbox ankommen. aber egal ob onchange, onkeypress oder so ddie blöde flackerei bleibt

Ansonsten waere eine Billig-Variante natuerlich ein manueller
Update-Knopf oder auch ein zeitgesteuertes Update alle x
Sekunden oderso.

ist aber halt eben nur billig

Vielleicht bringt Dich das auf irgendeine gute Idee :wink:

Gruss,
Kristian

Die Flackerei stellst Du mit dem API LockWindowUpdate aus.

Public Declare Function LockWindowUpdate Lib „user32“ Alias „LockWindowUpdate“ (ByVal hwndLock As Long) As Long

Als Parameter zum aktivieren hwnd uebergeben, zum deaktivieren 0 uebergeben.
Grüsse

Stephan

Hi Kai!

Anstatt jedes mal nach drücken einer beliebigen taste die syntax zu highlighten, triggere nur das drücken der taste vbBlank! grund: unterm schreiben eines wortes brauchst du ja keine hervorhebung, erst wenn ein wort fertig geschrieben ist!!

viel spaß, stefan