Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.007 c
2-1203997892
Chorniy
2008-02-26 06:51
2008.03.23
Корректно ли делать так? WaitForSingleObject()


4-1178650355
Strate
2007-05-08 22:52
2008.03.23
Опять ListView, изменение колонки.


15-1202699303
Slider007
2008-02-11 06:08
2008.03.23
С днем рождения ! 11 февраля 2008 понедельник


15-1202576844
TUser
2008-02-09 20:07
2008.03.23
Майкрософт и свобода прессы


9-1168164864
DJ KARIES
2007-01-07 13:14
2008.03.23
Yok - игры на Delphi, OpenGL без VCL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский