显示问题(100分)

  • 主题发起人 delphihard
  • 开始时间
D

delphihard

Unregistered / Unconfirmed
GUEST, unregistred user!
我做的程序main form上了放了2个panel正好在800*600的时候,窗口最大化的时候,正好显示满
表单,但如果分辨率变成720*1024那么就站不满窗口特难看,要怎么解决?
 
不让窗口尺寸超过800*600
 
有办法——控制窗体最大化时的大小:

1)在FORM私有声明部分加上如下一行:
procedure WMGetMinMaxInfo(var Message:TWMGetMinMaxInfo);message WM_GETMINMAXINFO;
2)在声明部分加上如下几行:
procedure TForm1.WMGetMinMaxInfo(var Message:TWMGetMinMaxInfo);
begin
with Message.MinMaxInfo^ do
begin
ptMaxSize.X:=800; {最大化时宽度}
ptMaxSize.Y:=600; {最大化时高度}
//ptMaxPosition.X:=0; {最大化时左上角横坐标}
//ptMaxPosition.Y:=0; {最大化时左上角纵坐标}
end;
Message.Result:=0; {告诉Windows你改变了minmaxinfo}
inherited;
end;
 
设PANEL的ALIGN属性
如果你想一个在左一个在右那就一个设为ALLEFT一个设为ALCLIENT
同理别的布局你也应该设了。
 
设置窗体属性为不可随意改变就行
 
biyesheng的方法最简单可行
 
设置form的Scaled为false。
 
我做的一个在左一个在右,可我一个设成alleft,另一个设成alcient后,左边得不见了,又边的
变成占满了form阿,定义最大化的窗口大小的方法我觉得不可取,没有别的办法了吗?
 
to delphihard:

给你一个方法,可以动态改变窗体的大小,即自适应分辨率的变化。
const
Orignwidth=800;
Orighheight=600;


procedure TForm1.FormCreate(Sender: TObject);
begin
self.Scaled :=true; //自动调整控件的字体大小等。
if Screen.Width <>OrignWidth then begin
self.Height :=longint(height)*longint(screen.height) div OrighHeight;
self.Width :=longint(width)*longint(screen.width) div OrignWidth;
Scaleby(Screen.width,OrignWidth);
end;
end;
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
960
DelphiTeacher的专栏
D
顶部