Нужно сделать так:
procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption:='Started';Application.ProcessMessages();sleep(1000);Label1.Caption:='Finished';end; |
Попробуйте убрать Application.ProcessMessages() и 'Started' вы никогда не увидите, это связано с тем, что Windows ждет пока накопятся задачи в очереди а не выполняет их сразу, Application.ProcessMessages() заставляет выполнить все задачи которые накопились в данный момент. Подробнее читайте в Help.
Это также можно применить в таком примере:
procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin for i:=1 to 100000 do Application.ProcessMessages();end; |
если не будет ProcessMessages() то пока крутится цикл мы не сможем сдвинуть или свернуть форму.
Прислал . [000485]