Delphi справочник - Форум программистов - Навигация  
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z      По первой букве  
System     SysUtils     StrUtils     DateUtils     FileCtrl     ConvUtils     StdConvs     Math     Classes     Dialogs     Types     Variants    ПО Unit   Compiler directives     Directives     Keywords     Types     Variables     Constants     Functions     Procedures    По категории  


Основы Delphi
MessageDlgPos
Функция
Отображает сообщение и кнопки в заданной позиции экрана Dialogs unit
  function MessageDlgPos ( const Message : string; DialogType : TMsgDlgType; Buttons : TMsgDlgButtons; HelpContext : Longint; X, Y : Integer ) : Integer;
Описание
Функция MessageDlgPos используется, чтобы отобразить сообщения пользователю в заданной экранной позиции. Эти сообщения могут быть информационными, предупреждения или другими. Даётся полный свободный выбор кнопок, которые пользователь может нажать, чтобы подтвердить диалог.

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

Значение 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  Отображает диалог, который просит пользователя о вводе текста

MessageDlg  Отображает сообщение, знак и выбираемые кнопки

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

ShowMessageFmt  

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

 
Пример кода : Отображает диалог подтверждения
var
  buttonSelected : Integer;
begin
  // Показ подтверждающего диалога в 20,100
  buttonSelected := MessageDlgPos('Confirmation',mtError, mbOKCancel, 0, 20, 100);

  // Показ типа выбранной кнопки
  if buttonSelected = mrOK     then ShowMessage('Была нажата OK');
  if buttonSelected = mrCancel then ShowMessage('Была нажата Cancel');
end;
Диалог подтверждения будет отображен с кнопками OK и Cancel в координатах 20 100.
Пользователь нажимает OK:

Была нажата OK

отобразится в другом диалоговом окне
 
Пример кода : Отображает заказной диалог с заказным выбором кнопки
var
  buttonSelected : Integer;
begin
  // Показ подтверждающего диалога в координатах 20,100
  buttonSelected := MessageDlgPos('Custom dialog',mtCustom, [mbYes,mbAll,mbCancel], 0, 20, 100);

  // Показ типа выбранной кнопки
  if buttonSelected = mrYes    then ShowMessage('Была нажата Yes');
  if buttonSelected = mrAll    then ShowMessage('Была нажата All');
  if buttonSelected = mrCancel then ShowMessage('Была нажата Cancel');
end;
Диалог без значка будет отображен с кнопками OK, Cancel и All в координатах 20 100.
Пользователь нажимает кнопку All:

Была нажата All

отобразится в другом диалоговом окне
 



© Форум Delphi   |  Блог программистов   |  Создание и продвижение сайтов - "Веб сателлит"  |  Ссылки   |  Английская версия