delphi 使用TFlowPanel容器,实现对内含控件进行自动排版

效果图:

 需求:

  当用户新增或者删除控件时,后面的控件(如果有的话)自动后退或者前移

实现:

需要用的控件是TFlowPanel,临时演员是TscGPEdit

1.TFlowPanel设置好合适的对齐,其他基本上不用怎么设置,默认即可

2.设置TscGPEdit的AlignWithMargins:=true;

然后往下找到Margins属性,进行设置.设置好后,复制粘贴这个TscGPEdit任意次,然后就可以看到效果了

 3.设置业务代码

因为TscGPEdit自带了一个RightButton功能与事件,所以业务代码我这里就直接写到里面去了

procedure TForm1.scGPEdit1RightButtonClick(Sender: TObject);
begin
  TscGPEdit(sender).Visible:=False ;
end;

由于TFlowPanel中没有设置滚动条的相关属性。所以我们只好另辟溪径。再加一个tscrollbox来实现。

具体操作如下:

1,先添加一个Tscrollbox,设置其align为alclient。autosize默认为false,不用改动。

2,在其中添加一个tflowpanel,设置align为altop,autosize为true,autowrap为true。在这其中一定要将align设置为altop,如果设置为其它都不会有滚动条的。

实际实验时,tflowpanel不起作用。而用trzflowpanel时,没问题。

还有一点需要注意的是,当改变tflowpanel的大小时,其中的控件不能自动重排。需要重写根据情况定义下tflowpanel的宽度才行。

如改变窗口大小时,在onresize中加上:flowpanel1.width:=self.clientwidth;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蝈蝈(GuoGuo)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值