Registriert seit: 2. Mär 2004
5.508 Beiträge
Delphi 5 Professional
|
AW: VCL Elemente in geblocktem Ereignishandler disablen
21. Aug 2012, 10:56
SO sollte das aussehen:
Delphi-Quellcode:
procedure TForm2.EnableButtons(en:Boolean);
begin
button1.Enabled := en;
button2.Enabled := en;
button3.Enabled := en;
button4.Enabled := en;
end;
procedure TForm2.MachDieArbeit;
var
i : Integer;
begin
for i:= 1 to ANZAHL_HAARE_IM_WASCHBECKEN do
begin
// der "Trick" ist, immer mal wieder Application.ProcessMessages aufzurufen
// um die GUI upzudaten und auf Messages zu reagieren
// Macht man dies aber zu oft, dann verlängert sich die Gesamtzeit
// mit der Modulo-Abfrage kann man die Anzahl der Aufrufe entsprechend reduzieren
// es kommt halt immer auf den konkreten Fall an
if (i mod 10) = 0 then
Application.ProcessMessages;
Sleep(20); // Platzhalter für blockierenden Code
end;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
EnableButtons(False);
try
MachDieArbeit;
finally
EnableButtons(True);
end;
end;
Andreas
Geändert von shmia (21. Aug 2012 um 11:06 Uhr)
|