| jasocul hat folgendes geschrieben: |
| Wenn dein Code zu einem Stcküberlauf führt, solltest du den mal prüfen. Wo er ausgeführt dürfte doch relativ egal sein. Ob im FormActivate oder irgendeinem anderen Ereignis. |
Danke für die Antworten!
Im Prinzip stellt der Code einen HighLighter für das SynEdit des aktiven MDI-Formulars ein, abhängig von der Dateinamenerweiterung der geladenen Datei. Das MDI wird also aktiv, und wenn man nun zB. (nur zum Testen) mit der Maus klickt, kann der Code in SynEdit1Click problemlos ausgeführt werden. In FormActivate gibt's den besagten Fehler, FormPaint ist nicht ideal, da es nicht immer aufgerufen wird, Prozedur SynEdit1Enter wird nur 1x aufgerufen - also geht das auch nicht.
Es mag daran liegen, das die HighLighter im Main-Formular liegen.
Ich habe das nun so gelöst:
In FormActivate wird
Delphi-Quelltext
1: 2: 3:
| IsActiv := True; SynEdit1GutterClick(Sender,-1,-1,-1,nil); SynEdit1GutterClick(Sender,-1,-1,-1,nil); |
ausgeführt, die Lesemarke wird dadurch nicht gesetzt (ist auch erwünscht so), aber es wird die Prozedur SynEdit1GutterPaint ausgeführt, und dort steht der Code, der ausgeführt wird, wenn IsActive True, das wird dort sofort auf False gesetzt. Ich weiss, das ist ziemlich "um die Ecke" programmiert, aber es erfüllt fehlerfrei seinen Zweck!
Das erklärt zwar nicht, warum es zu einem Stack-Overflow kommt, aber - egal.
Danke nochmal!
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!