Вниз
Скачать: CL | DM;

Как остановить ?   Найти похожие ветки 

 
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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.01 c
3-69749
Mike S
2002-04-02 15:14
2002.04.22
Редактирование в DBGrid


14-69992
Стас
2002-03-12 09:03
2002.04.22
Обучение


1-69838
DeMoN-777
2002-04-11 04:14
2002.04.22
ListBox


1-69917
cok
2002-03-30 14:55
2002.04.22
Pascal срочно, плзззз...


14-70026
Esa
2002-03-18 13:40
2002.04.22
AccessViolation




   Наверх