Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по диалогу.


Regent ©   (2007-05-08 18:08:00) 

Как выровнять Application.MessageBox по центру главной формы???


{RASkov}   (2007-05-08 19:35:00) [1]

> [6] easy ©   (08.05.07 19:16)

Интересный пример, прям какой-то "Назад в будущее". Красочная иллюстрация PostMessages. :)


begin...end   (2007-05-08 19:29:00) [2]

Мда. Похоже, точки зрения [4] придерживаются не все...
;-)


easy   (2007-05-08 19:16:00) [3]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

const
WM_MSGBOX  = WM_USER + 1001;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
   procedure msgBoxShow(var msg: TMessage); message WM_MSGBOX;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 MessageBox(handle, 'This Is A Not Centered Message Box', 'MessageBox.',
        MB_OK or MB_ICONQUESTION);
 PostMessage(handle, WM_MSGBOX, 0, 0);
 MessageBox(handle, 'This Is A Centered Message Box', 'MessageBox.',
        MB_OK or MB_ICONINFORMATION);
end;

procedure TForm1.msgBoxShow(var msg: TMessage);
var
msgbHandle: HWND;
R:TRect;
mbw,mbh:integer;
begin
msgbHandle := GetActiveWindow;
if msgbHandle <> 0 then begin
  GetWindowRect(msgbHandle, R);
  mbw:=R.Right-R.Left;
  mbh:=R.Bottom-R.Top;
  MoveWindow(msgbHandle,left+width div 2-mbw div 2,
              top+height div 2-mbh div 2,mbw,mbh,true);
end;
end;

end.


begin...end   (2007-05-08 19:02:00) [4]

> Regent ©   (08.05.07 18:08)

Считайте, что никак. Вернее, способ есть (и даже несколько), но городить столько кода для решения такой задачи несерьёзно -- как говорится, овчинка выделки не стоит. Лучше уж какой-нибудь MessageDlgPos использовать...


Rial   (2007-05-08 19:02:00) [5]

Свою форму создай и кинь пару кнопок на нее.
Выйдет быстрее, чем ждать часами ответа :)


{RASkov}   (2007-05-08 18:48:00) [6]

> [0] Regent ©   (08.05.07 18:08)

var X, Y: Integer;
begin
X:=Left; Y:=Top;
Position:=poScreenCenter;
MessageBox([<MainForm>.]Handle, 'MessageDlgPos', 'или', 0);
Left:=X; Top:=Y;
end;
Прикол в том, что нечего создавать ветки каждый день с одним и тем же вопросом.


clickmaker   (2007-05-08 18:39:00) [7]

MessageBox(MainForm.Handle, ...


Правильный Вася   (2007-05-08 18:31:00) [8]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1178548742&n=18


Наверх

Титульная страница Поиск, карта сайта Написать письмо