Top-office11.ru

IT и мир ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Dialog box delphi

Dialog box delphi

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

Значение DialogType может иметь одно из следующих перечисленных значений:

mtWarning — Отображает символ восклицания
mtError — Отображает красный «Х»
mtInformation — Отображает «i» в круге
mtConfirmation — Отображает знак вопроса
mtCustom — Отображает только сообщение

Значение Buttons может быть одним из следующих перечисленных значений:

mbYes — Отображает кнопку «Yes»
mbNo — Отображает кнопку «No»
mbOK — Отображает кнопку «OK»
mbCancel — Отображает кнопку «Cancel»
mbAbort — Отображает кнопку «Abort»
mbRetry — Отображает кнопку «Retry»
mbIgnore — Отображает кнопку «Ignore»
mbAll — Отображает кнопку «All»
mbNoToAll — Отображает кнопку «No to all»
mbYesToAll — Отображает кнопку «Yes to all»
mbHelp — Отображает кнопку «Help»

Вы задаёте эти значения в квадратных скобках разделённых запятой, как во втором примере кода.

Delphi обеспечивает множество предопределенных комбинаций кнопок:

mbYesNoCancel = [mbYes, mbNO, mbCancel]
mbYesAllNoAllCancel = [mbYes, mbYesToAll, mbNo, mbNoToAll, mbCancel]
mbOKCancel = [mbOK, mbCancel]
mbAbortRetryCancel = [mbAbort, mbRetry, mbCancel]
mbAbortIgnore = [mbAbort, mbIgnore]

Теперь, кажется, что в Delphi сделали конструкторскую недоработку при установке возвращаемого значения диалогового окна. Вместо того, чтобы определить перечисляемое значение нажатой кнопки, используется полностью различный набор перечисляемых имён:

mrYes = 6
mrNo = 7
mrOK = 1
mrCancel = 2
mrAbort = 3
mrRetry = 4
mrIgnore = 5
mrAll = 8
mrNoToAll = 9
mrYesToAll = 10

Значения получают числовые значения этих перечислений, данных в числовом порядке, которые определены как эквивалентные mb. Это очень странно.

Эти значения определены в модуле Controls, а не в модуле Dialogs.

Обратите внимание, что кнопка Help не имеет никакого эквивалентного возвращаемого значения. Это потому что она не заканчивает диалог.

Значение HelpContext используется вместе с кнопкой Help. Его использование выходит из области Основ Delphi.Похожие команды

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

InputQuery Отображает диалог, который просит пользователя о вводе текста

MessageDlgPos Отображает сообщение и кнопки в заданной позиции экрана

ShowMessage Показывает простое диалоговое окно с кнопкой ОК, содержащее заданную строку

ShowMessagePos Показывает строку в простом диалоговом окне размещенном в заданном месте

Диалоговые окна в Дельфи (процедуры и функции, реализующие диалоговые окна)

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

Процедура ShowMessage, функции MessageDlg и MessageDlgPos отображают окно (панель) вывода сообщений, а функции InputBox и InputQuery — окно (панель) для ввода информации.

Процедура ShowMessage

Процедура ShowMessage (const Msg: String) отображает окно сообщения с кнопко ОК. Заголовок содержит название исполняемого файла приложения, а строка Msg выводится как текст сообщения.

Функция MessageDlg

Функция MessageDlg(const Msg: String; AType: TMsgDlgType; AButtons: TMsgDlgButtons; Helpctx: Longint) : word отображает окно сообщения в центре экрана и позволяет получить ответ пользователя. Параметр Msg содержит отображаемое сообщение.

Окно сообщения может относиться к различным типам и наряду с сообщением содержать картинки. Тип окна сообщения определяется параметром АТуре, который может принимать следующие значения:

  • mtWarning (окно содержит черный восклицательный знак в желтом треугольнике и заголовок Warning);
  • mtError (окно содержит белый косой крест в красном круге и заголовок Error);
  • mtInformation (окно содержит синюю букву «i» в белом круге и заголовок Information);
  • mtConfirmation (окно содержит синий знак «?» в белом круге и заголовок Confirmation);
  • mtCustom (окно не содержит картинки, в заголовке выводится название исполняемого файла приложения).

Параметр AButtons задает набор кнопок окна и может принимать любые комбинации следующих значений:

  • mbYes (кнопка Yes);
  • mbAbort (кнопка Abort);
  • mbNo (кнопка No);
  • mbRetry (кнопка Retry);
  • mbOk (кнопка OK);
  • mbIgnore (кнопка Ignore);
  • mbCancel (кнопка Cancel);
  • mbAll (кнопка All);
  • mbHelp (кнопка Help);

Для значения параметра AButtons имеются две константы — mbYesNoCancel и mbOKCancel, задающие предопределенные наборы кнопок:

  • mbYesNoCancel = [mbYes, mbNo, mbCancel];
  • mbOKCancel = [mbOK, mbCancel]

При нажатии любой из указанных кнопок (кроме кнопки Help) диалоговое окно закрывается, а результат (свойство ModalResult) возвращается функцией MessageDlg.

Параметр HelpCtx определяет контекст (тему) справки, которая появляется во время отображения диалогового окна при нажатии пользователем клавиши . Обычно! значение этого параметра равно нулю.

Пример использования функции MessageDlg:

При нажатии кнопки Button1 производится простейшая проверка даты. Код даты вводится в поле редактирования DateEdit1, размещенное в форме. Если длина даты меньше допустимой, выдается предупреждение с запросом на автоматическую коррекцию (см. скриншот). При утвердительном ответе пользователя в поле даты записывается текущая дата, при отрицательном — фокус передается полю ввода даты.

Функция MessageDlgPos

Функция MessageDlgPos(const Msg: String; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer) : Word отличается от функции MessageDlg наличием параметров Х и Y, управляющих положением окна на экране.

Функция InputBox

Функция InputBox(const ACaption, APrompt, ADefault: String): String отображает диалоговое окно для ввода строки текста. Окно выводится в центре экрана и содержит поле ввода с надписью, а также кнопки ОК и Cancel.

Параметр ACaption задает заголовок окна, а параметр APrompt содержит поясняющий текст к полю ввода. Параметр ADefault определяет строку, возвращаемую функцией при отказе пользователя от ввода информации (нажатие кнопки Cancel или клавиши ).

Пример использования функции InputBox:

Приведенная процедура отображает окно запроса на ввод фамилии пользователя (см. скриншот).

По умолчанию предлагается Иванов.

Функция InputQuery

Функция InputQuery (const ACaption, APrompt: String; var Value: String): Boolean отличается от функции InputBox тем, что вместо третьего параметра— строки по умолчанию— используется параметр Value, который в случае подтверждения ввода содержит введенную пользователем строку.

В качестве результата функция возвращает логическое значение, позволяющее определить, каким образом завершен диалог. Если нажата кнопка ОК, то функция возвращает значение True, если нажата кнопка Cancel или клавиша — значение False.

В вышеуказанной процедуре с помощью функции InputQuery выводится окно запроса, аналогичное приведенному ранее. Возвращаемый функцией InputQuery результат не анализируется.

Кроме рассмотренных диалоговых окон, в Delphi имеется ряд других специализированных диалоговых окон, например диалоговое окно выбора каталога, вызываемое функцией Select Directory модуля FileCtrl.

Диалоговые окна в Дельфи

Функции MessageDlg и MessageDlgPos отображают окна, в которых пользователю задается вопрос и анализируется ответ.

функция/процедураОписание
ShowMessage(const Msg:string);Простое диалоговое окно с кнопкой
InputBox (const Acaption, APromt,

ADefault:string): string

Диалоговое окно с заголовком

Acaption, с предложением APromt,

окном редактирования ADefault

CreateMessageDialog

(const Msg:string; DlgType;

Buttons: TmsgDlgButtons): Tform

Окно сообщения Msg типа DlgType

с кнопками Buttons в виде объекта

формы

SelectDirectory (const Caption: string;

const Root: WideString;

out Directory: string;):

Boolean; overload;

Вызывает стандартный диалог

Windows для поиска каталога.

Задается root – корневой каталог,

Directory – выбранный каталог

InputQuery(const Acaption,

var Value:string):Boolean

Диалоговое окно с заголовком

Acaption, с предложением APromt,

окном редактирования в котором

загружено Value

MessageDlg(const Msg:string;

HelpCtx:Longint): Word

Окно сообщения Msg типа DlgType

с набором кнопок Buttons, и системой

справки HelpCtx

ShowMessageFmt(const Msg:string;

Params: array of const)

Отображает простое окно сообщения,

формируемого из параметров Params

строкой форматирования Msg

TAplication.MessageBox

(Text, Caption:PChar; Flags:Longint):

Integer

Создает диалоговое окно сообщения

Text с заголовком Caption. Параметр

Flags определяет пиктограмму, набор

кнопок и другие характеристики

Функции MessageDlg и MessageDlgPos отображают окна, в которых пользователю задается вопрос и анализируется ответ. Различия между MessageDlg и MessageDlgPos заключается в том, что MessageDlg отображает окно в центре экрана, а MessageDlgPos – в позиции X,Y от левого верхнего угла. Вид отображаемого окна задается параметром Atype:

mtWarningОкно замечаний
mtErrorОкно ошибок
mtInformationИнформационное окно
mtConfirmationОкно подтверждения
mtCustomОкно без значка

Параметр Abuttons определяет, какие кнопки будут присутствовать:

Dialog box delphi

Table of contents

Part I — Foundations
Chapter 1Delphi 7 and Its IDE
Chapter 2The Delphi Programming Language
Chapter 3The Run-Time Library
Chapter 4Core Library classes
Chapter 5Visual Controls
Chapter 6Building the User Interface
Chapter 7Working with Forms
Part II — Delphi Object-Oriented Architectures
Chapter 8The Architecture of Delphi Applications
Chapter 9Writing Delphi Components
Chapter 10Libraries and Packages
Chapter 11Modeling and OOP Programming (with ModelMaker)
Chapter 12From COM to COM+
Part III — Delphi Database-Oriented Architectures
Chapter 13Delphi’s Database Architecture
Chapter 14Client/Server with dbExpress
Chapter 15Working with ADO
Chapter 16Multitier DataSnap Applications
Chapter 17Writing Database Components
Chapter 18Reporting with Rave
Part IV — Delphi, the Internet, and a .NET Preview
Chapter 19Internet Programming: Sockets and Indy
Chapter 20Web Programming with WebBroker and WebSnap
Chapter 21Web Programming with IntraWeb
Chapter 22Using XML Technologies
Chapter 23Web Services and SOAP
Chapter 24The Microsoft .NET Architecture from the Delphi Perspective
Chapter 25Delphi for .NET Preview: The Language and the RTL
Appendix AExtra Delphi Tools by the Author
Appendix BExtra Delphi Tools from Other Sources
Appendix CFree Companion Books on Delphi
Index
List of Figures
List of tables
List of Listings
List of Sidebars

Predefined Dialog Boxes

Bes >Windows common dialogs—is defined in the system library ComDlg32.DLL .

Windows Common Dialogs

I have already used some of these dialog boxes in several examples in the previous chapters, so you are probably familiar with them. Basically, you need to put the corresponding component on a form, set some of its properties, run the dialog box (with the Execute method, returning a Boolean value), and retrieve the properties that have been set while running it. To help you experiment with these dialog boxes, I’ve built the CommDlgTest program.

I’ll highlight some key and nonobvious features of the common dialog boxes, and let you study the source code of the example for the details:

The Open Dialog Component can be customized by setting different file extension filters using the Filter property, which has a handy editor and can be assigned a value directly with a string like Text File (*.txt)|*.txt . Another useful feature lets the dialog check whether the extension of the selected file matches the default extension, by checking the ofExtensionDifferent flag of the Options property after executing the dialog. Finally, this dialog allows multiple selections by setting its ofAllowMultiSelect option. In this case you can get the list of selected files by looking at the Files string list property.

The SaveDialog component is used in similar ways and has similar properties, although of course you cannot select multiple files.

The OpenPictureDialog and SavePictureDialog components provide similar features but have a customized form that shows a preview of an image. It only makes sense to use these components for opening or saving graphical files.

The FontDialog component can be used to show and select from all types of fonts, fonts useable on both the screen and a selected printer (WYSIWYG), or only TrueType fonts. You can show or h >Options property. You can also activate an Apply button by prov >OnApply event and using the fdApplyButton option. A Font dialog box with an Apply button (see Figure 7.13) behaves almost like a modeless dialog box (but isn’t one).


Figure 7.13: The Font selection dialog box with an Apply button

The ColorDialog component is used with different options to show the dialog fully open at first or to prevent it from opening fully. These settings are the cdFullOpen or cdPreventFullOpen values of the Options property.

The Find and Replace dialog boxes are truly modeless dialogs, but you have to implement the find and replace functionality yourself, as I’ve partially done in the CommDlgTest example. The custom code is connected to the buttons of the two dialog boxes by prov >OnFind and OnReplace events.

Qt offers a similar set of predefined dialog boxes, but the set of options is often more limited. I’ve created the QCommDlg version of the example you can use to experiment with these settings. The CLX program has fewer menu items, because some of the options are not available; there are other minimal changes in the source code.

A Parade of Message Boxes

The Delphi message boxes and input boxes are another set of predefined dialog boxes. You can use many Delphi procedures and functions to display simple dialog boxes:

The MessageDlg function shows a customizable message box with one or more buttons and usually a bitmap. The MessageDlgPos function is similar to the MessageDlg function, but the message box is displayed in a given position, not in the center of the screen (unless you use the –1, –1 position to make it appear in the screen center).

The ShowMessage procedure displays a simpler message box with the application name as the caption and an OK button. The ShowMessagePos procedure does the same, but you also indicate the position of the message box. The ShowMessageFmt procedure is a variation of ShowMessage , which has the same parameters as the Format function. It corresponds to calling Format ins >ShowMessage .

The MessageBox method of the Application object allows you to specify both the message and the caption; you can also prov >MessageBox function of the Windows API, which passes as a main window parameter the handle of the Application object. This handle is required to make the message box behave like a modal window.

The InputBox function asks the user to input a string. You prov >InputQuery function asks the user to input a string, too. The only difference between this and the InputBox function is in the syntax. The InputQuery function has a Boolean return value that indicates whether the user has clicked OK or Cancel.

To demonstrate some of the message boxes available in Delphi, I’ve written another sample program, with a similar approach to the preceding CommDlgTest example. In the MBParade example, you have a high number of choices (radio buttons, check boxes, edit boxes, and spin edit controls) to set before you click one of the buttons that displays a message box. The similar QMbParade example is missing only the Help button, which is not available in the CLX message boxes.

Читать еще:  Operand types do not match ассемблер
Ссылка на основную публикацию
Adblock
detector