Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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 пойдет с нормальной обработкой сообщений. И процессор не будет перегружаться лишними циклами.



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

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

Наверх





Память: 0.47 MB
Время: 0.007 c
14-32973
limon
2002-03-05 11:19
2002.04.11
Создание экземпляра класса по имени (ClassRef)


1-32734
Locked
2002-03-30 08:08
2002.04.11
Помогите пожалуйста!!!


1-32828
LiNkS
2002-03-28 18:39
2002.04.11
GIF в Delphi


1-32822
SuperIgor
2002-03-28 21:28
2002.04.11
Срочно помогите!!!


1-32867
Вик_тор
2002-03-29 12:42
2002.04.11
Мастера, есть такая задача, список повторяющихся фамилий,





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