Zitat von
DelphiManiac:
Wenn ich nun ein OnMouseClick Event irgendeiner Komponente definiert habe und dann ein bestimmten Quellcode bereich abarbeite, dann wird ja erst all das abgearbeitet, bis es die Nachrichtenschleife leer ist oder?
Erst dann geht es doch nach Application.ProcessMessages weiter oder?????
Richtig!
Deshalb sollte man alle Menues, Buttons und Actions sperren bis der Job fertig ist.
Am Besten fährt man, wenn man Aktions benützt; das hilft bei der Organisation.
Man braucht einen Try..Finally Schutzblock, damit nach einer
Exception das Programm nicht unbedienbar wird:
Delphi-Quellcode:
procedure TForm1.ActionDoWorkExecute(...);
begin
ActionDoWork.Enabled := False;
try
TueDieLangeUndSchwereArbeit;
finally
ActionDoWork.Enabled := True;
end;
end;