有什么方法,例如,每3个组件包装一个FlowPanel的组件不是那么复杂吗?
与属性自动换行一起使用,但具有一定数量的控件。
提前谢谢。
答案 0 :(得分:0)
您未打开实际图像尺寸,因此这里是您的一般想法,并提供了一些您喜欢的示例尺寸。我使用按钮(正常宽度= 75)进行了一些初始测试,因此将TFlowPanel
的大小调整为235像素。
想法是让TFlowPanel
的宽度固定为{Constraints.MaxWidth = 235; Constraints.MinWidth = 235;
,但宽度为AutoSize=True
,这样它可以向下生长。如果您添加例如75像素宽的组件,其中3个完全适合一行。如果较宽,则只能容纳2个,甚至只有1个适合。只要你想。但是,如果宽度只有56px(均值)或更小,则组件数将为四个或更多。
我建议一种解决方案,将较小的组件放在自己的面板上,宽度为75px,并将该面板放在TFlowPanel
上。因此,一行中最多只能容纳三个组件。
这是在TFlowPanel
上放置许多按钮的代码。
procedure TForm3.Button1Click(Sender: TObject);
var
btn: TButton;
pan: TPanel;
begin
inc(count);
btn := TButton.Create(self);
btn.Width := random(60)+35;
if btn.Width < 75 then
begin
pan := TPanel.Create(self);
pan.Width := 75;
pan.Height := 30;
pan.BevelOuter := bvNone;
btn.Parent := pan;
pan.Parent := FlowPanel1;
end
else
begin
btn.Parent := FlowPanel1;
end;
btn.Caption := IntToStr(count);
end;
最终结果
替代解决方案
另一种解决方案(自从您提到TImage
以来)是始终创建宽度至少为75px 的TImage
。如果您愿意,图片(如果小于该图片)可以位于TImage
的中心。这是基于以下事实:图像不会影响TImage
控件的大小(除非您希望这样做)。
此外,如果您确实不是绝对需要以完整的实际大小显示图像,则可以设置Proportional
属性true
。从文档中:
当“比例”为true时,将太大(无法保持在图像控件中的图像)按比例缩小(同时保持相同的宽高比),直到它们适合图像控件为止。