Autor Beitrag
bEaST
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 20.09.04 13:05 
Hallo miteinander,

ich bin gerade dabei einen kleinen Texteditor mit Syntaxhervorhebung zu programmieren.
Ich verwende als "Editor" eine TRichEdit Komponente, nun habe ich folgendes Problem...
In meinem OnChance() Ereignis überprüfe ich jedes eingegebene Wort auf ein typisches Schlüsselwort, fals es eines davon ist, markiere ich es mit SelStart(x) und SelLength(x).
Nun weise ich mit der SelAttributes Prozedur dem markierten Text eine andere Farbe zu (ist ja ein Schlüsselwort). Das eigentliche Problem dabei ist nur, dass beim schreiben im RichEdit Control wahrscheinlich immer durch SelAttribute und SelStart etc. die Refresh Methode aufgerufen wird. Die Folge darauf ist, dass die RichEdit Komponente ständig "flackert" (mit einem harmlosen Bildzusammenbruch zu vergleichen). Ich habe nun schon versucht mit SendMessage und der entsprechenden Nachricht die Refresh Methode zu unterdrücken, aber ohne Erfolg...

Könnte mir vielleicht jemand einen Tipp geben wie ich einen ähnlichen Editor wie in der Delphi IDE (oder wegen mir auch wie in UltraEdit) bekomme, der Syntaxhervorhebung unterstützt, aber ohne dieses lästige flackern.

Danke!
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Mo 20.09.04 13:08 
Hi und :welcome: im Delphi-Forum,
setze mal RichEdit1.DoubleBuffered auf True. Außerdem würde ich empfehlen, die Überprüfung auf Schlüsselworte nicht in OnChange sondern in OnKeyPress zu machen. Dann musst du den Vergleich nur bei Leerzeichen starten.

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
bEaST Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 20.09.04 13:15 
maxk hat folgendes geschrieben:
Hi und :welcome: im Delphi-Forum,
setze mal RichEdit1.DoubleBuffered auf True. Außerdem würde ich empfehlen, die Überprüfung auf Schlüsselworte nicht in OnChange sondern in OnKeyPress zu machen. Dann musst du den Vergleich nur bei Leerzeichen starten.


Wow, schnelle Hilfe ist hier wohl üblich :D. Danke, werde ich mal probieren, obwohl ich sowas glaube ich bei meiner Delphi-Version noch nicht gesehen habe (Delphi 3 Pro).

Bis dann...
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Mo 20.09.04 13:23 
bEaST hat folgendes geschrieben:
Wow, schnelle Hilfe ist hier wohl üblich :D.
Ähm, ja die Frage nach DoubleBuffered kommt relativ oft (Suche in: Delphi-Forum, Delphi-Library DOUBLEBUFFERED), da weiss man schon, die Antwort, bevor die Frage gestellt wurde ;)
bEaST hat folgendes geschrieben:
Danke, werde ich mal probieren, obwohl ich sowas glaube ich bei meiner Delphi-Version noch nicht gesehen habe (Delphi 3 Pro).
Kann ich mir eigentlich nicht verstellen :?

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
.Chef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1112



BeitragVerfasst: Mo 20.09.04 13:26 
Luckie, wenn du das liest: Deshalb 2. in der Sig. ;-)

SCNR,
Jörg

_________________
Die Antworten auf die 5 häufigsten Fragen:
1. Copy(), Pos(), Length() --- 2. DoubleBuffered:=True; --- 3. Application.ProcessMessages bzw. TThread --- 4. ShellExecute() --- 5. Keine Vergleiche von Real-Typen mit "="!
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Mo 20.09.04 13:42 
Hihi, daran habe ich auch denken müssen. Dummerweise wusste ich nichtmehr den Username, der zu der Signatur passt ;)

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
bEaST Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 20.09.04 14:35 
Tja, wie ich dachte... In Delphi 3 gibt es so was "neumodisches" nocht nicht! Ich habe
zum Test mal meine Delphi 7 Demo ausgegraben und siehe da...

Naja, hätte vielleicht jemand nen Vorschlag wie man so was auch mit API´s lösen könnte (schau mir jetzt mal die restlichen Suchergebnisse an)?