Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 7.doc
Скачиваний:
3
Добавлен:
21.11.2019
Размер:
198.14 Кб
Скачать

5.2.5. Линейка Dialogs

На линейке компонентов Dialogs расположено несколько стандартных диалогов Windows. Они предназначены для открытия и записи файлов, установки параметров принтера и шрифтов, цвета, поиска и замещения текста.

OpenDialog

Компонент для выбора имени файла

SaveDialog

Компонент для выбора имени файла при записи

OpenPictureDialog

Компонент для выбора имени графического файла

SavePictureDialog

Компонент для выбора имени графического файла при записи

FontDialog

Компонент для выбора имени и свойств шрифта

ColorDialog

Компонент для выбора цвета

PrintDialog

Компонент для настройки параметров печати текста

PrinterSetupDialog

Компонент для настройки параметров печати

FindDialog

Компонент для подготовки шаблона поиска в тексте

ReplaceDialog

Компонент для подготовки шаблона поиска и замены в тексте

Стандартный диалог OpenDialog предназначен для поиска файла по дискам и папкам. Основным методом этого компонента, как и многих других компонентов диалога, является функция логического типа Execute, которая, обычно, используется в операторе if: if OpenDialog1.Execute then… Полное имя файла возвращается свойством OpenDialog1.FileName .

Рис. 1. Диалог OpenDialog

TSaveDialog выводит диалоговое окно для выбора имени файла и сохранения файлов. Диалог появляется при вызове метода Execute. Когда пользователь нажимает Save, диалог закрывается и выбранное имя файла загружается в свойство FileName.

TOpenPictureDialog выводит диалоговое окно для выбора и открытия графических файлов. Этот компонент отличается от TOpenDialog тем, что включает прямоугольную область предварительного просмотра. Предварительный просмотр возможен для битовых изображений (BMP), иконок (ICO), метафайлов (WMF) и расширенных метафайлов (EMF).

TSavePictureDialog выводит диалоговое окно для выбора имен файлов и сохранения графических файлов. Этот компонент отличается от TsaveDialog тем, что включает прямоугольную область предварительного просмотра. Предварительный просмотр возможен для битовых изображений (BMP), иконок (ICO), метафайлов (WMF) и расширенных метафайлов (EMF).

TFontDialog выводит диалоговое окно для выбора шрифтов. Диалог активизируется вызовом метода Execute. При нажатия OK диалог закрывается и выбранный шрифт загружается в свойство Font.

Компонент TColorDialog выводит диалоговое окно для выбора цветов. Диалог активизируется вызовом метода Execute. При нажатии OK, диалог закрывается и выбранный цвет загружается в свойство Color.

Компонент TPrintDialog выводит стандартное диалоговое окно для начала печати на принтере. Диалог модальный и активизируется вызовом метода Execute.

TPrinterSetupDialog выводит диалоговое окно для выбора конфигурации принтеров. Содержимое диалога изменяется в зависимости от выбранного драйвера принтера. Диалог активизируется вызовом метода Execute.

Компонент TFindDialog выводит диалоговое окно для ввода шаблона поиска. Диалог активизируется вызовом метода Execute.

TReplaceDialog - разновидность диалога TFindDialog, предназначенная для ввода как строки поиска, так и строки замещения (редактирование типа «найти и заменить»). Подобно диалогу Find, диалог Replace активизируется вызовом метода Execute.

Помимо диалогов, представленных на линейке компонентов Dialogs существует несколько полезных процедур и функции, каждая из которых динамически создает окно диалога. В основном эти процедуры собраны в модуле Dialogs.

Диалог MessageBox описан в модуле Application и представляет собой функцию типа Integer:

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

Функция инициализирует форму, название которой определяется параметром Caption, а сообщение или вопрос - параметром Text. Эти два параметра типа нуль-терминированной строки PChar. Тип PChar, строго говоря, является указателем, о которых более обстоятельный разговор пойдет в главе ХХХ. Пока же мы заметим, что строку символов можно передавать в качестве параметра PChar.

Параметр Flags определяет набор кнопок на форме. В модуле Windows приведены следующие предопределенные константы для параметра Flags:

MB_OK = $00000000;

MB_OKCANCEL = $00000001;

MB_ABORTRETRYIGNORE = $00000002;

MB_YESNOCANCEL = $00000003;

MB_YESNO = $00000004;

MB_RETRYCANCEL = $00000005;

MB_ICONHAND = $00000010;

MB_ICONQUESTION = $00000020;

MB_ICONEXCLAMATION = $00000030;

MB_ICONASTERISK = $00000040;

MB_USERICON = $00000080;

MB_ICONWARNING= MB_ICONEXCLAMATION;

MB_ICONERROR = MB_ICONHAND;

MB_ICONINFORMATION = MB_ICONASTERISK;

MB_ICONSTOP = MB_ICONHAND;

В качестве примера можно привести запрос на удаление:

if Application.MessageBox('Удалить запись?','Удаление',

MB_OKCANCEL) = IDOK then

Функция MessageBox возвращает целое значение:

IDABORT

3

Нажата кнопка Abort.

IDCANCEL

2

Нажата кнопка Cancel.

IDIGNORE

5

Нажата кнопка Ignore.

IDNO

7

Нажата кнопка No.

IDOK

1

Нажата кнопка OK.

IDRETRY

4

Нажата кнопка Retry.

IDYES

6

Нажата кнопка Yes.

В модуле Dialogs представлено несколько полезных процедур и функций, каждая из которых создает окно диалога.

Функция CreateMessageDialog вызывается для того, чтобы создать форму диалога, которая будет использована несколько раз в приложении. CreateMessageDialog возвращает диалог типа определенного параметром DlgType и с кнопками указанными параметром Buttons. Синтаксис этого диалога имеет следующий вид:

function CreateMessageDialog(const Msg: string; DlgType: TMsgDlgType;

Buttons: TMsgDlgButtons): TForm;

Тип TMsgDlgType = (mtWarning, mtError, mtInformation, mtConfirmation, mtCustom) определяет величины, описывающие тип сообщения. Следующая таблица описывает эти возможные величины:

Значение

Value

mtWarning

Сообщение содержит желтый восклицательный знак.

mtError

Сообщение содержит красный знак стоп.

MtInformation

Сообщение содержит синий "i".

MtConfirmation

Сообщение содержит зеленый знак вопроса.

mtCustom

Сообщение не содержит битовое изображение.

CreateMessageDialog не отображает диалоговую форму. Приложение должно сделать видимым эту форму в нужный момент:

MainForm:=CreateMessageDialog('?',MtInformation,[mbYes, mbNo]);

MainForm.Visible:=true;

Синтаксис диалога MessageDlg выглядит так:

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

Диалог MessageDlg вызывается для того, чтобы выводить сообщение Msg и получать ответ. Параметр Atype определяет тип диалога. Параметр Abuttons определяет набор кнопок. Параметр HelpCtx используется для определения ID контекстной помощи, которая должна появляться при нажатии кнопки подсказки или нажатии F1.

MessageDlg возвращает номер кнопки, выбранной пользователем: MrNone, mrAbort, mrYes, mrOk, mrRetry, mrNo, mrCancel, mrIgnore, mrAll.

Этот диалог может быть, например, использован вот в таком виде:

if MessageDlg('Удалить запись?',

mtConfirmation, [mbYes, mbNo], 0) = mrYes then

В описании диалога MessageDlgPos добавляются два целых параметра X, Y: Integer, которые позволяют задавать координаты верхнего левого угла формы диалога:

function MessageDlgPos(const Msg: string; DlgType: TMsgDlgType;

Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer): Integer;

Диалог MessageDlgPosHelp имеет дополнительный параметр HelpFileName, позволяющий использовать не встроенную подсказку, а свой файл помощи:

function MessageDlgPosHelp(const Msg: string; DlgType: TMsgDlgType;

Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;

const HelpFileName: string): Integer;

Очень простой диалог ShowMessage позволяет вывести строку сообщения Msg:

procedure ShowMessage(const Msg: string);

В описании диалога ShowMessagePos добавляются два целых параметра X, Y: Integer, которые позволяют задавать координаты верхнего левого угла формы диалога:

procedure ShowMessagePos(const Msg: string; X, Y: Integer);

Функция диалога InputBox позволяет ввести строку:

function InputBox(const ACaption, APrompt, ADefault: string): string;

Возможно, например, такое использование этой функции:

s:= InputBox('Окно ввода', 'Введите:', 'Начальная строка');

Функция логического типа InputQuery также позволяет ввести строку Value:

function InputQuery(const ACaption, APrompt: string;

var Value: string): Boolean;

Если ввод заканчивается нажатием кнопки Ok, то функции вернет True. Например,

s:='Начальная строка';

if InputQuery('Input Box', 'Prompt', s) then…;