Delphi 7/2010窗体控件随窗口大小自动调整位置和大小,支持多个控件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

var
  Form2: TForm2;

  cch: Integer = 0; //初始的窗体高度
  ccw: Integer = 0; //初始的窗体宽度
  chlst: array of Integer; //初始的控件高度数组
  cwlst: array of Integer; //初始的控件宽度数组
  cplst: array of Integer; //初始的控件距离窗口上端的距离数组
  cllst: array of Integer; //初始的控件距离窗口左端的距离数组
  carr: array of TControl; //存放所有窗体控件数组
procedure TForm2.FormCreate(Sender: TObject);
var I:Integer;
begin
  cch := self.Height; //初始化窗口宽高
  ccw := self.Width;
  for I := 0 to ControlCount - 1 do begin
    SetLength(chlst, I + 1); //给初始控件的高度数组设置大小。
    chlst[I] := Controls[I].Height; //给初始控件的高度数组设置值。以下均同
    SetLength(cwlst, I + 1); //宽度
    cwlst[I] := Controls[I].Width;
    SetLength(cplst, I + 1); //距离窗口上端的距离
    cplst[I] := Controls[I].Top;
    SetLength(cllst, I + 1); //距离窗口左端的距离
    cllst[I] := Controls[I].Left;
    SetLength(carr, I + 1); //最后一步,给存放所有窗体控件数组添加元素
    carr[I] := Controls[I];
  end;
end;
procedure TForm2.FormResize(Sender: TObject);
var ch,cw,I:Integer;
var avgh,avgw,avgp,avgl:Integer;
begin
  ch := self.Height; //定义两个变量,用于获取窗体大小改变后的高度和宽度值。
  cw := self.Width;
  for I := 0 to Length(carr) - 1 do begin
    avgh := round(chlst[I] * (ch / cch)); //获取平均改动值,用了【控件原高度x(窗体高度 / 窗体原高度)】公式。
    avgw := round(cwlst[I] * (cw / ccw));
    avgp := round(cplst[I] * (ch / cch));
    avgl := round(cllst[I] * (cw / ccw));
    carr[I].Height := avgh; //应用平均改动值
    carr[I].Width := avgw;
    carr[I].Top := avgp;
    carr[I].Left := avgl;
  end;
end;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Web项目开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值