Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];

Вниз

ожидание асинхронного события & ShowModal   Найти похожие ветки 

 
yaJohn   (2002-12-13 17:02) [0]

Есть приложение с двумя формами. В модуле главной формы есть цикл, в котором необходимо организовать ожидание асинхронного события на второй форме.
repeat
.......
Form2.GetInfo;
.....
until false;

Событие на Форм2 - изменение состояния компонента (источником является сообщение Windows);
т.е.
procedure TForm2.GetInfo;
begin
while not MyComponent.Ready do;
end;
не годится.
Можно сделать так:
procedure Form2.GetInfo;
begin
ShowModal;
end;
положить на Форм2 таймер и
TForm2.Timer1OnTimer(sender.....
begin
if MyComponent.Ready then close;
end;

Это работает.
НО! По условиям задачи приложение должно быть постоянно свернуто (желательно в трей) и периодическое выскакивание Форм2 - недопустимо.

Какие будут идеи?

Заранее спасибо.


 
yaJohn   (2002-12-13 19:07) [1]

Пусть модератор удалит эту ветку навсегда.
Бросаю работу и сажусь писать проги, которые сначала сворачиваются к "часикам", потом выясняют на какой именно из 17 кнопок нажал юзер (кнопки буду создавать только в рантайме), после чего сами себя удаляют. Предварительно узнав адрес клиента со стороны сервера до коннекта.
Хоть вопросы стану задовать, на которые кто-то отвечает.


 
TTCustomDelphiMaster   (2002-12-13 19:32) [2]

Не понял в чем проблема, но могу предложить 2 варианта
1. обойтись без второй формы, если периодическое выскакивание Форм2 - недопустимо, зачем ее показывать?
2. Выводить форму2 за пределами экрана.


 
yaJohn   (2002-12-13 19:43) [3]

Действительно, вторая форма не обязательна. Но мне с ней лучше.
Сформулируем вопрос по другому: в результате прихода Windows-сообщения один из компонентов генерирует событие.
Имеется глухой цикл. Нужно приостановить этот цикл до возникновения события.
repeat
...........
WaitEvent;
<----------------Сюда попадаем только ПОСЛЕ события
...........
until false;

Вопрос именно в реализации WaitEvent.
ShowModal используется именно потому, что вплоть до Close выполнение кода из которого был вызов ShowModal останавливается, но при этом продолжается обработка сообщений.


 
yaJohn   (2002-12-13 19:59) [4]

Опс! форм2.топ=-1234 - ЧУДЕСНО!!!
И как до самого не дошло? 8)
Сеньксы и регардсы!


 
TTCustomDelphiMaster   (2002-12-13 20:07) [5]

Можно такой вариант предложить
while CheckEvent() do
Application.ProcessMessages;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
3-74592
skiph
2002-12-04 07:29
2002.12.23
Trigger for Delete


1-74821
BlackTiger
2002-12-10 20:41
2002.12.23
Как получить ВСЕ Caption ы контролов на форме?


6-74880
Nikolas SHmuS
2002-10-25 18:09
2002.12.23
Прослушивание порта!


8-74854
Termik
2002-09-02 17:56
2002.12.23
Компонент для показа анимированных gif - файлов


1-74628
serg_1
2002-12-10 10:54
2002.12.23
Dcc32.exe. Разный результат





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский