Top-office11.ru

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

Delphi messagebox пример

Delphi messagebox пример

The Win32 Message Box

Introduction

To support message boxes, the Win32 library provides a function named MessageBox(). A message box in Microsoft Windows appears as follows

Because the TApplication class represents Win32 in a VCL application, this function can be called by qualifying it to the Application global variable.

The Message of the Box

The MessageBox() function takes three arguments. The first argument, Message, is a string representing the message that the user would read. The Message string could be a static sentence. It could be constructed from another control. Or it could be a combination of different string functions and operations.

You can create a simple message box similar to one implemented using the ShowMessage() function to display a simple message with an OK button. In this case, you would provide only the Message argument. Passed the other two arguments as nil. Here is an example:

The Caption of the Message Box

The second argument, also a string, is the caption that would display on the title bar of the dialog box. You can also set it when creating the message box or you can build it from what would be available at runtime. If you do not have a caption, you can set the value of this argument as 0. In that case the title bar would display Error. For example, the above code would produce:

Therefore, to create a less boring message box, provide the Caption argument. Here is an example:

This would produce:

The Buttons on the Message Box

The third argument specifies the flags that would display on the dialog box: one or more buttons and an optional picture. Besides, or apart from, the OK button, if you want to display other buttons, you can pass the third argument with one of the following constants:

ConstantButtons
MB_OK
MB_OKCANCEL
MB_ABORTRETRYIGNORE
MB_YESNOCANCEL
MB_YESNO
MB_RETRYCANCEL
MB_HELP

You can create a simple message box with OK as the only button. In that case, set the third argument as MB_OK. Here is an example:

This would produce:

To create a message box that displays the Yes and No buttons, you could write:

This would produce:

If you provide the MB_HELP as the only button, the message box would display with an OK and a Help buttons.

The Icon on the Message Box

To enhance a dialog box and accentuate its message, you can display an icon using one of the Win32 defined integer constants. Although you can use any icon with any button, you should be selective and make sure that the appearance of the icon you use is in accordance with the message. To specify the icon, you use one of the following constants:

ValueIconSuited when
MB_ICONEXCLAMATION
MB_ICONWARNING
Warning the user of an action performed on the application
MB_ICONINFORMATION
MB_ICONASTERISK
Informing the user of a non-critical situation
MB_ICONQUESTIONAsking a question that expects a Yes or No, or a Yes, No, or Cancel answer
MB_ICONSTOP
MB_ICONERROR
MB_ICONHAND
A critical situation or error has occurred. This icon is appropriate when informing the user of a termination or deniability of an action

The icons are used in conjunction with the buttons constant. To combine these two flags, use the bitwise Or operator. Here is an example:

This would produce:

The Default Button on the Message Box

When a message box is configured to display more than one button, the operating system is set to decide which button is the default. The default button has a thick border that sets it apart from the other button(s). If the user presses Enter, the message box would behave as if the user had clicked the default button. Fortunately, if the message box has more than one button, you can decide what button would be the default. To specify the default button, use one of the following constants:

ValueIf the message box has more than one button, the default button would be
MB_DEFBUTTON1The first button
MB_DEFBUTTON2The second button
MB_DEFBUTTON3The third button
MB_DEFBUTTON4The fourth button

To specify the default button, use the bitwise OR operator to combine the constant integer of the desired default button with the button’s constant and the icon. Here is an example:

This would produce:

Since the combination of these buttons is using the Or bitwise operator to construct the Flags argument, it does not make a difference which constant appears first:

The Returned Value of the Message Box

After reading the message displaying on the dialog box, the user would click one of the buttons and the dialog would be closed. Each one of the buttons has a constant number that is assigned and recognized by the compiler. You can use this number to find out what button the user had clicked. This means that the MessageBox() function returns an integer value as in the following table:

Displayed Button(s)If the user clickedThe return value is
IDOK
IDOK
IDCANCEL
IDABORT
IDRETRY
IDIGNORE
IDYES
IDNO
IDCANCEL
IDYES
IDNO
IDRETRY
IDCANCEL

Therefore, you can use one of these integers to act depending on the button clicked:

Delphi messagebox пример

Ув.мастера подскажите пожалуйста, как сделать, чтобы сообщение QForms.Application.MessageBox(. ) было как модальная форма, т.е. не льзя было уйти с него на MainForm не нажав на кнопку?


Radionov Alexey ( 2003-07-08 11:13 ) [1]

API вызов, например:
MessageBox(MainForm.Handle. MB_APPLMODAL)


NickBat ( 2003-07-08 11:13 ) [2]


wl ( 2003-07-08 11:13 ) [3]

Я сделал так: (скопировал из примера в помощи) и всё работает
QForms.Application.MessageBox(«Hello, World», «Look», [smbOK]);


Radionov Alexey ( 2003-07-08 11:15 ) [4]

Сорри. Достаточно флаг MB_APPLMODAL воткнуть в параметр Flags у Application.Messagebox


Николай В. ( 2003-07-08 11:17 ) [5]

Нет, использовать модуль Windows(именно в нем MB_APPLMODAL) нельзя, так как пишу прогу и под Kylix.


Николай В. ( 2003-07-08 11:19 ) [6]

И к стати, пример:
QForms.Application.MessageBox(«Hello, World», «Look», [smbOK]);
работает, но сообщение не модальное!
А как сделать модальное?


wl ( 2003-07-08 11:33 ) [7]

Ну не знаю тогда, попробуй ещё MessageDlg или ShowMessage.


onix ( 2003-07-08 11:44 ) [8]

MessageDlg, это как раз то что тебе нужно


Николай В. ( 2003-07-08 12:04 ) [9]

Спасибо. Пойдет.
Но если исользовать модуль QDialogs под Win, то тоже самое, а под Linux все ок.


Marat ( 2003-07-09 07:22 ) [10]

Используй функцию CreateMessageDialog. Это функция создаёт окно
сообщения в виде объекта формы, но не отображает его. Для
отображения используй обычные Show и ShowModal.Пример:

var
YourMess:TForm;
.
YourMess := CreateMessageDialog(«Осторожно!»,mtWarning,[mbOK]);
YourMess.Caption := «Предупреждение!»;
YourMess.ShowModal;
.
YourMess.Free;//Иначе будет утечка памяти.Уничтожает объект,
после чего окно уже не сможет отображаться.


wl ( 2003-07-09 09:14 ) [11]

CreateMessageDialog содержится только в Dialogs, то есть Windows-функция


Marat ( 2003-07-09 13:43 ) [12]

Sorry, с Kylix»ом не сталкивался, но, думаю, там по-любому
должно быть нечто подобное

Delphi messagebox пример

Функция MessageBox создает, отображает на экране и оперирует окном сообщений. Окно сообщений содержит определяемое программой сообщение и заголовок, плюс любую комбинацию предопределенных пиктограмм и командных кнопок.

Параметры
hWnd
Идентифицирует окно владельца блока сообщений, которым оно было создано. Если этот параметр имеет значение ПУСТО (NULL), у блока сообщения нет окна владельца.
lpText
Указывает на строку с символом нуля в конце, содержащую сообщение, которое должно быть отражено на экране.
lpCaption
Указывает на строку с символом нуля в конце, используемую для заголовка диалогового окна. Если этот параметр значение ПУСТО (NULL), то по умолчанию используется заголовок Ошибка (Error).
uType
Определяет установку битов флажков, которые обуславливают содержание и поведение диалогового окна. Этот параметр может быть комбинацией флажков из ниже следующих групп флажков.
Определите один из следующих флажков, чтобы указать кнопки, содержащиеся в окне сообщений:

  • MB_ABORTRETRYIGNORE — Окно сообщение содержит три командных кнопки: Прервать (Abort), Повторить (Retry) и Проигнорировать (Ignore).
  • MB_OK — Окно сообщение содержит одну командную кнопку: OK. Это по умолчанию.
  • MB_OKCANCEL — Окно сообщение содержит две командных кнопки: OK и Отменить (Cancel).
  • MB_RETRYCANCEL — Окно сообщение содержит две командных кнопки: Повторить (Retry) и Отменить (Cancel).
  • MB_YESNO — Окно сообщение содержит две командных кнопки: Да (Yes) и Нет (No).
  • MB_YESNOCANCEL — Окно сообщение содержит три командных кнопки: Да (Yes), Нет (No) и Отменить (Cancel).

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

  • MB_ICONEXCLAMATION, MB_ICONWARNING — В окне сообщений появляется пиктограмма восклицательного знака.
  • MB_ICONINFORMATION, MB_ICONASTERISK — В окне сообщений появляется пиктограмма, состоящая из символа i нижнего регистра в круге.
  • MB_ICONQUESTION — В окне сообщений появляется пиктограмма в виде знака вопроса.
  • MB_ICONSTOP,MB_ICONERROR,MB_ICONHAND — В окне сообщений появляется пиктограмма в виде стоп-сигнала.

Определите один из следующих флажков, чтобы указать заданную по умолчанию кнопку:

  • MB_DEFBUTTON1 — Первая кнопка — основная кнопка. MB_DEFBUTTON1 — значение по умолчанию, если не определена кнопка MB_DEFBUTTON2, MB_DEFBUTTON3 или MB_DEFBUTTON4.
  • MB_DEFBUTTON2 — Вторая кнопка — основная кнопка.
  • MB_DEFBUTTON3 — Третья кнопка — основная кнопка.
  • MB_DEFBUTTON4 — Четвертая кнопка — основная кнопка.

Определите один из следующих флажков, чтобы указать модальность диалогового окна:

  • MB_APPLMODAL — Пользователь должен ответить окну сообщений перед продолжением работы в окне, которое идентифицировано параметром hWnd. Однако, пользователь может перемещаться в окнах других прикладных программ и работать в этих окнах.В зависимости от иерархии окон в прикладной программе, пользователь может получить возможность, чтобы перемещаться в другие окна в пределах прикладной программы. Все дочерние окна родителя окна сообщений автоматически блокируются, однако выскакивающие окна — нет.MB_APPLMODAL — значение по умолчанию, если не определен флажок, ни MB_SYSTEMMODAL, ни MB_TASKMODAL.
  • MB_SYSTEMMODAL — То же самое, что и MB_APPLMODAL за исключением того, что окно сообщений имеет стиль WS_EX_TOPMOST. Используйте системно — модальные окна сообщений, чтобы уведомлять пользователя о серьезных, потенциально опасных ошибках, которые требуют немедленного внимания (например, запуск программы при нехватке памяти). Этот флажок не имеет никакого влияния на способность пользователя взаимодействовать с другими окнами, а не те, которые связаны с hWnd.
  • MB_TASKMODAL — То же самое, что и MB_APPLMODAL за исключением того, что все окна верхнего уровня, принадлежащие текущей задаче, заблокированы, если параметр hWnd имеет значение ПУСТО (NULL). Используйте этот флажок, когда вызывающая прикладная программа или библиотека не имеют доступного дескриптора окна, но все еще должны сохранять вводимые данные для других окон в текущей прикладной программе без приостановки работы других прикладных программ.

В дополнение, вы можете устанавливать ниже перечисленные флажки:
MB_DEFAULT_DESKTOP_ONLY
Рабочий стол, в настоящее время принимающий ввод, должен быть заданным по умолчанию рабочим столом; иначе, функция не выполняет задачу. Заданный по умолчанию рабочий стол — первая запущенная прикладная программа, после того, как пользователь вошел в систему.
MB_HELP
Прибавляет кнопку Справка (Help) в окно сообщений. Выбор кнопки Help или нажатие F1 генерирует событие появления Справки.
MB_RIGHT
Выравнивание текста справа.
MB_RTLREADING
Отображает на экране сообщение и текст заголовка с использованием порядка зеркального отображения для Еврейских и Арабских систем письменности.
MB_SETFOREGROUND
Окно сообщений становится приоритетным окном. Внутри Windows для окна сообщений вызывает функцию SetForegroundWindow.
MB_TOPMOST
Окно сообщений создается со стилем окна WS_EX_TOPMOST.
MB_SERVICE_NOTIFICATION
Только для Windows NT: вызывающая программа является обслуживающей по уведомлению пользователя о событии. Функция отображает окно сообщений на текущем активном рабочем столе, даже если никто из пользователей не вошел в систему компьютера.
Если этот флажок установлен, параметр hWnd должен иметь значение ПУСТО (NULL). Это такое окно сообщений, которое может появляться на другом рабочем столе, а не только на том, которое соответствует Wnd.
Для Windows NT версии 4.0, значение MB_SERVICE_NOTIFICATION изменилось. См. WINUSER.H для старых и новых значений. Windows NT 4.0 обеспечивает совместимость вниз для существующих ранее услуг, при помощи преобразования данных старых значений в новых значениях при реализации MessageBox и MessageBoxEx. Это преобразование данных делается только для исполнимых программ (.exe), которые имеют номер версии, как установлено компоновщиком, меньше чем 4.0.

Чтобы сформировать обслуживание, которое использует MB_SERVICE_NOTIFICATION и возможность запускать, и Windows NT 3.x и Windows NT 4.0, Вы имеете два пути:

  1. Во время компоновки, определите номер версии меньше чем 4.0; или
  2. Во время компоновки, определите версию 4.0.

Во время запуска, используйте функцию GetVersionEx, чтобы проверить системную версию. Тогда при продолжении запуска Windows NT 3.x, используйте MB_SERVICE_NOTIFICATION_NT3X; а для Windows NT 4.0, используйте MB_SERVICE_NOTIFICATION.
MB_SERVICE_NOTIFICATION_NT3X
Только для Windows NT: Это значение соответствует значению, определенному для MB_SERVICE_NOTIFICATION для версии 3.51 Windows NT.

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

  • IDABORT — Была выбрана кнопка Прервать (Abort).
  • IDCANCEL — Была выбрана кнопка Отменить (Cancel).
  • IDIGNORE — Была выбрана кнопка Игнорировать (Ignore).
  • IDNO — Была выбрана кнопка Нет (No).
  • IDOK — Была выбрана кнопка OK.
  • IDRETRY — Была выбрана кнопка Повторить (Retry).
  • IDYES — Была выбрана кнопка Да (Ye).

Если окно сообщений имеет кнопку Отменить (Cancel), функция возвращает значение IDCANCEL тогда, если или нажата клавиша ESC, или выбрана кнопка Cancel. Если у окна сообщений нет кнопки Cancel, нажатие на ESC не имеет никакого эффекта.

Смотри также
FlashWindow, MessageBeep, MessageBoxEx, MessageBoxIndirect, SetForegroundWindow

Размещение и совместимость MessageBox

Delphi messagebox пример

Школа программирования Delphi

Портал DelphiSchool является бесплатным проектом, обеспечивающим пользователям быстрый и легкий доступ к урокам программирования на Delphi. Сайт позволяет научиться программировать на Делфи любому, кто хочеть писать свои программы, игры, Android приложения, программы для MAC OC или IOS. Кроме уроков Delphi и статей Delphi, на сайте доступны также и видеоуроки. Практически к каждому уроку, пользователю доступен исходник, изучив который, он сможет наглядно посмотреть как работает та или иная программа, написанная на Делфи. Кроме того мы постараемся прилагать к каждому материалу (статье, уроку, видеоуроку) файлы Delphi, которые будут помогать изучить предоставленный материал.

Каждый кто решил написать свою программу, создать свое приложение, научиться программировать и т.д., найдет на DelphiSchool статьи Delphi, уроки Delphi, видеоуроки Delphi, исходники Delphi, файлы Delphi, изучит компоненты Delphi, посмотрит Delphi примеры и многое другое абсолютно бесплатно. Все о Delphi программировании теперь собрано на одном сайте.
DelphiSchool

Давайте скомпилируем и запустим нашу программу. Перед нами появится форма с 5-ю кнопками. Если нажать на кнопку ShowMessage, то перед нами появится сообщение «Это простое диалоговое окно».

Поскольку название нашего проекта мы не меняли, то он у нас называется Project1 и соответственно в заголовке этого окна мы видим это имя.

Функция 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 определяет контекст (тему) справки, которая появляется во время отображения диалогового окна при нажатии пользователем клавиши F1. Обычно! значение этого параметра равно нулю.
Ниже приведен пример использования функции MessageDlg:

Функция 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 или клавиши Esc).
Ниже приведен пример использования функции InputBox:

Функция InputQuery
Функция InputQuery (const ACaption, APrompt: String; var Value: String): Boolean отличается от функции InputBox тем, что вместо третьего параметра — строки по умолчанию — используется параметр Value, который в случае подтверждения ввода содержит введенную пользователем строку.
В качестве результата функция возвращает логическое значение, позволяющее определить, каким образом завершен диалог. Если нажата кнопка ОК, то функция возвращает значение True, если нажата кнопка Cancel или клавиша Esc — значение False.
В нижеприведенном примере показано использование функции InputQuery:

К уроку (статье) Диалоговые окна в Delphi. ShowMessage, MessageDlg, MessageDlgPos, InputBox и InputQuery прилагается исходник, посмотрев который, вы можете ознакомиться с полным исходным кодом программы и посмотреть как работает созданная программа. Исходный код сопровождается комментариями, благодаря чему вы сможете легко в нем разобраться. Но я настоятельно рекомендую делать все самостоятельно. Так вы лучше и быстрее усвоите то, о чем говорилось в этом уроке

Для того чтобы получить возможность скачать исходник Delphi к этому уроку, необходимо посетить сайт рекламодателя. После этого, появится ссылка на исходник Delphi к уроку Диалоговые окна в Delphi. ShowMessage, MessageDlg, MessageDlgPos, InputBox и InputQuery
Нажмите на эту ссылку Ссылка

Читать еще:  Ошибка звука на ноутбуке
Ссылка на основную публикацию
Adblock
detector