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 |
|||
Или так
текст и заголовок типа 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 |
← →
Катерина
(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 |
������� ������:
|
������� ������ | ������ ������ ���������
������� ��������
|
����� ����������
|
�������� ������������
����������� ���������
|
������������ �����/������
������� ��������!
������� ������� 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(‘Ввод числа’, ‘Введите число:’, ‘ ‘);
Результат показан на рисунке:
Если пользователь щелкнет по кнопке ОК, то значением функции станет строка, введенная пользователем в текстовое поле. Если пользователь щелкнет по кнопке Cancel, то значением функции станет строка «Значение по умолчанию».
Значение функции InputBox всегда строкового типа (String), поэтому в случае, если нужно ввести число, то введенная строка должна быть преобразована в число при помощи соответствующей функции преобразования.
В качестве примера возьмем задачу пересчета веса из фунтов в килограммы
Ввод исходных данных из окна ввода и последующее преобразование данных может выглядеть так:
funtStr:= InputBox(‘Фунты-килограммы’,’Введите вес в фунтах:’,’ ‘);
funtFloat:=StrToFloat(funtStr);
Вывод данных
Результат работы программы чаще всего выводят в окно сообщения ShowMessage или в поле вывода (компонент Label).
Вывод в окно сообщения ShowMessage
Для вывода результата используется процедура ShowMessage(). Она выводит на экран диалоговое окно с текстом и командной кнопкой OK.
Общий вид инструкции вызова процедуры ShowMessage:
ShowMessage(‘Сообщение’);
где Сообщение – текст, который будет выведен в окне.
Например, для того чтобы вывести результат в программе пересчета веса из фунтов в килограммы, можно использовать следующую строку кода:
ShowMessage(‘Вес в килограммах: ‘+ FloatToStr(kg));
Результат показан на рисунке.
Вывод в поле вывода (Label)
Компонент TLabel(Поле вывода), в который будет осуществляться вывод, устанавливают на форме во время разработки. Содержание этого поля определяется значением свойства Caption.
Для того чтобы вывести результаты в это поле, нужно в программном коде поместить оператор присваивания, который будет изменить значение свойства Caption на нужное вам значение.
Например, для того чтобы вывести результат в поле вывода Label1 в рассмотренной выше задаче, нужно использовать следующий оператор присваивания:
Label1.Caption:=FloatToStr(kg) + ‘кг‘;
Практическая работа
Задание. Поместить на форму две кнопки: Ввод данных и Выход. Пользователь должен ввести фамилию, имя и возраст. Для ввода данных использовать функцию InputBox. По окончании ввода анкетные данные вывести в поле вывода (компонент Label).
Ход выполнения
- Создать новый проект. Папку проекта назвать Анкетные данные.
- Разместить на форме две кнопки и надпись так, как показано на рисунке выше.
- Написать программный код для кнопки Ввод данных.
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption:=InputBox(‘Ввод анкетных данных’, ‘Введите фамилию, имя,
возраст:’,”);
end;
- Написать программный код для кнопки Выход
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
- Сохранить проект. Проверить работу приложения.
После щелчка на кнопке Ввод данных должно появиться диалоговое окно. Введите в него исходные данные.
После нажатия на клавишу Enter введенные данные должны отобразиться на форме.
Результат показан на рисунке.
В этом уроке мы рассмотрели способы организации ввода и вывода данных в среде Lazarus. Для ввода данных мы использовали диалоговое окно InputBox , для вывода – диалоговое окно ShowMessage и компонент формы TLabel (Поле вывода) .
Компонент TLabel устанавливается на форме во время разработки, диалоговые окна выводятся в отдельном окне во время выполнения приложения, не занимают место на форме. Для их вывода нужен соответствующий программный код.