我想在两个可调整大小的面板之间放置一些按钮,或者如果可能的话直接放在分离器上。我如何实现它们将与分离器一起移动;我如何锚定它们?
编辑:
也许是我忘记提及的最重要的事情。该拆分器必须与屏幕截图一样宽,并且按钮应位于其上;所以这些按钮现在实际上是“浮动在分离器上”。
非常感谢
我想在两个可调整大小的面板之间放置一些按钮,或者如果可能的话直接放在分离器上。我如何实现它们将与分离器一起移动;我如何锚定它们?
编辑:
也许是我忘记提及的最重要的事情。该拆分器必须与屏幕截图一样宽,并且按钮应位于其上;所以这些按钮现在实际上是“浮动在分离器上”。
非常感谢
哟不能自动完成。
您可以在拆分器的 OnMoved 事件中手动更改 Buttons 的 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;
在这里您可以查看结果。
问候
这是我的应用程序的屏幕截图:
此表单TSplitter
在左侧窗格中的树视图右侧有一个。拆分器的右侧是TPanel
包含按钮的 a。
这是在设计时,您可以看到用虚线绘制的拆分器:
诀窍是拆分器不包含控件——因为您使用面板。
因此,使用您的命名,您需要将 Splitter1 替换为包含按钮的面板,并在 Panel1 和新面板之间添加一个拆分器。左右面板和分流器对齐alLeft
,右侧把手面板对齐alClient
。放splitter1.autosnap:= false
有一个重要的通知。Splitter 之间的两个面板应具有相同的参数AlignWithMargins
。(都为真或都为假)。否则分离器不起作用。我与这个问题斗争了几天
您可以将面板相互嵌套。
+--------------+#+------------+
|+---------+ p |#| panel3 |
|| panel1 | a |#| |
|| | n |#| |
|| | e |#| |
|| | l |#| |
|| | 2 |#| |
分离器在哪里#
。
将按钮放在 panel2 的右侧。
或者甚至更好地在 panel2 上放置一个额外的 panel4,使之
panel4.align:= alRight;
panel1 align:= alClient;
panel2.Align:= alClient;
splitter1.align:= alright or alLeft //experiment here
panel3.Align:= alRight;
这应该可以解决问题。