Текущий архив: 2005.09.25;
Скачать: CL | DM;
Вниз
Диалоги Найти похожие ветки
← →
Андрей Молчанов (2005-08-13 21:04) [0]Здравствуйте!
Подскажите, пожалуйста, какими диалоговыми окнами надо пользоваться для вывода текстовых сообщений. Сейчас используюMessageBox(Handle, PChar(MyMessage), PChar(Application.Title), MB_OK + MB_ICONWARNING);
но у этого способа есть 2 недостатка:
1. Если вызвать диалог с 2 кнопками, одна из которых Отмена, то при нажатии Esc диалог не закрывается. Но это постольку постольку.
2. Если во время отображения диалога вызвать Application.terminate, нажимается кнопка по умолчанию. Для меня это серьезная проблема. Может есть диалоги без второго, а лучше обоих недостатков.
← →
Anatoly Podgoretsky © (2005-08-13 21:20) [1]Правильный диалог используешь, только их два один WinApi, а второй обертка над ним от Борланда, просто меньше параметров надо указывать.
← →
tazik © (2005-08-13 22:19) [2]ShowMessage("Ваше сообщение");
не пробовали?
← →
Андрей Молчанов (2005-08-13 23:21) [3]
> tazik ©
Этот не позволяет указать иконку, заголовок, несколько кнопок в программе.
> Anatoly Podgoretsky ©
А что надо написать, что бы использовался правильный? Или в нем тоже будет вторая проблема?
Просто у меня в трее висит иконка, в ее контекстном меню пункт Выход, по которому вызывается Application.Terminate. А если выбрать этот пункт, когда программа спрашивает пользователя "Удалить объект?", то в диалоге "нажмется" кнопка по умолчанию - "да". Что не очень хорошо.
← →
KilkennyCat © (2005-08-13 23:22) [4]
> ShowMessage("Ваше сообщение");
это какой-то принудительный диалог будет :)
← →
Admeral © (2005-08-14 00:22) [5]ShowMessage("Ваше сообщение"); Служит для оповещения пользователя, а не ведения с ним переговоров.
← →
Marser © (2005-08-14 01:48) [6]Application.MessageBox
MessageDlg
← →
Андрей Молчанов (2005-08-14 09:32) [7]MessageDlg в принципе решает проблему, но у MessageBox можно указывать заголовок и все подписи у него на родном языке ОС.
А можно ли узнать, что было вызвано Application.Terminate? Какое-нибудь свойство вроде Application.Terminated?
← →
Antonn © (2005-08-14 12:13) [8]KilkennyCat © (13.08.05 23:22) [4]
это какой-то принудительный диалог будет :)
это приговор:)
← →
Андрей Молчанов (2005-08-14 13:01) [9]А все таки, как сделать, чтобы Application.Terminated отображал действительное состояние?
← →
Marser © (2005-08-14 13:44) [10]
>Андрей Молчанов (14.08.05 13:01) [9][Ответить]
> А все таки, как сделать, чтобы Application.Terminated
> отображал действительное состояние?
Вопрос не понял. Application.Terminated определяет состояние завершения работы и является сигналом для выхода из всех рабочих циклов. Что ещё?
← →
Андрей Молчанов (2005-08-14 15:41) [11]Если вызвать Application.Terminate, а то Application.Terminated не станет равняться True. Что я делаю не так?
← →
alex_*** (2005-08-15 13:32) [12]кнопку по умолчанию можно назначить. чтобы работал ESC надо всунуть кнопку CANCEL. а как во время отображения диалога можно вызвать Terminate? асинхронно по сообщению?
← →
Leonid Troyanovsky © (2005-08-15 14:06) [13]
> Андрей Молчанов (13.08.05 21:04)
> 2. Если во время отображения диалога вызвать Application.terminate,
> нажимается кнопка по умолчанию. Для меня это серьезная проблема.
Для устранения проблемы достаточно эмулировать нажатие
требуемой кнопки instead Application.terminate call.
--
Regards, LVT.
← →
Андрей Молчанов (2005-08-15 19:19) [14]Все, спасибо, разобрался.
Если вызвать Application.processmessages, то application.terminated укажет правильное значение. Делаю так: сохраняю результат диалога в переменную, если приложение готовится к закрытию, то присваивую переменной значение mrNo. Дальше обрабатываю. Спасибо всем, кто ответил!
Страницы: 1 вся ветка
Текущий архив: 2005.09.25;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.038 c