我想在两个可调整大小的面板之间放置一些按钮,或者如果可能的话直接放在分割器上。我如何实现他们将与分离器一起移动;我该如何锚定它们?
修改
也许是我忘记提及的最重要的事情。分割器必须与屏幕截图一样宽,按钮应放在它上面;所以那些按钮实际上是“浮动在分离器上”。
非常感谢
答案 0 :(得分:6)
哟不能自动完成。
手动,您可以在分割器的OnMoved事件中更改按钮的Left属性
没有一个好的解决方案(拖动时刻的可视化并不好),但它可以做你需要的结果。你可以解决这个问题,试试 ResizeStyle = rsUpdate ;当你拖动分割器时,按钮也会移动。
procedure TForm1.Splitter1Moved(Sender: TObject);
begin
SpeedButton1.Left := Splitter1.Left + 40;
SpeedButton2.Left := Splitter1.Left + 40;
SpeedButton3.Left := Splitter1.Left + 40;
SpeedButton4.Left := Splitter1.Left + 40;
end;
此致
答案 1 :(得分:5)
以下是我应用的截图:
此表单在左侧窗格的树视图右侧有一个TSplitter
。分割器右侧是TPanel
,其中包含按钮。
这是在设计时,您可以看到用虚线绘制的分割器:
技巧是分割器不包含控件 - 因为您使用了面板。
因此,使用您的命名,您需要将Splitter1替换为面板以包含按钮,并在Panel1和新面板之间添加拆分器。左侧和中间面板与分割器对齐alLeft
,右侧手柄面板对齐alClient
。
设置splitter1.autosnap:= false
答案 2 :(得分:1)
您可以将面板嵌套在一起。
+--------------+#+------------+
|+---------+ p |#| panel3 |
|| panel1 | a |#| |
|| | n |#| |
|| | e |#| |
|| | l |#| |
|| | 2 |#| |
其中#
是拆分器。
将按钮放在面板2的右侧 或者甚至更好地在panel2上添加一个额外的panel4,使其成为
panel4.align:= alRight;
panel1 align:= alClient;
panel2.Align:= alClient;
splitter1.align:= alright or alLeft //experiment here
panel3.Align:= alRight;
这应该可以解决问题。
答案 3 :(得分:1)
有一个重要的通知。 Splitter之间的两个面板应具有相同的参数AlignWithMargins
。 (两者都是真的或两者都是假的)。否则拆分器不起作用。我和这个问题争了好几天