窗体放大后,各控件如何相应放大???
这个问题一直困扰着我,当运行时把窗体放大,窗体其丑无比!!怎么处理?? 问题点数:20、回复次数:5Top
1 楼zsy_good(只要坚定不移的走下去,那一定会成功)回复于 2002-10-02 17:01:31 得分 3
控件不是有属性吗?
你吧他的4个位置都固定死,窗体放大的时候,他也会放大Top
2 楼qdxby(足球小子)回复于 2002-10-02 17:23:48 得分 1
zsy_good(只要坚定不移的走下去,那一定会成功)说了些什么啊?
这个问题也一直困饶着我。Top
3 楼gdwyh(神州大虾)回复于 2002-10-02 19:06:50 得分 10
建一窗体,在窗体上加3个可视控件,在var段定义如下变量:
x1,y1:integer;
cl,ct,cw,ch:array [0..2] of real;//数组上限由可视控件数目而定
在窗体的OnCreate事件输入如下代码:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
//取窗体的原始大小
x1:=form1.ClientWidth;
y1:=form1.ClientHeight;
//取各控件的原始大小和位置
for i:=0 to 2 do
begin
cw[i]:=form1.Controls[i].Width;
cl[i]:=form1.Controls[i].Left;
ch[i]:=form1.Controls[i].Height;
ct[i]:=form1.Controls[i].Top;
end;
end;
在窗体的OnResize事件输入如下代码:
procedure TForm1.FormResize(Sender: TObject);
var x,y,i:integer;
begin
x:=form1.ClientWidth;
y:=form1.ClientHeight;
for i:=0 to 2 do
begin
cl[i]:=cl[i]*x/x1;
ct[i]:=ct[i]*y/y1;
form1.Controls[i].Left:=round(cl[i]);
form1.Controls[i].Top:=round(ct[i]);
cw[i]:=cw[i]*x/x1;
form1.Controls[i].Width:=round(cw[i]);
ch[i]:=ch[i]*y/y1;
form1.Controls[i].Height:=round(ch[i]);
end;
x1:=x;
y1:=y;
end;
以上在WIN XP,DELPHI 7下调试通过。Top
4 楼martinlii(梦幻使者)回复于 2002-10-02 19:08:04 得分 1
这个问题我也不懂,要是有那为大虾知道如何解决,请告诉我谢谢了。
martinlh@sina.comTop
5 楼Purpleendurer(编程—>任是无情也动人^_^)回复于 2002-10-02 22:33:46 得分 5
在窗体的OnCreate事件中保存窗口的原始的大小
在窗体的OnResize事件中取现在窗口的大小,与先前保存的窗口的大小相减,将差值加给窗口各控件。并现在窗口的大小保存以便在下一次OnResize事件中使用。
代码gdwyh(神州大侠) 已给出。Top




