Справочник по компонентам Delphi. Часть 2 - Типовые диалоги
ОГЛАВЛЕНИЕ
Типовые диалоги
Отдельную группу составляют функции, реализующие простые типовые диалоги (не входящие в Палитру компонентов): посылка сообщения пользователю, получение от него одного из множества возможных ответов, ввод строки. В Windows API для этого предназначалась функция MessageBox. В Delphi существует целый ряд специализированных функций.
Простейшую задачу — информирование пользователя сообщением — можно решить при помощи функций:
procedure ShowMessage(const Msg: string);
procedure ShowMessagePos(const Msg: string; X, Y: Integer);
В этом случае диалог состоит из статического текста Msg и кнопки ОК. Вторая функция отличается тем, что диалог можно поместить в требуемую точку (X.Y).
Когда после информирования пользователя требуется получить от него определенный ответ, нужно применить одну из функций:
function MessageDig(const Msg: string; AType: TMsgDigType; AButtons:TMsgDigButtons; HelpCtx: Longint): Word;
function MessageDlgPos(const Msg: string; AType: TMsgDigType;AButtons: TMsgDigButtons; HelpCtx: Longint; X, Y: Integer): Word;
Здесь информация представлена в строке Msg и в пиктограмме, соответствующей типу диалога:
TMsgDigType = (mtWarning, mtError, mtlnformation, mtConfirmation, mtCustom);
В диалог можно включить любые кнопки из множества:
TMsgDIgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbignore, mbAll, mbHelp);
TMsgDigButtons = set of TMsgDIgBtn;
Для типовых случаев уже описаны подмножества кнопок:
mbYesNoCancel = [mbYes, mbNo, mbCancel];mbOKCancel = [mbOK, mbCancel];
mbAbortRetryIgnore = [mbAbort, mbRetry, mbignore] ;
Параметр HelpCtx указывает контекст системы помощи, который будет активизирован в случае нажатия <F1>.
Как и в предыдущем случае, вторая функция отличается от первой возможностью явного задания координат верхнего левого угла диалога.
function InputBox(const ACaption, APrompt, ADefault: string): string;
есть вызов диалога с заголовком ACaption, в котором подсказка APrompt приглашает набрать в редактирующем элементе текст. Первоначально в него загружается текст ADefault. Функция возвращает строку, находившуюся в редактирующем элементе на момент закрытия диалога.
function InputQuery(const ACaption, APrompt: string;var Value: string): Boolean;
выполняет аналогичные действия. Набранный текст будет содержаться в строке Value. Однако возвращает она булевское значение, в зависимости от того, нажал ли пользователь OK (<Enter>) или Cancel (<Esc>).
Наконец, если мало только получения ответа, и есть необходимость управлять диалогом во время его существования, воспользуйтесь функцией:
function CreateMessageDialog(const Msg: string; AType: TMsgDigType;AButtons: TMsgDigButtons): TPorm;
Она конструирует и возвращает указатель на форму, идентичную MessageDig с соответствующими параметрами.
Внешний вид последней группы диалогов можно изменить, переустановив значения, определенные в модуле DIALOGS:
MsgDigButtonStyle: TButtonStyle = bsAutoDetect;
MsgDIgGlyphs: Boolean = True;