Delphi как изменить название showmessage

ShowMessage, заменить текст в шапке Delphi Решение и ответ на вопрос 321915

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

Или так

Delphi
1
MessageBox(Handle, 'Текст', 'Заголовок', 0);

текст и заголовок типа PWideChar(PAnsiChar)…



2



Romantik_FM

324 / 316 / 84

Регистрация: 03.03.2010

Сообщений: 1,364

18.06.2011, 01:39

4

Delphi
1
MessageBox(0, 'привет', 'загаловок', MB_ICONWARNING or MB_OK);

Добавлено через 2 минуты
или так

Delphi
1
2
Application.MessageBox('Привет', 'Заголовок', MB_OK + MB_ICONQUESTION + 
  MB_DEFBUTTON2);



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

Delphi
1
ShowMessage(Edit1.Text);



1



2 / 2 / 2

Регистрация: 28.02.2016

Сообщений: 158

04.10.2016, 19:39

10

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



0



Эксперт Pascal/Delphi

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


    ShowMessage, заменить текст в шапке

Не по теме:

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, and tfRtlLayout. 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)

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Delphi unknown error during init delphi
  • Delphi try except error
  • Delphi thread error неверный дескриптор 6
  • Delphi socket error 11004
  • Delphi socket error 11001

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии