Вниз
Скачать: 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.017 c
6-69937
Ivanroot
2002-02-04 06:39
2002.04.22
подсчет трафика


3-69754
VLL
2002-04-02 17:05
2002.04.22
Можно ли сделать setup


14-69996
Oleg Gashev
2002-03-14 22:46
2002.04.22
Release Notes


1-69847
kreont
2002-04-06 23:01
2002.04.22
object pascal


1-69845
VEG
2002-04-11 09:32
2002.04.22
Потоки




   Наверх