Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

AW: VCL Elemente in geblocktem Ereignishandler disablen

  Alt 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)
  Mit Zitat antworten Zitat