![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по диалогу.
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