Главная страница
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.012 c
7-75016
angelcom
2002-10-20 08:03
2002.12.23
вопрос о принтерах


1-74843
Сатир
2002-12-11 18:47
2002.12.23
Drag & Drop in TListView


1-74771
oddboy
2002-12-11 07:55
2002.12.23
Как динамически создать CheckBox?


1-74642
Supreme
2002-11-29 17:27
2002.12.23
Ограничение границ при перетаскивании объекта


6-74879
Lefan
2002-10-28 09:19
2002.12.23
проверка страницы перед закачкой...