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




Вниз

как заставить функцию ждать нажатия кнопки 


FPS   (2002-03-27 12:09) [0]

Народ подскажите как заставить функцию ждать нажатия кнопки (ввода текста и т.д).
Вызывается функция, которая показывает окно, ждет пока пользователь введет текст и нажмет кнопку. Функция должна продолжить работу после нажатия кнопки. Пробовал через CreateEvent и ждать в функции нажатия кнопки WaitForSingleObject - окно не перерисовывается :( ставить таймаут - тоже не хорошо. Такое подозрение, что это можно сделать намного проще, но не знаю как...
ЗЫ. repeat until Form1.boolvar - тоже не выход.



Alx2   (2002-03-27 12:10) [1]

ShowModal?



FPS   (2002-03-27 14:38) [2]

НЕТ - не подходит



panov   (2002-03-27 14:44) [3]

Наверняка логику программы можно изменить так, что такого изврата не потребуется.



Alx2   (2002-03-27 14:55) [4]

>Вызывается функция, которая показывает окно,
>ждет пока пользователь введет текст и нажмет кнопку.

Так это же описание работы диалогового окошка (метод ShowModal). На нажатие кнопки ставим ModalResult := mrOk и окошко закроется и ShowModal вернет mrOk. Если это не то, то где же сидит разница?



Glonia Zbanov   (2002-03-27 15:09) [5]

while [событие] do
Application.ProcessMessages;

это из А.Я.Архангельского



Anatoly Podgoretsky   (2002-03-27 21:09) [6]

Send{Post}Message



FPS   (2002-03-28 12:09) [7]

1.Окно не закрывается
2.while чего-то это цикл, жрущий ресурсы без надобности (Sleep внутри - форма повисает)
3.Как изменить логику программы не знаю - из DLL вызывается функция, которой надо имя пользователя после нажатия кнопки.
(При этом если окно уже создано- его не создаю заново).Функция имеет строго определенное название. Ну - будут идеи.

Anatoly Podgoretsky
Send{Post}Message- не понял кому и чего пост??



Alx2   (2002-03-28 12:37) [8]

Может, при нажатии кнопки устанавливать какой-то флаг?
Этот флаг проверяем в функции в цикле (в котором не забываем ProcessMessages). Как только флаг установлен (то есть нажата кнопка) - вываливаемся из цикла и забираем имя...



yaJohn   (2002-03-28 13:10) [9]

Уже сделано. Цикл - цикл обработки сообщений. Все тот же ShowModal.
В приведенной формулировке задачи это очевидное и правильное решение.



Alx2   (2002-03-28 14:32) [10]

>yaJohn © (28.03.02 13:10)
>Все тот же ShowModal.

Так я уже писал про это - не подходит. Кажется, потому-что окошко не надо закрывать.
С другой стороны, кто мешает сделать еще одно окошко с TEdit и двумя кнопками [Ok,Cancel] и модально его показать? То есть все-таки перейти к нормальной работе на базе Dialog.



FPS   (2002-03-28 20:33) [11]

Alx2
>С другой стороны, кто мешает сделать еще одно окошко с TEdit и двумя кнопками
Условие задачи :) Просто мне так прийдется многое переписывать.



Юрий Зотов   (2002-03-28 20:40) [12]

> Пробовал через CreateEvent и ждать в функции нажатия кнопки WaitForSingleObject

Это хорошая идея, только надо использовать MsgWaitForMultipleObjects. Тогда ожидание Event пойдет с нормальной обработкой сообщений. И процессор не будет перегружаться лишними циклами.




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




Наверх





Память: 0.73 MB
Время: 0.03 c
4-33027           AndrewBee             2002-01-26 15:28  2002.04.11  
WinRar


1-32880           Danila                2002-03-29 16:10  2002.04.11  
Не удается сделать указатель на Canvas


1-32762           SergeySh              2002-03-26 20:13  2002.04.11  
ПОМОГИТЕ!


1-32902           PlaZZma               2002-03-29 22:00  2002.04.11  
Может это что-то глючит?


1-32854           PEC                   2002-03-28 15:12  2002.04.11  
Народ !