Showmessage lazarus как изменить заголовок

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

232 / 181 / 104

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

Сообщений: 949

1

18.06.2011, 01:28. Показов 31701. Ответов 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



 
Катерина
 
(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


������� ������� RFpro.ru:
���������� ������
���������������� ������� �� ���� Linux x64 � Windows x64

�������� ������� RFPRO.RU

������ �������� �� ������ ��������

����� ������
������: ��������
�������: 10653
� �������� ������� »
��������� �������
������: ������-�������
�������: 7078
� �������� ������� »
Boriss
������: ��������
�������: 1191
� �������� ������� »

/ ���������� � ���� / ���������������� / Delphi � Lazarus

����� �������: 1654
���� ������: 03.12.2013, 20:00
������������� ��������: ����̣�� �̣�� aka Verena (��������)
����������� / ���������: 65 / 43
�������� / �������: 3 / 13

������������ # 39779: ������������! ����������, ����������, ��� ������ ������ ��������� � ��������� ShowMessage()? ������� �������!…


������������ # 30478: ������� �������� !!!
��� ������
���������� ��� ����� ������� ����������� ������� ��� ����������
� ��������� ��������� �����������(�� ������,�������) � ������������ �� ������ ���������
� ���� �� ����� ������ ???
..


������������ # 29713: ����� ������ ������� �������.
����� ��� ���� ������ ���� ������.
��� ������� ������ �� ������� �������, �� ���� ����� ������ ������ ������� � ������ ���� �� �������, � ������ �� ����� ������� �� ����?
����� ������ ���….


������������ # 39779:

������������! ����������, ����������, ��� ������ ������ ��������� � ��������� ShowMessage()? ������� �������!

���� ��������: 09.04.2006, 09:08
������ �����: ���������� �������� ����������
����� �������: 6
�������� ������-������������ »


������������� �ң��� �.�. (����������):

������������, ���������� �������� ����������!
����� ShowMessage — �����, � ��� ����� MessageBox — ��������:

Application.MessageBox(‘Hello!’,‘Title’);


������������� �������� �.�.:

������������, ���������� �������� ����������!

�������������� ������� ������� TApplication:

Application.MessageBox(‘����� ����� ���������’, ‘����� ��������� ���������’, MB_OK);

�������!


������������� ������� ����� ���������� (�������):

������������, ���������� �������� ����������!
�������� ��������� �������, ���������� � ������� ShowMessage �����, �� ��� �������� ������ ��� ����� � � ������� ������� SetWindowText ������ ���������.
����� � ����������� ������������ �������:
int MessageBox(
HWND hWnd, // ����� ������������� ����
PChar lpText, // ����� ���������
PChar lpCaption, // ����� ���������
Cardinal uType /* ����� ���� ���������, �������� ������������� ����������� � ��������� MB_ */
);
������ �������� � ����������.
�����!

����������:


������������� Mrdimon:

������������, ���������� �������� ����������!
ShowMessage ���������� ������� ���� ��������� � ������� OK. ����� ��������� �������� ���������� Msg. ��������� ���� ��������� � ������ ������������ ����� ����������.
������� ����� ������� ��������� ShowMessageFmt, ����������� �������� ��������������� ���������.
��� ������������� ������������� ����� ������������ �� ��������� ����������� �������� Delphi MessageDlg.
�����! :-)


������������� Diman_A:

������������, ���������� �������� ����������!
Showmessage �� ������ �����, ����� ���� ����, ��������, �����-������ debug ���� �� ��������� ��������. � ������������ ��� �� ������ — ������ ���-��. ��������� ������������ MessageBox:
MessageBox(form1.Handle, ‘����� ���������’, ‘���������’, MB_ICONWARNING OR MB_YESNOCANCEL);
������ ���� ������ � ���������:
MB_ICONWARNING;
MB_ICONERROR;
MB_ICONINFORMATION;
���� ������:
MB_OK;
MB_OKCANCEL;
MB_ABORTRETRYIGNORE;
MB_YESNOCANCEL;
MB_YESNO;
MB_RETRYCANCEL;


������������� Kazakh:

������������, ���������� �������� ����������!
� ������������������ �������, ��� ��������� ��� ���� ShowMessage ������� ����� �� ��� � �������� ����������.
������� ���� �� ����� ������ ������� ������� ���:
Application.Title:=’��� ����� ���������’;
����� ������ ������� ShowMessage.
� �� ����������� Application.MessageBox. ��� �� ��������� ������ �ӣ ��� ������.
� ���� �� � ShowMessage � ���� ���� �������� (�� �������� �� �������� ����), ���� ���������� �� ��������� ���� MDI ���������� ��� �������� ������ �������� �����. �
Application.MessageBox � ����� ������ �� �������� ���� ������� :-)

������������ # 30478:

������� �������� !!!
��� ������
���������� ��� ����� ������� ����������� ������� ��� ����������
� ��������� ��������� �����������(�� ������,�������) � ������������ �� ������ ���������
� ���� �� ����� ������ ???

���� ��������: 29.11.2005, 21:55
������ �����: Andrey_666
����� �������: 4
�������� ������-������������ »


������������� Ujin Antikvar:

������������, Andrey_666!

���� �������� ����� �������������� «100 ����������� ������ ���������� ���������� Delphi»

��� �� ������ �������� � Help Delphi (���� ���� �� �������)

�������� ��� �� E-mail ���� ���� � � ��� �� �����

� ���������,
Ujin Antikvar!!!

����������:


������������� Warrior:

������������, Andrey_666!
����� �� �������� � ��������������.
�� ��� ���������� ������ ������������ ������.
����� ���� ����� �������� �������� �� ��, ��� � ����� ����������� ���������� �� ������ � ������.


������������� Buenos dias (����������):

������������, Andrey_666!
���� ������� �.�. ������������� «100 �����������»
���� ��ϣ ����.


������������� ��������� ����� ���������� (������������):

������������, Andrey_666!
�������� �� ����� http://delphiplus.org — ��� ����� �������� ������������ �� �������.

������������ # 29713:

����� ������ ������� �������.
����� ��� ���� ������ ���� ������.
��� ������� ������ �� ������� �������, �� ���� ����� ������ ������ ������� � ������ ���� �� �������, � ������ �� ����� ������� �� ����?
����� ������ ���.

���� ��������: 17.11.2005, 12:43
������ �����: Voldmir
����� �������: 3
�������� ������-������������ »


������������� LanK (������������):

������������, Voldmir!

��������… ��. ����������.

� �� �������… ���������� ������ ������� ������� � �������� ���������� �������.

����������:


������������� ����� ����� ��� sir Henry (������� ���������):

������������, Voldmir!
���, ��� ������. ���� � ��� ������ �� (InterBase, ��������), �� ����� ������� View � ������ ����, � �� �� ����� View ������� ������� �� ������ ��� ����.


������������� ������������� ������ ���������:

������������, Voldmir!

1) ��������� �����, ������ ������ ��� ������� � ���� Where?
2) ���� ��� ����� �� ����������� ����������, �� ������ 2 Query, ���� ������ ������ ������ � ������������ �� ���� �������� ����, ������ ������ ������ �� ���������� ���. ��� ����� ����� ��� ���������, �� ������� ������� ��������.
3) ������� ������� —
������� ������������� (View) �� ������� �������, ������ ������ ������� �� View ��� �� �������.
������, ������ ��� View ����� �����������, � ������ ����� ���� � ������ ���������� ���� ���� ������ — ������ ������ ��� ������ View?

��������������: ������������� ������ ���������
���� ��������: 18.11.2005, 11:43

������� ������:

�� �������
0
�������!


������� ������ | ������ ������ ���������

������� ��������
 | 
����� ����������
 | 
�������� ������������

����������� ���������
 | 
������������ �����/������

������� ��������!
������� ������� RFPRO.RU ���������� ��� �� ��, ��� �� ����������� ������ ��������. �� ������ ��� ������ ��������� ������ ��������. �� ���������.
����������, ������� ���. ���� ����� ����� ���, ���� ��� ���������� �����, �� ������ ������������� ������ —
��� ����� � ������ ������ ���� ����������� ������. �� ������ �������� ����� � ������ �������. ��� ����� ����� ����� ���� ������.
�� ������ ������� ������������� � ������ �������, ������� ��� �����, ������� ������,
������� ������ ���� ��������. ���� � ��� ���� ������� ������ �����, ���������� ������ ��������, �� ������ ������������������ ���������.
�������� — � ��� ���������!
�� �������� ��� ���!


#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 Мне пришлось написать это для внутреннего приложения, потому что некоторые технические специалисты хотели иметь красные кнопки на важных предупреждающих сообщениях. По сути, это хук, который можно рисовать на «холсте» открывшегося диалогового окна. Вы можете рисовать в том месте, где находятся комментарии.

Урок 6. Организация ввода и вывода данных

Любая программа в своей работе использует какие-то исходные данные.

Для организации ввода можно использовать компонент формы TEdit (Поле ввода), для вывода результатов – компонент Label (Поле вывода).

Другой способ организации ввода и вывода данных – использование встроенных диалоговых окон InputBox, ShowMessage. Эти диалоговые окна не устанавливаются программистом на форму во время разработки. Операторы их активации нужно вставлять в программный код.

Более подробно остановимся на втором способе.

Ввод данных

Функция InputBox() выводит на экран диалоговое окно, в котором можно ввести данные.

Аргументами этой функции являются три строки, а значением функции – строка введенная пользователем.

В общем виде строка программного кода с использованием функции InputBox выглядит так:

Переменная := InputBox(‘Заголовок’, ‘Подсказка’, ‘Значение по умолчанию’);

где:

Переменная – переменная строкового типа, значение которой должно быть получено от пользователя;

Заголовок – текст заголовка окна;

Подсказка – текст поясняющего сообщения;

Значение по умолчанию – текст, который будет находиться в поле ввода, когда окно появиться на экране.

Например,

n := InputBox(‘Ввод числа’, ‘Введите число:’, ‘ ‘);

Результат показан на рисунке:

ris1

Если пользователь щелкнет по кнопке ОК, то значением функции станет строка, введенная пользователем в текстовое поле. Если пользователь щелкнет по кнопке Cancel, то значением функции станет строка «Значение по умолчанию».

Значение функции InputBox всегда строкового типа (String), поэтому в случае, если нужно ввести число, то введенная строка должна быть преобразована в число при помощи соответствующей функции преобразования.

В качестве примера возьмем задачу пересчета веса из фунтов в килограммы

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

funtStr:= InputBox(‘Фунты-килограммы’,’Введите вес в фунтах:’,’ ‘);

funtFloat:=StrToFloat(funtStr);

ris2

Вывод данных

Результат работы программы чаще всего выводят в окно сообщения ShowMessage или в поле вывода (компонент Label).

Вывод в окно сообщения ShowMessage

Для вывода результата используется процедура ShowMessage(). Она выводит на экран диалоговое окно с текстом и командной кнопкой OK.

Общий вид инструкции вызова процедуры ShowMessage:

ShowMessage(‘Сообщение’);

где Сообщение – текст, который будет выведен в окне.

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

ShowMessage(‘Вес в килограммах: ‘+ FloatToStr(kg));

Результат показан на рисунке.

ris3

Вывод в поле вывода (Label)

Компонент TLabel(Поле вывода), в который будет осуществляться вывод, устанавливают на форме во время разработки. Содержание этого поля определяется значением свойства Caption.

Для того чтобы вывести результаты в это поле, нужно в программном коде поместить оператор присваивания, который будет изменить значение свойства Caption на нужное вам значение.

Например, для того чтобы вывести результат в поле вывода Label1 в рассмотренной выше задаче, нужно использовать следующий оператор присваивания:

Label1.Caption:=FloatToStr(kg) + ‘кг‘;

Практическая работа 

Задание. Поместить на форму две кнопки: Ввод данных и Выход. Пользователь должен ввести фамилию, имя и возраст. Для ввода данных использовать функцию InputBox. По окончании ввода анкетные данные вывести в поле вывода (компонент Label).

ris4

Ход выполнения

  1. Создать новый проект. Папку проекта назвать Анкетные данные.
  2. Разместить на форме две кнопки и надпись так, как показано на рисунке выше.
  3. Написать программный код для кнопки Ввод данных.

procedure TForm1.Button1Click(Sender: TObject);

begin

    label1.Caption:=InputBox(‘Ввод анкетных данных’, ‘Введите фамилию, имя,

     возраст:’,”);

end;

  1. Написать программный код для кнопки Выход

procedure TForm1.Button2Click(Sender: TObject);

begin

        Close;

end;

  1. Сохранить проект. Проверить работу приложения.

После щелчка на кнопке Ввод данных должно появиться диалоговое окно. Введите  в него исходные данные.

После нажатия на клавишу Enter введенные данные должны отобразиться на форме.

Результат показан на рисунке.

ris5

В этом уроке мы рассмотрели способы организации ввода и вывода данных в среде Lazarus. Для ввода данных мы использовали  диалоговое окно InputBox , для вывода – диалоговое окно ShowMessage и компонент формы TLabel (Поле вывода) .

Компонент  TLabel устанавливается на форме во время разработки, диалоговые окна выводятся в отдельном окне во время выполнения приложения, не занимают место на форме. Для их вывода нужен соответствующий программный код.

Понравилась статья? Поделить с друзьями:
  • Showmessage error delphi
  • Show slave status error no query specified
  • Show port error disabled
  • Show mysql connection error
  • Show error ports fragment