232 / 181 / 104 Регистрация: 19.03.2010 Сообщений: 949 |
|
1 |
|
18.06.2011, 01:28. Показов 31557. Ответов 13
Здарвствуйте. Подскажите пожалуйста, как сделать так, чтобы вместо Project1 в шапке сообщения было какое-нибудь другое сообщение, например ‘Hello world’? Ниже привожу скриншот, с помощью которого вы думаю поймете меня Изображения
0 |
324 / 316 / 84 Регистрация: 03.03.2010 Сообщений: 1,364 |
|
18.06.2011, 01:29 |
2 |
SunEclipse, имя проекта нужно изменить в опциях.
1 |
deathNC 1904 / 1015 / 123 Регистрация: 08.12.2009 Сообщений: 2,792 Записей в блоге: 2 |
||||
18.06.2011, 01:32 |
3 |
|||
Или так
текст и заголовок типа PWideChar(PAnsiChar)…
2 |
Romantik_FM 324 / 316 / 84 Регистрация: 03.03.2010 Сообщений: 1,364 |
||||||||
18.06.2011, 01:39 |
4 |
|||||||
Добавлено через 2 минуты
1 |
232 / 181 / 104 Регистрация: 19.03.2010 Сообщений: 949 |
|
18.06.2011, 01:55 [ТС] |
5 |
Спасибо вам огромное
0 |
5683 / 2274 / 466 Регистрация: 20.11.2009 Сообщений: 7,655 Записей в блоге: 1 |
|
18.06.2011, 09:17 |
6 |
Мне лично нравится больше MessageDlg(‘Тут название cообщения’, mtWarning,[mbOK],0); диалог с появлением надписи взятой из самой Windows и еще иконка соответствующая вставляется, ошибка, информация и тому подобное, набор кнопок выбрать можно, которые записываются в квадратных скобках, иконка и текст окна выбирается там где mtWarning стоит у меня в примере это еще как вариант пусть будет для выбора
1 |
232 / 181 / 104 Регистрация: 19.03.2010 Сообщений: 949 |
|
18.06.2011, 09:18 [ТС] |
7 |
Не, это я знал. Мне не сообщение об ошибке надо вывести, а простое сообщение
0 |
0 / 0 / 0 Регистрация: 13.10.2014 Сообщений: 35 |
|
04.10.2015, 16:04 |
8 |
Подскажите как в сообщение вставить содержимое edit1.text . Года два назад делал, сейчас всё перевернул не могу реализовать.
0 |
Arcor 5683 / 2274 / 466 Регистрация: 20.11.2009 Сообщений: 7,655 Записей в блоге: 1 |
||||
04.10.2015, 16:34 |
9 |
|||
1 |
2 / 2 / 2 Регистрация: 28.02.2016 Сообщений: 158 |
|
04.10.2016, 19:39 |
10 |
Самый лучший ответ (я так считаю), потому что не нужно добавлять во все строки с ShowMessage дополнительный код или изменять его. Супер просто.
0 |
4881 / 2754 / 848 Регистрация: 04.10.2012 Сообщений: 10,039 |
|
06.10.2016, 19:00 |
11 |
Hinc, вообще, достаточно переименовать исполняемый (exe) файл программы, и не делать из этого историю)) Не по теме: Любители старых тем…
0 |
0 / 0 / 0 Регистрация: 09.12.2015 Сообщений: 17 |
|
09.11.2016, 22:30 |
12 |
может, для кого-то, ищущего ответ, будет полезно еще одно решение проблемы: во вкладке project выбрать options-> application->в title писать,что нужно.
0 |
botsik 262 / 262 / 140 Регистрация: 05.06.2016 Сообщений: 1,247 Записей в блоге: 1 |
|
09.11.2016, 22:49 |
13 |
Elena7, messageDlg …
0 |
northener |
10.11.2016, 02:14
|
Не по теме: Elena7, автор вопроса просил изменить только одну сущность. А после применения вашего совета он изменит много больше.
0 |
Here’s a bit of code I wrote, you might want to use it note for note.
function SetHook(Code : Integer; wparam : Integer; LParam : Integer) : Longint; stdcall;
function HookWndProc(wnd : HWND ;uMsg : UINT; wParam : WPARAM; lParam : LPARAM ) : LRESULT; stdcall;
var
CaptHook : HHOOK;
GHookProc : TFNWndProc;
GOldHookProc : TFNWndProc;
implementation
uses Messages, Types, Graphics;
function SetHook(Code : Integer; wparam : Integer; LParam : Integer) : Longint; stdcall;
var
pwp : CWPSTRUCT;
begin
if Code = HC_ACTION then
begin
pwp := CWPStruct(Pointer(LParam)^);
if pwp.message = WM_INITDIALOG then
begin
GOldHookProc := TFnWndProc(SetWindowLong(pwp.hwnd, GWL_WNDPROC, LongInt(GHookProc)));
end;
end;
result := CallNextHookEx(CaptHook, Code, wparam, lparam);
end;
function HookWndProc(wnd : HWND ;uMsg : UINT; wParam : WPARAM; lParam : LPARAM ) : LRESULT;
var
DC : HDC;
WndRect : Trect;
BR: HBRUSH;
WndText : array[1..20] of char;
begin
result := CallWindowProc(GOldHookProc, wnd, uMsg, wParam, lParam );
if uMsg = WM_ERASEBKGND then
begin
GetWindowText(wnd, @wndText, 20);
//do stuff here (I colored the button red)
DC := GetDC(wnd);
WndRect := Rect(0, 0, 200,200);
BR := CreateSolidBrush(clRed);
FillRect(dc, WndRect, BR);
DeleteObject(BR);
ReleaseDC(wnd, dc);
end;
end;
…
Put this in your Form Create where you want to make the funky message boxes
uses windows;
…
CaptHook := SetWindowsHookEx(WH_CALLWNDPROC, @SetHook, 0, GetCurrentThreadId);
GHookProc := @HookWndProc;
So, what this does is hook into Windows’ dialog popup functions and you can get the context for the dialog and draw on it.
#delphi #delphi-2006
#delphi #delphi-2006
Вопрос:
В Delphi вы можете изменить заголовок ShowMessage
диалогового окна, потому что по умолчанию оно принимает мое имя exe.
И могу ли я изменить цвет фона, размер того же?
Ответ №1:
Вы можете создавать свои собственные пользовательские диалоги, используя CreateMessageDialog
функцию delphi.
Пример ниже:
var
Dlg: TForm;
begin
Dlg := CreateMessageDialog('message', mtInformation, [mbOk], mbOK);
// Treat Dlg like any other form
Dlg.Caption := 'Hello World';
try
// The message label is named 'message'
with TLabel(Dlg.FindComponent('message')) do
begin
Font.Style := [fsUnderline];
// extraordinary code goes here
end;
// The icon is named... icon
with TPicture(Dlg.FindComponent('icon')) do
begin
// more amazing code regarding the icon
end;
Dlg.ShowModal;
finally
Dlg.Free;
end;
и, конечно, вы можете динамически вставлять в эту форму и другие компоненты.
Комментарии:
1. Я никогда не знал
FindComponent
о существовании. 1!
Ответ №2:
В диалоговом Application.Title
окне в качестве заголовка будет использоваться содержимое. Таким образом, вы могли бы установить это перед вызовом ShowMessage
.
Однако, если вы хотите показать несколько диалоговых окон с разными заголовками, было бы удобнее вызвать функцию Windows MessageBox
. Конечно, если у вас более старая версия Delphi, это приведет к более естественному восприятию вашего диалога.
procedure MyShowMessage(const Msg, Caption: string);
begin
MessageBox(GetParentWindowHandleForDialog, PChar(Msg), PChar(Caption), MB_OK);
end;
function GetParentWindowHandleForDialog: HWND;
begin
//we must be careful that the handle we use here doesn't get closed while the dialog is showing
if Assigned(Screen.ActiveCustomForm) then begin
Result := Screen.ActiveCustomForm.Handle;
end else if Assigned(Application.MainForm) then begin
Result := Application.MainFormHandle;
end else begin
Result := Application.Handle;
end;
end;
Если вы хотите управлять цветом и размером, то наиболее очевидным вариантом является создание собственного диалогового окна в качестве TForm
потомка.
Комментарии:
1. я не могу найти
MianWindowHandle
в BDS 2006 возможность использования пользовательской формы в качестве диалогового окна2. Я неправильно запомнил. Это MainFormHandle в Delphi. Я отвечаю на слишком много вопросов WinForms!!!
3. но это нарушает
Showmodal
свойствоShowmessages
4. Извините, я не могу понять этот комментарий.
5. когда вы отображаете окно MessageDialog с помощью a
Showmessage
, управление приложением переходит в диалоговое окно Showmessage, но в этом случае управление все еще находится в приложении приMessageBox
вызове
Ответ №3:
Вот немного кода, который я написал, возможно, вы захотите использовать его примечание к примечанию.
function SetHook(Code : Integer; wparam : Integer; LParam : Integer) : Longint; stdcall;
function HookWndProc(wnd : HWND ;uMsg : UINT; wParam : WPARAM; lParam : LPARAM ) : LRESULT; stdcall;
var
CaptHook : HHOOK;
GHookProc : TFNWndProc;
GOldHookProc : TFNWndProc;
implementation
uses Messages, Types, Graphics;
function SetHook(Code : Integer; wparam : Integer; LParam : Integer) : Longint; stdcall;
var
pwp : CWPSTRUCT;
begin
if Code = HC_ACTION then
begin
pwp := CWPStruct(Pointer(LParam)^);
if pwp.message = WM_INITDIALOG then
begin
GOldHookProc := TFnWndProc(SetWindowLong(pwp.hwnd, GWL_WNDPROC, LongInt(GHookProc)));
end;
end;
result := CallNextHookEx(CaptHook, Code, wparam, lparam);
end;
function HookWndProc(wnd : HWND ;uMsg : UINT; wParam : WPARAM; lParam : LPARAM ) : LRESULT;
var
DC : HDC;
WndRect : Trect;
BR: HBRUSH;
WndText : array[1..20] of char;
begin
result := CallWindowProc(GOldHookProc, wnd, uMsg, wParam, lParam );
if uMsg = WM_ERASEBKGND then
begin
GetWindowText(wnd, @wndText, 20);
//do stuff here (I colored the button red)
DC := GetDC(wnd);
WndRect := Rect(0, 0, 200,200);
BR := CreateSolidBrush(clRed);
FillRect(dc, WndRect, BR);
DeleteObject(BR);
ReleaseDC(wnd, dc);
end;
end;
…
Поместите это в свою форму, создайте, где вы хотите сделать фанковые окна сообщений
uses windows;
…
CaptHook := SetWindowsHookEx(WH_CALLWNDPROC, @SetHook, 0, GetCurrentThreadId);
GHookProc := @HookWndProc;
Итак, что это делает, так это подключается к функциям всплывающего окна Windows, и вы можете получить контекст для диалогового окна и использовать его.
Комментарии:
1. @David Мне пришлось написать это для внутреннего приложения, потому что некоторые технические специалисты хотели иметь красные кнопки на важных предупреждающих сообщениях. По сути, это хук, который можно рисовать на «холсте» открывшегося диалогового окна. Вы можете рисовать в том месте, где находятся комментарии.
← →
Катерина
(2002-05-14 10:54)
[0]
Нельзя ли как-нибудь поменять заголовок окна, формируемого ShowMessage, из стандартного (имя проекта) на свое. Или нужно воспользоваться другой процедурой (кроме, конечно, создания еще одной формы)? Какой? Добрый день!
← →
SVM
(2002-05-14 10:57)
[1]
Попробуй CreateMessageDialog, а потом поменяй Caption.
← →
Song
(2002-05-14 10:58)
[2]
Всё проще: TApplication.Title
← →
Romkin
(2002-05-14 11:01)
[3]
Есть функция Application.MessageBox:
Application.MessageBox(PChar(strMsg), PChar(strCaption), MB_OK + MB_DEFBUTTON1);
← →
Катерина
(2002-05-14 11:21)
[4]
Спасибо! Application.MessageBox как раз то, что нужно. Хотель бы только подробнее узнать о последнем парамере процедуры, который integer и по умолчанию 0. Догадываюсь, что он связан с кнопками, но как? Очень заранее благодарна.
← →
Romkin
(2002-05-14 11:38)
[5]
Это просто оболочка для системного MessageBox, список флагов можно посмотреть в Windows DSK (MessageBox)
MB_ABORTRETRYIGNORE The message box contains three push buttons: Abort, Retry, and Ignore.
MB_OK The message box contains one push button: OK. This is the default.
MB_OKCANCEL The message box contains two push buttons: OK and Cancel.
MB_RETRYCANCEL The message box contains two push buttons: Retry and Cancel.
MB_YESNO The message box contains two push buttons: Yes and No.
MB_YESNOCANCEL The message box contains three push buttons: Yes, No, and Cancel.
MB_DEFBUTTON1 The first button is the default button. MB_DEFBUTTON1 is the default unless MB_DEFBUTTON2, MB_DEFBUTTON3, or MB_DEFBUTTON4 is specified.
MB_DEFBUTTON2 The second button is the default button.
MB_DEFBUTTON3 The third button is the default button.
MB_DEFBUTTON4 The fourth button is the default button.
и тд
← →
Юрий Федоров
(2002-05-14 11:38)
[6]
см.Help по функции MessageBox из API
Вот небольшой код, который я написал, вы можете использовать его примечание для заметки.
function SetHook(Code : Integer; wparam : Integer; LParam : Integer) : Longint; stdcall;
function HookWndProc(wnd : HWND ;uMsg : UINT; wParam : WPARAM; lParam : LPARAM ) : LRESULT; stdcall;
var
CaptHook : HHOOK;
GHookProc : TFNWndProc;
GOldHookProc : TFNWndProc;
implementation
uses Messages, Types, Graphics;
function SetHook(Code : Integer; wparam : Integer; LParam : Integer) : Longint; stdcall;
var
pwp : CWPSTRUCT;
begin
if Code = HC_ACTION then
begin
pwp := CWPStruct(Pointer(LParam)^);
if pwp.message = WM_INITDIALOG then
begin
GOldHookProc := TFnWndProc(SetWindowLong(pwp.hwnd, GWL_WNDPROC, LongInt(GHookProc)));
end;
end;
result := CallNextHookEx(CaptHook, Code, wparam, lparam);
end;
function HookWndProc(wnd : HWND ;uMsg : UINT; wParam : WPARAM; lParam : LPARAM ) : LRESULT;
var
DC : HDC;
WndRect : Trect;
BR: HBRUSH;
WndText : array[1..20] of char;
begin
result := CallWindowProc(GOldHookProc, wnd, uMsg, wParam, lParam );
if uMsg = WM_ERASEBKGND then
begin
GetWindowText(wnd, @wndText, 20);
//do stuff here (I colored the button red)
DC := GetDC(wnd);
WndRect := Rect(0, 0, 200,200);
BR := CreateSolidBrush(clRed);
FillRect(dc, WndRect, BR);
DeleteObject(BR);
ReleaseDC(wnd, dc);
end;
end;
…
Поместите это в свою форму Create, где вы хотите сделать забавные окна сообщений.
uses windows;
…
CaptHook := SetWindowsHookEx(WH_CALLWNDPROC, @SetHook, 0, GetCurrentThreadId);
GHookProc := @HookWndProc;
Таким образом, это подключается к функциям всплывающих окон диалогового окна Windows, и вы можете получить контекст для диалогового окна и использовать его.
Окна
диалогов 5
Процедура
ShowMessage
Модуль
Dialogs
procedure
ShowMessage(const Msg: string);
Отображает
окно сообщения с кнопкой OK.
Вызов
ShowMessage отображает простое
окно сообщения с кнопкой OK.
Текст сообщения задается параметром
Msg. Заголовок окна
совпадает с именем выполняемого файла
приложения.
При
необходимости анализировать ответ
пользователя на сообщение пользуйтесь
функцией Delphi MessageDlg.
Примеры:
1.)
ShowMessage(‘Работа приложения
успешно завершена.’);
2. ) В
приведенном ниже примере предполагается,
что целые переменные N1 и
N2 содержат соответствующие
числа, которые переводятся в строки
функцией IntToStr. Сообщение,
приведенное в этом примере проще
реализовать процедурой ShowMessageFmt.
ShowMessage(‘Задано
‘ + IntToStr(N1) + ‘ параметров из ‘
+
IntToStr(N2));
ShowMessageFmt
процедура
Модуль
Dialogs
procedure
ShowMessageFmt(const Msg: string; Params: array of const);
Отображает
окно форматированного сообщения с
кнопкой OK.
Вызов
ShowMessageFmt отображает окно
сообщения с кнопкой OK.
Параметр Msg задает
строку описания формата, а параметр
Params задает массив
параметров, форматируемых строкой Msg.
Заголовок окна совпадает с именем
выполняемого файла приложения.
Пример
ShowMessageFmt(‘Задано
%d параметров из %d
‘, [N1, N2]);
Функция
TApplication.MessageBox
function
MessageBox(Text, Caption: PChar; Flags: Longint): Integer;
Функция
MessageBox является методом переменной
Application типа TApplication, доступной в любом
проекте Delphi. Это метод является наиболее
удачным способом отображения диалоговых
окон. Он отображает диалоговое окно с
заданными кнопками, сообщением и
заголовком и позволяет проанализировать
ответ пользователя. Во многих отношениях
это окно подобно окнам, создаваемым
функциями MessageDlg и CreateMessageDialog. Но имеются
и существенные отличия, связанные с
возможностью русификации окна. Заголовок
окна может быть написан по-русски, что
отличает эту функцию от функции MessageDlg
(впрочем, в окне, созданном CreateMessageDialog,
это тоже можно сделать). Другим приятным
отличием являются русские надписи на
кнопках (в русифицированных версиях
Windows).
Функция
MessageBox инкапсулирует функцию MessageBox API
Windows.
Параметр
Text представляет собой текст сообщения,
которое может превышать 255 символов.
Для длинных сообщений осуществляется
автоматический перенос текста. Параметр
Caption представляет собой текст
заголовка окна. Он тоже может превышать
255 символов, но не переносится. Так что
длинный заголовок приводит к появлению
длинного и не очень красивого диалогового
окна.
Параметр
Flags представляет собой множество
флагов, определяющих вид и поведение
диалогового окна. Этот параметр может
комбинироваться операцией сложения по
одному флагу из следующих групп.
Флаги
кнопок, отображаемых в диалоговом окне.
Флаг Значение
(в скобках даны надписи в русифицированных
версиях Windows)
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_DEFBUTTON2 Вторая
кнопка.
MB_DEFBUTTON3 Третья
кнопка.
MB_DEFBUTTON4 Четвертая
кнопка.
Флаги
модальности
MB_APPLMODAL Пользователь
должен ответить на запрос, прежде чем
сможет продолжить работу с приложением.
Но он может перейти в окна другого
приложения. Он может также работать со
всплывающими окнами данного приложения.
Этот флаг принят по умолчанию.
MB_SYSTEMMODAL То же самое, что MB_APPLMODAL, но окно
диалога отображается в стиле WS_EX_TOPMOST,
то есть всегда остается поверх других
окон, даже если пользователь перешел к
другим приложениям. Используется для
предупреждения о серьезных ошибках,
требующих немедленного вмешательства.
Некоторые
дополнительные флаги (могут задаваться
оба флага)
Флаг Пояснение
MB_HELP Добавляет
в окно кнопку Help (Справка), щелчок на
которой или нажатие клавиши F1 генерирует
событие Help.
MB_TOPMOST Помещает
окно всегда сверху (в стиле WS_EX_TOPMOST).
Возможны
еще некоторые флаги, определяющие
характер поведения окна при работе в
сети нескольких пользователей, позволяющие
отображать тексты справа налево (для
восточных языков) и т.п.
Функция
возвращает нуль, если не хватает памяти
для создания диалогового окна. Если же
функция выполнена успешно, то возвращаемая
величина свидетельствует о следующем:
Значение Численное
значение Пояснение
IDABORT 3 Выбрана
кнопка Abort (Стоп).
IDCANCEL 2 Выбрана
кнопка Cancel (Отмена) или нажата клавиша
Esc.
IDIGNORE 5 Выбрана
кнопка Ignore (Пропустить).
IDNO 7 Выбрана
кнопка No (Нет).
IDOK 1 Выбрана
кнопка OK.
IDRETRY 4 Выбрана
кнопка Retry (Повтор).
IDYES 6 Выбрана
кнопка Yes (Да).
Ниже
приведен текст, предусматривающий
проверку правильности ввода данных
перед пересылкой записи в базу данных.
if
(проверка введенных данных)
then
begin
if
(Application.MessageBox(
‘Хотите занести текущую запись в базу
данных?’,
‘Подтвердите занесение в базу данных’,
MB_YESNOCANCEL + MB_ICONQUESTION) <> IDYES)
then begin
DataSet.Cancel;
Abort;
end
end
else begin
Application.MessageBox(‘Ошибочные данные’,’Ошибка’,
MB_ICONSTOP);
Abort;
end;
MessageDlg
– функция
Модуль Dialogs
function
MessageDlg(const Msg: string; AType: TMsgDlgType;
AButtons: TMsgDlgButtons;
HelpCtx: Longint):
Word;
Отображает
диалоговое окно сообщений в центре
экрана.
Вызов
MessageDlg отображает диалоговое окно и
ожидает ответа пользователя. Сообщение
в окне задается параметром функции Msg.
Вид
отображаемого окна задается параметром
AType. Возможные значения этого
параметра:
Значение Описание
mtWarning Окно
замечаний, содержащее желтый восклицательный
знак.
mtError Окно
ошибок, содержащее красный стоп-сигнал.
mtInformation Информационное
окно, содержащее голубой символ «i».
mtConfirmation Окно
подтверждения, содержащее зеленый
вопросительный знак.
mtCustom Заказное
окно без рисунка. Заголовок соответствует
имени выполняемого файла приложения.
Параметр
AButtons определяет, какие кнопки будут
присутствовать в окне. Тип TMsgDlgBtns
параметра AButtons является множеством,
которое включает различные кнопки.
Возможные значения видов кнопок:
Значение Описание
mbYes Кнопка
с надписью ‘Yes’
mbNo Кнопка
с надписью ‘No’
mbOK Кнопка
с надписью ‘OK’
mbCancel Кнопка
с надписью ‘Cancel’
mbHelp Кнопка
с надписью ‘Help’
mbAbort Кнопка
с надписью ‘Abort’
mbRetry Кнопка
с надписью ‘Retry’
mbIgnore Кнопка
с надписью ‘Ignore’
mbAll Кнопка
с надписью ‘All’
Список
необходимых кнопок заключается в
квадратные скобки [ ], поскольку параметр
AButtons является множеством. Если внутри
скобок список отсутствует, в окне не
будет ни одной кнопки и пользователю
придется закрывать окно системными
кнопками Windows.
Кроме
множества значений, соответствующих
отдельным кнопкам, в Delphi определены три
константы, соответствующие часто
используемым сочетаниям кнопок:
Значение Описание
mbYesNoCancel
Включает в окно кнопки Yes, No и Cancel
mbOkCancel Включает
в окно кнопки OK и Cancel
mbAbortRetryIgnore Включает
в окно кнопки Abort, Retry и Ignore
Эти
константы являются предопределенными
множествами. Поэтому при их использовании
их не надо заключать в квадратные скобки
[ ].
Параметр
HelpCtx определяет экран контекстной
справки, соответствующий данному
диалоговому окну. Этот экран справки
будет появляться при нажатии пользователем
клавиши F1. Если вы справку не планируете,
при вызове MessageDlg надо задать нулевое
значение параметра HelpCtx..
Функция
MessageDlg возвращает значение, соответствующее
выбранной пользователем кнопке. Возможные
возвращаемые значения:
mrNone
mrAbort mrYes
mrOk
mrRetry mrNo
mrCancel
mrIgnore mrAll
Функция
MessageDlg очень полезна для быстрого создания
прототипа приложения и проверки
диалогового взаимодействия с пользователем.
Но у нее есть заметный недостаток: в
заголовках и надписях на кнопках тексты
английские, так что при использовании
русских сообщений получается смесь
русского с английским.
Имеется
также функция MessageDlgPos, во всем аналогичная
функции MessageDlg, но отображающее окно в
заданном месте экрана.
При
выводе простых сообщений без необходимости
анализировать ответ пользователя удобно
использовать другие процедуры Delphi —
ShowMessage и ShowMessageFmt.
Примеры:
1.
Заключительный диалог при окончании
работы приложения.
if
MessageDlg(‘Действительно хотите закончить
приложение?’,
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
MessageDlg(‘Работа приложение закончена’,
mtInformation,
[mbOk], 0);
Close;
end;
Первый
вызов MessageDlg приводит к отображению окна
типа mtConfirmation с вопросом о завершении
приложения. Если пользователь нажимает
кнопку Yes, то выводится второе окно типа
mtInformation с сообщением о завершении.
1.
Сообщение об ошибке и замечание.
on Exception do
begin
MessageDlg(‘Произошла
ошибка.’, mtError,
[mbOk], 0);
MessageDlg(‘Будьте
внимательнее.
‘, mtWarning,
[mbOk], 0);
end;
3. В
каком-то диалоге, после редактирования
пользователем записи ему предлагается
вопрос о сохранении ее в базе данных.
Если пользователь выбирает кнопку Yes,
запись сохраняется методом Post; если
пользователь выбирает кнопку No, результаты
редактирования уничтожаются методом
Cancel; если же пользователь выбирает
кнопку Cancel, диалог закрывается.
case
MessageDlg(‘Занести запись
в БД?’,
mtCustom,
mbYesNoCancel, 0) of
mrYes: DataSet1.Post;
mrNo: DataSet1.Cancel;
mrCancel:
Close;
end;
В вызове
MessageDlg использован тип mtCustom, в результате
чего в заголовке окна указано имя
приложения. Для задания кнопок использована
константа mbYesNoCancel
Соседние файлы в папке _Delphi_1курс лекции
- #
23.03.20151.13 Mб23~WRL3549.tmp
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- Up to Parent: Vcl.Dialogs
Delphi
procedure ShowMessage(const Msg: string); procedure ShowMessage(const Msg: string; TaskDlgFlags: TTaskDialogFlags);
C++
extern DELPHI_PACKAGE void __fastcall ShowMessage(const System::UnicodeString Msg)/* overload */;
Contents
- 1 Properties
- 2 Description
- 2.1 See Also
- 2.2 Code Examples
Properties
Type | Visibility | Source | Unit | Parent |
---|---|---|---|---|
procedure function |
public |
Vcl.Dialogs.pas Vcl.Dialogs.hpp |
Vcl.Dialogs | Vcl.Dialogs |
Description
Displays a message box with an OK button.
Call ShowMessage to display a simple message box with an OK button. The name of the application’s executable file appears as the caption of the message box.
ShowMessage parameters are described below:
- Msg parameter is the message string that appears in the message box.
- TaskDlgFlags parameter is a set of flags, allowing to control a dialog behavior. The supported options are
tfAllowDialogCancellation
,tfSizeToContent
, andtfRtlLayout
. The default TaskDlgFlags is an empty set.
Note: The original ShowMessage uses tfAllowDialogCancellation
as default, and under Right-to-left script tfRtlLayout
is added. No other default options are added.
Note: To display a message in a message box with other buttons or icons, use the MessageDlg function.
Note: If the user types Ctrl+C
in the message box, the text of the message is copied to the clipboard.
See Also
- TTaskDialogFlag
- MessageDlg
- MessageDlgPos
- ShowMessageFmt
- TApplication
- ShowMessagePos
- Dialogs Support Routines
Code Examples
- FileSearch (C++)
- FileSearch (Delphi)