Hallo Uwe,
über diese Nebeneffekte von Application.ProcessMessages habe ich schon geflucht wie ein Hufschmied. Aber, sobald man dann mal konkret eine Frage nach einer Alternative stellt, gibt's meistens entweder keine Antwort, oder welche mit so viel "wenn und aber" drin, dass sich mir eine bessere Alternative bisher nicht erschlossen hat: Bei modalen Aufrufen und sonst wo es geht, Form.Enabled:=false, oder die Komponente(n) die eine Rekursion auslösen könnten disablen, während eine Aktion läuft.
In diesem Fall müsste man halt den SpeedButton disablen, um sicher zu gehen.
Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
SpeedButton1.Enabled := false;
try
Tu was
finally
SpeedButton1.Enabled := true;
Application.Processmessages;
end;
end;
Für alternative oder bessere Vorschläge hab ich immer ein offenes Ohr!