Уроки по Delphi



         

Урок20. Сообщения для пользователя - часть 4


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

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

Соответственно указанным выше кнопкам результат может принимать следующие значения

* mrNone - окно сообщения закрыто не с помощью кнопки (Alt+F4 или кнопкой "закрыть")

* mrAbort

* mrYes

* mrOk

* mrRetry

* mrNo

* mrCancel

* mrIgnore

* mrAll

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

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 "на ходу". Например:




Содержание  Назад  Вперед