Форум: "Основная";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
ВнизКак остановить ? Найти похожие ветки
← →
Lego (2002-04-11 02:50) [0]Сразу приведу пример чтоб понятней было...
unit Unit1;
interface
uses
Windows, SysUtils, Classes, Forms, Controls, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
b:boolean;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=0 to 100000 do
if not b then
label1.Caption := IntToStr(i) else exit;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if not b then b:=true else
b:=false;
end;
end.
при нажатии на Button1 запускается счетчик, при нажатии на Button2 он в теории должен остановится... но этого непроисходит... подскажите как можно прервать программу в такум случае?
← →
Ra (2002-04-11 03:25) [1]вставить в цикл вызов Application.ProcessMessage
← →
judge_ (2002-04-11 05:58) [2]А ты чего хотел - у тебя же всё в одном потоке
программа по нажатию button1 входит в Button1Click и там крутиться в цикле - она не обрабатывает никакие события пока не выдет из процедуры и не вернётся к "главному циклу программы" где события и отлавливаются
можешь в момент выполнения цикла поместить поверх своего окна другое, а потом убрать - твоё окно не будет отрисовываться пока не закончиться цикл в Button1Click
Изучай потоки (TSread)
← →
Walker (2002-04-11 06:48) [3]какие потоки???
просто в цикле надо поставить Application.ProcessMessages (чтоб обработалось сообщение о клике мышкой по кнопке)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.009 c