Zitat von
Matze:
Btw: Im OnKeyDown ist mein Code folgender:
myThread.Execute
Und wofür brauchst du dann einen Thread, wenn du den Code direkt im OnKeyDown aufrufst?
Wäre es nicht besser einen Timer zu nehmen und im OnTimer Ereignis die Verarbeitung durchzuführen. Im OnKeyDown wird dann nur der Timer resettet:
Delphi-Quellcode:
OnKeyDown:
begin
// Timer neustarten
TimerCalc.Enabled := False;
TimerCalc.Enabled := True;
end;
OnTimer: (Interval = 100)
begin
Timer.Enabled := False; // nicht mehrmals aufrufen wenn nichts passiert ist
CalculateQuickbarArray;
ParseQuickbar;
end;
Dadurch kann der Benutzer tippen und erst wenn er stoppt oder langsam tippt, wird berechnet. Den Timer solltest du in OnEnter starten und OnExit auf den OnTimer-Handler setzen, damit beim verlassen des Controls der Timer abgeschatet und auch neu berechnet wird.