![]() |
|
|
#1
|
|||
|
|||
|
Вообщем проблема в том что я не знаю как создать собственное окно сообщения с нужным мне заголовком, текстом, кнопками.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var Msg: Integer;
begin
Msg := MessageDlg('Custom dialog',mtCustom, [mbYes,mbNo], 0);
if Msg = mrYes then PostMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
if Msg = mrNo then ShowMessage('No');
end; |
|
#2
|
||||
|
||||
|
В Дельфи юнит Dialogs.pas, смотрим класс InputQuery и переделываем под себя.
|
|
#3
|
|||
|
|||
|
Ну, фактически там просто Custom-форма создается динамически, а MessageDlg вызывает функцию WinAPI. Куда, кстати, тоже можно много чего накидать/изменить, но это сложно и долго. Быстрее просто создать свою форму, что я собственно и сделал, создавай аналог MessageDlg, выглядящий как в Win7.
|
|
#4
|
|||
|
|||
|
Вообщем получается проще создать новую форму с нужным стилем и т.п.
|
|
#5
|
||||
|
||||
|
Ну и, наверное, желательно создавать её универсальной, чтобы можно было на "лету" менять какие-то параметры.
|
|
#6
|
|||
|
|||
|
Это как на "лету" ?
Не вписывать туда значения, а создавать их при запуске? |
|
#7
|
|||
|
|||
|
То есть свой текст, заголовок и кнопки. В Джаве кстати есть такая фича - CustomDialogBox вроде. можно не только свой текст и заголовок, но и тексты кнопок (и их количество) функция возвращает номер кнопки
|
|
#8
|
|||
|
|||
|
Вот нашел неплохой пример:
Код:
Application.MessageBox('Текст сообщения','Заголовок', mb_iconwarning or mb_ok); |
|
#9
|
||||
|
||||
|
MessageBox function
Цитата:
|
|
#10
|
||||
|
||||
|
Как вариант, чем Вам не подходит?
Код:
var I:integer;
begin
with CreateMessageDialog('message', mtConfirmation, [mbYes, mbCancel]) do
try
for i := 0 to componentcount - 1 do begin
if components[i].classname = 'TButton' then
if (components[i] as TButton).modalResult = mrYes then
(components[i] as TButton).caption := 'A';
if components[i].classname = 'TButton' then
if (components[i] as TButton).modalResult = mrcancel then
(components[i] as TButton).caption := 'B';
end;
Caption := 'aaa';
ShowModal;
finally
Release;
end;События отлавливай через ShowModal. |