好像不止三种方案喔[
]
第一种
begin
self.Height:=(screen.Height-203) div 2;
self.Width:=(screen.Width-218) div 2;
end;
结果:没有问题喔在宽频下也没有问题
第二种
把windowState先覆值为nomal,再覆值为max试试
结果:不行喔,没反应的
第三种
form 的 position:=poDesigned 即不要改动 默认;
然后 windowState := wsMaximized ;
结果:NB啊,
全部是DELPHI的属性调一调就OK了,最省事
windowState := wsMaximized这个可以设置属性,也可以在OnFormShow中写
都行,我想我会用这个了!
第四种:
self.BoundsRect := Screen.WorkAreaRect;
结果: D5中没找到Screen.WorkAreaRect,所以没法试喽
第五种:
var
hApp: HWND;
rcApp, rcWork: TRect;
begin
rcWork.top := 0;
rcWork.left := 0;
rcWork.Bottom := GetSystemMetrics(SM_CYSCREEN);
rcWork.Right := GetSystemMetrics(SM_CXSCREEN);
hApp := FindWindow('Shell_TrayWnd', '');
if hApp <> 0 then begin
{ get the size of the taskbar }
GetWindowRect(hApp, rcApp);
{ cut the workarea to place the taskbar }
if rcApp.Right < rcWork.Right then
rcWork.left := rcApp.Right; { bar on left edge }
if rcApp.Bottom < rcWork.Bottom then
rcWork.top := rcApp.Bottom; { bar on top edge }
if rcApp.left > 0 then
rcWork.Right := rcApp.left; { bar on right edge }
if rcApp.top > 0 then
rcWork.Bottom := rcApp.top; { bar on bottom edge }
end;
{ set workarea }
Constraints.MaxHeight := rcWork.Bottom - rcWork.top;
Constraints.MaxWidth := rcWork.Right - rcWork.left;
end;
结果:这个一看就知道可能是外国牛人写的,根据开始菜单位判断
我想应该行吧,但是我不想试了,因为找到最佳答案了!
每人都有分,采用谁的当然给最高分喽
谢谢大家捧场啊!