delphi – TFlowPanel中的AutoSize和AutoWrap冲突
我试图以下列方式使用TFlowPanel组件:
>放置在主窗体Form1组件FlowPanel1:TFlowPanel上. 出于某种原因,当用户调整表单大小时,速度按钮不会自动排成两行.虽然,当AutoSize = False时,它们会排成两行,AutoWrap = True. 编辑:我发现了“快速而肮脏”的解决方案.以下代码是TFlowPanel.OnResize事件的事件处理程序: procedure TForm1.FlowPanel1Resize(Sender: TObject); begin with FlowPanel1 do begin AutoSize := False; Realign; // line up controls AutoSize := True; // adjust TFlowPanel.Height end; end; 但是,我仍然想知道是否有一种解决问题的标准方法. 解决方法
我无法在代码中找到这种行为的确切原因,但基本上你已经挑战了两个大小的属性来战斗,
AutoSize 和
Align .问题是,我认为,当你调整表单大小时,控件与
AutoSize 配置为True,Align 设置为
alTop 将首先尝试自动调整控件,然后对齐到其父级的顶部.我可以肯定的是,这两个属性不应该至少从它们的逻辑含义中加以组合.
我建议您的解决方法是默认关闭自动调整大小,并在 procedure TForm1.FlowPanel1Resize(Sender: TObject); begin // there's no Realign here,since the AlignControls request is called // at control resize,so here you have children already aligned,what // you then need is to request the control to autosize the height and // turn off the autosizing to the default,disabled state FlowPanel1.AutoSize := True; FlowPanel1.AutoSize := False; end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |