Текущий архив: 2004.10.24;
Скачать: CL | DM;
ВнизУбиение процедуры Найти похожие ветки
← →
RomeoGolf (2004-10-08 15:28) [0]Подскажите пожалуйста, реально ли, и если да, то как решить такую проблемку. Запускается в дочерней форме приложения процедура с бесконечным циклом. Если форму убить, цикл продолжает вертеться, причем, если в нем есть обращение к визуальным компонентам формы, естесственно, лезут ошибки. А если нету - не закрыть главную форму. Можно ли как-то завершить/ликвидировать процедуру/метод убитой формы?
← →
Суслик © (2004-10-08 15:30) [1]Форму у тебя получается закрыть т.к. ты в цикле вызываешь application.processmessages. Один из вариантов не вызывать его. Второй вариант на время работы цикла блокировать операции, которые могу приводить к ошибкам. Например не давать закрываться форме в OnCLoseQuery
← →
programania © (2004-10-08 15:32) [2]в FormCloseQuery
stop:=true;
в цикле
while not stop
или
if stop then break;
← →
RomeoGolf (2004-10-08 15:37) [3]
> programania © (08.10.04 15:32) [2]
пробовал - не получается.
Вообще, поставил защиту от этого дела - именно не даю закрыться форме, пока не остановят процедуру.
Но хотелось бы узнать, можно ли удавить ее со стороны?
← →
Digitman © (2004-10-08 15:40) [4]
> RomeoGolf
> можно ли удавить ее со стороны?
что удалить-то ? машкод процедуры ?
← →
RomeoGolf (2004-10-08 15:47) [5]Да в общем-то, какая разнмца, какой код?
Грубо говоря, такой:
procedure TForm2.Button1Click(Sender: TObject);
begin
While CheckBox1.Checked do // или Flag (который boolean)
begin
Application.ProcessMessages;
// еще что-нибудь
end;
end;
Это что-нибудь даст?
← →
Digitman © (2004-10-08 15:52) [6]
> Это что-нибудь даст?
While CheckBox1.Checked do // или Flag (который boolean)
begin
Application.ProcessMessages;
if FormClosedFlag then Break; //флаг взводится в любом событии формы, связанном с акцией закрытия формы
// еще что-нибудь
end;
Страницы: 1 вся ветка
Текущий архив: 2004.10.24;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.033 c