|
#1
|
|||
|
|||
Строим Message
Вообщем проблема в том что я не знаю как создать собственное окно сообщения с нужным мне заголовком, текстом, кнопками.
Код:
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 и переделываем под себя.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
Ну, фактически там просто Custom-форма создается динамически, а MessageDlg вызывает функцию WinAPI. Куда, кстати, тоже можно много чего накидать/изменить, но это сложно и долго. Быстрее просто создать свою форму, что я собственно и сделал, создавай аналог MessageDlg, выглядящий как в Win7.
|
#4
|
|||
|
|||
Вообщем получается проще создать новую форму с нужным стилем и т.п.
|
#5
|
||||
|
||||
Ну и, наверное, желательно создавать её универсальной, чтобы можно было на "лету" менять какие-то параметры.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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. Помогаю за Спасибо |