Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Диалоги [D7, WinXP]


Андрей Молчанов ©   (2005-08-13 21:04:00) 

Здравствуйте!

Подскажите, пожалуйста, какими диалоговыми окнами надо пользоваться для вывода текстовых сообщений. Сейчас использую MessageBox(Handle, PChar(MyMessage), PChar(Application.Title), MB_OK + MB_ICONWARNING);
но у этого способа есть 2 недостатка:
1. Если вызвать диалог с 2 кнопками, одна из которых Отмена, то при нажатии Esc диалог не закрывается. Но это постольку постольку.
2. Если во время отображения диалога вызвать Application.terminate, нажимается кнопка по умолчанию. Для меня это серьезная проблема. Может есть диалоги без второго, а лучше обоих недостатков.


Андрей Молчанов   (2005-08-15 19:19:00) [1]

Все, спасибо, разобрался.
Если вызвать Application.processmessages, то application.terminated укажет правильное значение. Делаю так: сохраняю результат диалога в переменную, если приложение готовится к закрытию, то присваивую переменной значение mrNo.  Дальше обрабатываю. Спасибо всем, кто ответил!


Leonid Troyanovsky   (2005-08-15 14:06:00) [2]


> Андрей Молчанов   (13.08.05 21:04)  

> 2. Если во время отображения диалога вызвать Application.terminate,
> нажимается кнопка по умолчанию. Для меня это серьезная проблема.


Для устранения проблемы достаточно эмулировать нажатие
требуемой кнопки instead Application.terminate call.

--
Regards, LVT.


alex_***   (2005-08-15 13:32:00) [3]

кнопку по умолчанию можно назначить. чтобы работал ESC надо всунуть кнопку CANCEL. а как во время отображения диалога можно вызвать Terminate? асинхронно по сообщению?


Андрей Молчанов   (2005-08-14 15:41:00) [4]

Если вызвать Application.Terminate, а то Application.Terminated не станет равняться True. Что я делаю не так?


Marser   (2005-08-14 13:44:00) [5]


>Андрей Молчанов   (14.08.05 13:01) [9][Ответить]
> А все таки, как сделать, чтобы Application.Terminated
> отображал действительное состояние?

Вопрос не понял. Application.Terminated определяет состояние завершения работы и является сигналом для выхода из всех рабочих циклов. Что ещё?


Андрей Молчанов   (2005-08-14 13:01:00) [6]

А все таки, как сделать, чтобы Application.Terminated отображал действительное состояние?


Antonn   (2005-08-14 12:13:00) [7]

KilkennyCat ©   (13.08.05 23:22) [4]
это какой-то принудительный диалог будет :)

это приговор:)


Андрей Молчанов   (2005-08-14 09:32:00) [8]

MessageDlg в принципе решает проблему, но у MessageBox можно указывать заголовок и все подписи у него на родном языке ОС.

А можно ли узнать, что было вызвано Application.Terminate? Какое-нибудь свойство вроде Application.Terminated?


Marser   (2005-08-14 01:48:00) [9]

Application.MessageBox
MessageDlg


Admeral   (2005-08-14 00:22:00) [10]

ShowMessage('Ваше сообщение'); Служит для оповещения пользователя, а не ведения с ним переговоров.


KilkennyCat   (2005-08-13 23:22:00) [11]


> ShowMessage('Ваше сообщение');


это какой-то принудительный диалог будет :)


Андрей Молчанов   (2005-08-13 23:21:00) [12]


> tazik ©

Этот не позволяет указать иконку, заголовок, несколько кнопок в программе.


> Anatoly Podgoretsky ©

А что надо написать, что бы использовался правильный? Или в нем тоже будет вторая проблема?
Просто у меня в трее висит иконка, в ее контекстном меню пункт Выход, по которому вызывается Application.Terminate. А если выбрать этот пункт, когда программа спрашивает пользователя "Удалить объект?", то в диалоге "нажмется" кнопка по умолчанию - "да". Что не очень хорошо.


tazik   (2005-08-13 22:19:00) [13]

ShowMessage('Ваше сообщение');

не пробовали?


Anatoly Podgoretsky   (2005-08-13 21:20:00) [14]

Правильный диалог используешь, только их два один WinApi, а второй обертка над ним от Борланда, просто меньше параметров надо указывать.


Наверх

Титульная страница Поиск, карта сайта Написать письмо