Вывод в окно сообщения Delphi
Как осуществляется вывод в окно сообщения Delphi? Окно сообщений применяется для того, чтобы привлечь внимание пользователей. Используя окно сообщений, программа может оповестить программиста об ошибке первичных данных или сделать запрос о подтверждении выполнения некоторой необратимой операции (удалить файл, очистить содержимое и др.).
В Delphi для вывода на экран окна сообщения зарезервирована процедура ShowMessage (либо выполняющая те же операции функция MessageDlg Delphi). Остановимся подробнее на них.
Процедура ShowMessage Delphi:
Применение процедуры ShowMessage позволяет вывести на экран окно с необходимым текстом и кнопкой подтверждения OK. Процедура ShowMessage Delphi организована следующим образом:
откуда Сообщение представляет собой текст, впоследствии выведенный в диалоговом окне.
Пример 1. Представим иллюстрацию окна сообщения, которое получено вследствие выполнения следующей инструкции:
Заметка.
Заголовок окна сообщения, которое выводится при помощи процедуры ShowMessage, содержит название приложения, задающееся на специальной вкладке Application в окне Project Options. В случае, когда названия приложения не указано, заголовок будет включать в себя имя исполняемого файла.
Функция MessageDlg Delphi:
При помощи более универсальной процедуры MessageDlg возможно размещение в окне сообщения одного из стандартных значков, например, «Внимание», а также возможно задание количества и типа командных кнопок и обозначить, какую именно кнопку щелкнул программист. На рисунке ниже представлена иллюстрация окна, выведенного вследствие выполнения следующей инструкции:
В качестве значения функции MessageDlg выступает число, проверка значения которого может показать, какая командная кнопка завершила диалог. Общий вид обращения к данной функции представлен ниже:
откуда:
- Сообщение представляет собой некоторый текст;
- Тип определяет тип сообщения, которое включает в себя информационное, предупреждающее или сообщение о критической ошибке.
Определенному типу ставится в соответствие некоторый значок. Именованная константа задает тип сообщения (табл. ниже).
- Кнопки выступают в качестве списка кнопок, которые отображаются в окне сообщения. В состав данного списка входят именованные константы, разделенные запятыми (табл. ниже), при этом весь список заключен в квадратных скобках. К примеру, для появления в окне сообщения кнопок OK и Cancel необходимо представить список Кнопки как [mbOk,mbCansel]. Помимо указанных в таблиц выше констант возможно применение и таких констант, как mbAbortRetryIgnore, а также mbYesNoCansel и др. Как правило, данные константы чаще используются в комбинациях командных кнопок диалоговых окон.
- КонтекстСправки означает параметр, обозначающий раздел справочной системы, который впоследствии выведется на экран при нажатии пользователем на клавишу F1. В случае отсутствия справочной системы, параметр КонтекстСправки должен быть приравнен нулю.

Значение функции MessageDlg определяет, на какую из командных кнопок щелкнул пользователь при работе с программой (табл. ниже).
Похожие записи:
delphi — Как сделать диалог Showmessage шире, чтобы он соответствовал тексту?
спросил
Изменено 3 года, 5 месяцев назад
Просмотрено 3к раз
Я показываю, где был сохранен файл, с помощью «Showmessage» (в Win 7). Когда путь к файлу длинный, он усекается и вставляется многоточие. например путь
C:\Users\Admin\Documents\SubFolderOne\AnotherSubFolder\MyFile.csv
отображается как
C:\Users\Admin\Documents\SubFolderOne\Ano...\MyFile.csv
Есть ли способ сделать окно сообщения шире и показать все имя файла и путь?
Я прочитал это
http://zarko-gajic.
iz.hr/displaying-long-non-breakable-text-file-path-in-messagedlg-truncationellipsis-issues/
который объясняет некоторые рассуждения и дает довольно неудовлетворительный метод для TTaskDialog, и я также понимаю, что мог бы сделать свою собственную форму, чтобы действовать так же, как Showmessage, но мне интересно, есть ли более простое решение, использующее только Showmessage.
- делфи
- диалог
4
Есть ли более простое решение, использующее только
ShowMessage?
Нет, нет.
Я могу назвать три очевидных подхода, хотя, несомненно, их больше.
Создайте свой собственный диалог
В диалогах нет ничего особенно волшебного. Вы вполне можете создать их самостоятельно и полностью контролировать их внешний вид. Недостатком, конечно, является то, что может быть трудно соответствовать внешнему виду нативной платформы.
Особенно, если учесть все различные версии Windows, которые обычно должны поддерживаться.
Используйте CreateMessageDialog и настройте эту форму Delphi
Вы можете вызвать функцию RTL , чтобы получить форму Delphi, которую можно использовать для отображения диалогового окна сообщения. Затем у вас есть возможность настроить этот диалог по своему усмотрению.
Использовать API диалога задач
API диалога задач, представленный в Vista, позволяет управлять шириной диалога. Вызовите TaskDialogIndirect и укажите ненулевое значение для cxWidth .
6
Перед ShowMessage поместите:
UseLatestCommonDialogs:= false;
Я использую Delphi 10.2, и он работает.
1
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через FacebookЗарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
| # Строки | |
|---|---|
… Майкл Джастин написал 28 сентября 2010 г.: Привет, | 11 |
… Питер Ниже ответил 28 сентября 2010 г.: Майкл Джастин писал: | 31 |
| … Крис Роллистон ответил 28 сентября 2010 г.: (фрагмент) | 11 |
… Майкл Джастин
ответил
29 сентября 2010 г. Am 28.09.2010 22:43, Крис Роллистон написал: | 32 |
… Крис Роллистон ответил 29 сентября 2010 г.: (отрывок) | 7 |
| org/UserComments» itemprop=»comment»> | 39 |
… Питер Ниже ответил 29 сентября 2010 г.: Крис Роллистон написал: | 30 |
… Майкл Джастин ответил 29-Сентябрь 2010 г.: Am 29.09.2010 17:04, Лайош Юхас написал: | 21 |
… Лайош Юхас ответил 29 сентября 2010 г.: Майкл Джастин писал: |
Определенному типу ставится в соответствие некоторый значок. Именованная константа задает тип сообщения (табл. ниже).
.. / on embarcadero.public.delphi.rtl / NNTP Conversation
Возможно, вы вместо этого используете MessageBox?
:
