调用MessageDlg默认出现在屏幕中间,可以让它出现在主窗口中间吗?(10分)

  • 主题发起人 主题发起人 coolqiang
  • 开始时间 开始时间
C

coolqiang

Unregistered / Unconfirmed
GUEST, unregistred user!
如果自己的程序主窗口是屏幕正中的当然没什么问题,但如果主窗口不在屏幕正中,甚至在
很靠边的地方,而且很小的话,出来的对话框就会离主窗口太远了,感觉很别扭。除了自己
专门建一个窗体用来专门处理对话框信息外,可不可以直接让MessageDlg想在什么地方显示
就在什么地方显示?
 
用MessageDlgPos函数
 
procedure TForm1.Button1Click(Sender: TObject);
begin
MessageDlgPos('Are you there?',mtConfirmation, mbYesNoCancel, 0, 200, 200);
end;

//200,200为弹出的位置
 
这样我只能控制对话框左上角的位置,我想能在主窗口正中显示啊!
如果能获得对话框的宽、高(假设为W,H)就好了,那么对话框显示的X、Y坐标:
X := frmMain.Left + (frmMain.Width - W) div 2;
Y := frmMain.Top + (frmMain.Height -H) div 2;
因为对话框的宽、高不确定,是跟随具体显示信息的长度、行数来改变的,所以不能直接在
程序中给出一个具体的坐标值。
 
看来只能改VCL源码试试了!
 
多人接受答案了。
 
后退
顶部