Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

ФункцияMessageDlg

ФункцияMessageDlg обладает более широкими возможностями. Кроме сообщения она позволяет указать тип сообщения и отобразить в окне сообщения несколько кнопок.

Форма записи: MessageDlg(<сообщение>, <тип>, <кнопки>, <справка>);

Здесь: <сообщение>- строковая константа, отображается в окне.

<тип>- тип сообщения - может принимать несколько значений. От этих значений зависит содержимое заголовка и иконка в левом верхнем углу окна. Возможные значения типа сообщений приведены в таблице 5.28.1

Таблица 5.28.1.

Тип сообщения Описание Вид окна
mtWarning Предупреждение. Можно использовать в предупреждающих сообщениях. Например, "Вы действительно желаете удалить все данные с диска С:"
mtError Ошибка. Обычное окошко вывода сообщения об ошибки. Например, аргумент Ln меньше нуля.
mtInformation Информация. Какая-нибудь информация. Например, "Не найден файл настройки, создается заново"
mtConfirmation Запрос\ подтверждение Запрос на сохранение перед выходом, спрашивает перед удалением параметра, и т.п.
mtCustom Без значка. Это сообщение полностью аналогично ShowMessage    

 

Элемент <кнопки> - содержит в себе массив кнопок, которые можно показывать в сообщении.

кнопка * mbYes * mbNo * mbOK * mbCancel * mbAbort
текст на кнопке Yes No Ok Cancel Abort

Еще есть кнопки: * mbHelp, * mbRetry, * mbIgnore, * mbAll.

Массив кнопок задается в квадратных скобках []. Например, нам надо задать три кнопки Yes, No, Cancel. Это делается так [mbYes, mbNo, mbCancel].

Элемент <справка> содержит номер страницы справочной системы. Если справка отсутствует, то указывается номер 0.

MessageDLG является функцией. Она возвращает результат нажатой кнопки.

Рассмотрим пример. Пусть нам надо спросить у пользователя о дальнейших действиях перед выходом из программы.

 

1. Сохранить файл.

2. Не сохранять файл.

3. Продолжить редактирование.

 

Var R:Word; // переменная, в которой хранится результат

...R:=MessageDLG ('Сохранить файл перед выходом?', mtConfirmation, [mbYes, mbNo, mbCancel], 0);

if R=mrYes then // если нажата кнопка Yes

begin

// сохраняем файл и завершаем программу

end;

if R=mrNo then // если нажата кнопка No

begin

// завершаем работу программы без сохранения

end;

if R=mrCancel then // если нажата кнопка Cancel

begin

// продолжаем работу без сохранения

end;

MessageDLG - это очень гибкая функция, у нее есть много достоинств, но есть и один существенный недостаток - англоязычный интерфейс.

Следующая процедура использует системные сообщения пользователю вашей операционной системы. Т.е., если у вас установлена, например немецкая версия windows, то кнопки будут иметь соответствующие названия на немецком языке.

MessageBox(Handle,ТЕКСТ_СООБЩЕНИЯ,ЗАГОЛОВОК_ОКНА,ТИП_СООБЩЕНИЯ);

Первый параметр - указатель на владельца окна сообщения. Этот параметр вам пока ничего не говорит, устанавливайте его в Handle (это ссылка на окно, откуда это сообщение вызывается).

ТЕКСТ_СООБЩЕНИЯ и ЗАГОЛОВОК_ОКНА - имеют тип PChar, поэтому, во избежание недоразумений и появления неизвестного рода ошибок, выдаваемых компилятором, меняйте тип String в PChar "на ходу". Например:

MessageBox(Handle,PChar('ТЕКСТ_СООБЩЕНИЯ'),PChar('ЗАГОЛОВОК_ОКНА'),...

Это был перевод из одного типа строковой величины в другой тип.

Теперь поговорим о немного сложном параметре ТИП_СООБЩЕНИЯ. Он включает в себя иконку и кнопки.

Кнопки:

* MB_ABORTRETRYIGNORE - кнопки "Прервать", "Повторить", "Пропустить".

* MB_OK - кнопка "Ok".

* MB_OKCANCEL - кнопки "Ok", "Отмена".

* MB_RETRYCANCEL - кнопки "Повторить" и "Отмена".

* MB_YESNO - две кнопки "Да" и "Нет".

* MB_YESNOCANCEL - кнопки "Да", "Нет", "Отмена".

 

Для того, чтобы отобразить иконку, нужно указать:

* MB_ICONEXCLAMATION

* MB_ICONWARNING

* MB_ICONINFORMATION

* MB_ICONASTERISK

* MB_ICONQUESTION

* MB_ICONSTOP

* MB_ICONERROR

* MB_ICONHAND

Если у вас в сообщении несколько кнопок, а по умолчанию нужно выбрать определенную, то такая кнопка задается:

MB_DEFBUTTON1 - где последняя цифра указывает номер кнопки, выбранной по умолчанию. Это свойство может быть полезным, например, чтобы обезопасить данные от случайного уничтожения. "Удалить файл?". Две кнопки - "Да", "Нет". По умолчанию мы программно выбираем вторую кнопку. Если пользователь сразу нажал на Enter, не осознавая своего поступка, можно сказать по привычке, то ничего страшного не произойдет.

Как же указать параметры иконки, кнопок, кнопки по умолчанию в одном параметре ТИП_СООБЩЕНИЯ. Очень просто. Простым знаком +

Например:

MessageBox(Handle,PChar('Выйти из программы?'),PChar('Мое сообщение'),MB_ICONINFORMATION+MB_OKCANCEL+MB_DEFBUTTON2);

Выглядит это в программе так, как показано на рисунке:

Итак, MessageBox можно считать идеальной командой вывода сообщения пользователю, которая будет совместима со всеми языковыми версиями windows.

Контроль нажатия на кнопку в MessageBox мы осуществляем аналогично MessageDLG, только возвращаемая величина может принимать следующие значение (соответственно нажатой кнопке):

* IDABORT

* IDCANCEL

* IDIGNORE

* IDNO

* IDOK

* IDRETRY

* IDYES

<== предыдущая лекция | следующая лекция ==>
Процедура ShowMessage | OnKeyPress
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 258; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.