Das ist dann alles keine Vorgehensweise wie es unter Windows üblich und sinnvoll ist, wenn man auf etwas wartet oder so.
Klar ist jedenfalls: Das OnClick wird komplett durchlaufen, denn sonst würde der Code nach dessen Aufruf ja nicht ausgeführt werden. Deshalb ist eben wie bereits
elundril sagte die Frage wodurch dieser Code dann offenbar teilweise asynchron weiterläuft, wenn du ja sagst, dass der dennoch nicht fertig ist.
Wenn eine längere Operation läuft, dann wird man normalerweise durch ein Ereignis von deren Ende benachrichtigt. Bzw. bei einer eigenen Aktion löst man selbst ein solches Event aus.
Und die Konstruktion ist so schon seltsam. Normalerweise sieht sowas so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TfrmMain.DoSomething(Param: TParam); begin
end;
procedure TfrmMain.LabelXClick(Sender: TObject); begin DoSomething(MyParam); end;
procedure TfrmMain.TimerXTimer(Sender: TObject); begin DoSomething(MyParam); end; |
Denn gemeinsam genutzter Code gehört nicht in irgendein Event einer visuellen Komponente. So ist das übersichtlich und man kann die ausgelagerte Methode entsprechend benennen.
