Форум: "Основная";
Текущий архив: 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