Стандартные диалоговые окна

Диалоговое окно — вспомогательное окно, содержащее кнопки и другие элементы управления, при помощи которых можно выполнить ту или иную команду или задачу.

Виды диалоговых окон:

·      окна ввода информации;

·      окна вывода информации (окна сообщений).

Диалоговые окна ввода

InputBox

Возвращает текст, введенный пользователем в диалоговом окне с указанным заголовком и сообщением.

Переменная := InputBox(заголовок, подсказка, значение);

где:

·         Переменная — переменная строкового типа, значение которой должно быть получено от пользователя.

·         Заголовок — текст заголовка окна ввода.

·         Подсказка — текст поясняющего сообщения.

·         Значение — текст, который будет находиться в поле ввода, когда окно ввода появится на экране.

Пример использования:

Ввести возраст с помощью диалогового окна.

Var s:Byte;

Begin

s:=StrToInt(InputBox(‘Окно ввода','Введите ваш возраст','0'));

End;

Понять по возвращенному результату, написал ли пользователь какой-то текст, или отказался от ввода, можно, сравнив возвращенный результат с начальным значением. Впрочем, результат останется неизменным и в случае, если пользователь ничего не написал в диалоге, но нажал кнопку OK. Если надо достоверно знать, отказался ли пользователь от диалога или нажал OK, следует использовать похожую на InputBox функцию InputQuery.

InputQuery

Возвращает текст, введенный пользователем в диалоговом окне с указанным заголовком и сообщением, и позволяет определить действия пользователя в диалоге.

Возможные виды использования:

function InputQuery(const ACaption, APrompt: string; var Value: string): Boolean;

 

function InputQuery(const ACaption, APrompt: WideString; var Value: WideString): Boolean;

 

function InputQuery(const ACaption, APrompt: WideString; var Value: string): Boolean;

 

function InputQuery(const ACaption, APrompt: WideString; var Value: Double, Min: Double = Low(Integer); Max: Double = High(Integer)): Boolean;

, где:

·         ACaption — заголовок диалогового окна.

·         APromt — предложение пользователю что-то написать и окошко редактирования, в котором пользователь может написать ответ.

·         Value — строка текста в окошке редактирования.

·         AMin — минимальный набор символом, которые пользователь может ввести в окно редактирования.

·         AMax — максимальный набор символов, которые пользователь может ввести в окно редактирования.

Пример использования:

Для этого примера понадобятся кнока и метка на форме. Когда пользаватель нажмет на кнопку появится диалоговое окно. Если пользаватель нажмет OK, то строка из дилогового окна отобразится на метке, находящейся на форме. Если пользователь нажмет Esc, Cancel или x, то метка останется без изменений.

Procedure TForm1.Button1Click(Sender: TObject);

Var

  NewString: string;

  ClickedOK: Boolean;

Begin

  NewString := 'Пустая строка';

  Label1.Caption := NewString;

  ClickedOK := InputQuery('Окно ввода', 'Подсказка', NewString);

  If ClickedOK then

    Label1.Caption := 'Новая строка ' ' ' + NewString + ' ' ' ';

End;

Диалоговые окна вывода

ShowMessage

Отображает окно сообщения с кнопкой OK.

ShowMessage(‘Сообщение’);

В заголовке окна сообщения указывается имя выполняемого файла приложения. Изменить имя приложения можно на вкладке Application, в окне пункта меню Project, подпункта Options.

Пример использования

Var st: String;

Begin

st:='Спасибо, что выбрали нашу программу!';

ShowMessage(st);

End;

При необходимости анализировать ответ пользователя на сообщение используют функцию MessageDlg.

MessageDlg

Отображает диалоговое окно сообщения в центре экрана.

function MessageDlg(const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: Longint): Word;

, где

·    Msg — текст сообщения.

·    Type — тип сообщения. Сообщение может быть информационным, предупредительным или сообщением о критической ошибке. Каждому типу сообщения соответствует определенный значок. Тип сообщения задается именованной константой, которые приведены на таблице ниже.

·    AButtons — кнопки, которые будут присутствовать в окне. Тип TMsgDlgBtns является множеством. Которое включает различные кнопки. Возможные значения кнопок:

Список необходимых кнопок заключается в квадратные скобки [ ], поскольку параметр AButtons является множеством. Если внутри скобок список отсутствует, то в окне не будет ни одной кнопки и пользователю придется закрывать окно системными средствами Windows.

Кроме приведенных констант можно использовать константы: mbokcancel, mbYesNoCancel и mbAbortRetryIgnore. Эти константы определяют наиболее часто используемые в диалоговых окнах комбинации командных кнопок.

·    HelpCtx — параметр, определяющий раздел справочной системы, который появится на экране, если пользователь нажмет клавишу <F1>. Если вывод справки не предусмотрен, то значение параметра должно быть равно нулю.

Значение, возвращаемое функцией MessageDlg, позволяет определить, какая из командных кнопок была нажата пользователем. Возможные возвращаемые значения:

Пример использования:

Begin

If MessageDlg('Вы действительно хотите выйти?',mtConfirmation,[mbYes,mbNo],0)= mrYes then Form1.Close;

End;

MessageBox

Функция для вызова диалогового окна с сообщение для пользователя. Принципиальное отличие от функции MessageDlg состоит в том, что можно задать заголовок сообщения и на кнопках отображаются русские надписи, это возможно поскольку MessageBox является функцией Windows32 API (функция самой ОС).

Рассмотрим синтаксис этой функции:

function Application.MessageBox(const Text, Caption: PChar; Flags: Longint ): Integer;

, где

·    Text — текст самого сообщения, которое может быть более 255 символов при необходимости. Длинные сообщения будут автоматически распределяться на нескольких строках.

·    Caption — заголовок диалогового окна. Заголовок тоже может иметь длину более 255 символов, при этом диалоговое окно будет увеличиваться в длину, что придаст ему не совсем эстетичный вид.

·    Flag — множество параметров, определяющих вид и действия диалогового окна. При использовании нескольких параметров одновременно их необходимо складывать и записывать в скобках. Рассмотрим основные параметры:

Кнопки, отображаемые в диалоговом окне:

Параметр

Значение

Внешний вид

MB_ABORTRETRYIGNORE

Кнопки «Стоп», «Повтор» и «Пропустить».

MB_OK

Кнопка «ОК». Этот параметр принят по умолчанию.

MB_OKCANCEL

Кнопки «ОК» и «Отмена».

MB_RETRYCANCEL

Кнопки «Повтор» и «Отмена».

MB_YESNO

Кнопки «Да» и «Нет».

MB_YESNOCANCEL

Кнопки «Да», «Нет» и «Отмена».

Пиктограммы, отображаемые в диалоговом окне:

Параметр

Значение

Пиктограмма

MB_ICONEXCLAMATION

Замечание.

MB_ICONWARNING

Предупреждение.

MB_ICONINFORMATION

Информирование.

MB_ICONASTERISK

Подтверждение.

MB_ICONQUESTION

Ожидание ответа

MB_ICONSTOP

Запрет.

MB_ICONERROR

Ошибка.

MB_ICONHAND

Прерывание.

Параметры, указывающие кнопку, находящуюся в фокусе:

Параметр

Кнопка

Пример

MB_DEFBUTTON1

Первая кнопка. Этот параметр принят по умолчанию.

MB_DEFBUTTON2

Вторая кнопка.

MB_DEFBUTTON3

Третья кнопка.

MB_DEFBUTTON4

Четвертая кнопка.

Параметры, определяющие модальность окна:

Параметр

Пояснение

MB_APPLMODAL

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

MB_SYSTEMMODAL

То же самое, что и MB_APPLMODAL, но окно всегда отображается поверх других окон. Используется этот параметр для предупреждения о серьезных о серьезных ошибках, требующих немедленного вмешательсьва.

Дополнительные параметры (могут задаваться одновременно).

Параметр

Пояснение

Пример

MB_HELP

Добавляет кнопку «Справка» в окно.

MB_TOPMOST

Помещает окно всегда поверх других окон.

MB_RIGHT

Выраснивает текст по правому краю.

Функция может возвращать следующие значения:

Значение

Численное значение

Пояснение

0

Не хватает памяти для создания диалогового окна.

IDOK

1

Нажата кнопка «ОК».

IDCANCEL

2

Нажата кнопка «Отмена» или клавиши «Esc».

IDABORT

3

Нажата кнопка «Стоп».

IDRETRY

4

Нажата кнопка «Повтор».

IDIGNORE

5

Нажата кнопка «Пропустить».

IDYES

6

Нажата кнопка «Да».

IDNO

7

Нажата кнопка «Нет».

 

Существует еще довольно большое количество функций вызова диалоговых окон, такие как MessageBoxEx, ShowMessageFmt, CreateMessageDialog и других, мы рассмотрели основные из них, остальные построены на тех же принципах. Например, функция MessageBoxEx (функция самой Windows) полностью дублирует функцию MessageBox, причем позволяет задать заголовок и переводит надписи на кнопках на русский язык (если у вас, конечно, установлен русскоязычный Windows) Если вы хотите узнать принципы использования MessageBoxEx можете воспользоваться справкой Delphi, справочником по Win32 API функциям или написать мне письмо с просьбой объяснить ее использование.

На главную

Используются технологии uCoz