Форум: "Начинающим";
Текущий архив: 2008.03.23;
Скачать: [xml.tar.bz2];
ВнизГлупый вопрос по Application.ProcessMessages; Найти похожие ветки
← →
antonn © (2008-02-24 00:01) [0]Хотя даже не по нем :)
в главной форме приложения есть процедурка:procedure TmainForm.Loop;
begin
while FL do begin
//тыры-пыры
Application.ProcessMessages;
sleep(1);
end;
end;
запуская ее, выполняется бесконечный цикл, в котором ведется кое какой быстрый расчет (FL:=true) в котором точности старта от таймера маловато.
Вопрос - как сделать так, чтобы форма реагировала на "клик по крестику" (закрытие формы (ну иприложения) кнопкой в заголовке)? :) Не пойму, чего то.. Мессаги перерисовки формы проходят, ресайз, максимизация проходит, а вот закрытие формы - нет. Где подвох?
← →
Loginov Dmitry © (2008-02-24 00:04) [1]на OnClose запоминай факт закрытия окна в какой-либо переменной, а этом цикле периодически проверяй ее значение. Можешь также ModalResult заюзать.
← →
antonn © (2008-02-24 00:14) [2]да я не пойму, почему сообщение не проходит.. максимизация ведь идет...
а вдруг еще какие сообщения "застревают"?
я так прикинул - очередь сообщений ведь не резиновая, переполнится где нибудь чего нибудь :)
← →
Anatoly Podgoretsky © (2008-02-24 00:56) [3]> antonn (24.02.2008 00:14:02) [2]
Ничего не застревает, у тебя просто значение FL нигде не изменяется.
← →
antonn © (2008-02-24 01:04) [4]FL задается true и все, она больше нигде не изменяется. Только когда мне нужно выйти я делаю FL:=false и вызываю close, все в обработчике какой нибудь кнопки. Но не могу выйти при нажатии "по крестику" :)
← →
{RASkov} © (2008-02-24 01:39) [5]> [0] antonn © (24.02.08 00:01)
while FL and not Application.Terminated do begin
ну или как-то так....)
← →
{RASkov} © (2008-02-24 01:46) [6]> ну или как-то так....)
Впрочем.... без ну :)
> FL задается true и все, она больше нигде не изменяется.
Ага.... тогда именно вот так:while not Application.Terminated do begin
....
Application.ProcessMessages;
end;
← →
Германн © (2008-02-24 02:03) [7]
> {RASkov} © (24.02.08 01:46) [6]
>
> > ну или как-то так....)
>
> Впрочем.... без ну :)
>
С учетом [4] верно [5].
← →
{RASkov} © (2008-02-24 02:10) [8]> [7] Германн © (24.02.08 02:03)
Я как обычно... начало прочитаю.... отвечу на него(начало)....потом читаю дальше и ....блин, поспешил :(
Тогда, да - [5]. Но FL заменить! На чтонить более естественное, например - StopLoopFlag :))
← →
Германн © (2008-02-24 02:12) [9]
> Но FL заменить! На чтонить более естественное, например
> - StopLoopFlag :))
>
+1
← →
antonn © (2008-02-24 11:34) [10]спасибо, не догадался сам :)
> Но FL заменить! На чтонить более естественное, например
> - StopLoopFlag :))
зачем? обычная переменная, используется только в 3х местах - в цикле, в форм_креате и кнопке exit; и всего один такой цикл в программе :)
давно она была FLoop в приват секции формы (привык все приватные с F называть), потом подсократил.
← →
Сергей М. © (2008-02-24 18:40) [11]
> точности старта от таймера маловато
П-п-переведи...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.03.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c