Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.23;
Скачать: CL | DM;

Вниз

ожидание асинхронного события & 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
14-74963
aterm
2002-12-03 10:14
2002.12.23
Комилятор для С++


1-74759
solo
2002-12-13 23:11
2002.12.23
Простой вопрос.


1-74810
denis24
2002-12-11 16:36
2002.12.23
Stringgrid


14-74933
Сатир
2002-12-01 20:53
2002.12.23
Исходящие на шару?


3-74557
ton2
2002-12-04 12:00
2002.12.23
Запись Null-значения в поле boolean