如何创建包含组件的拆分器?

时间:2011-05-24 10:25:58

标签: delphi delphi-2009 splitter

我想在两个可调整大小的面板之间放置一些按钮,或者如果可能的话直接放在分割器上。我如何实现他们将与分离器一起移动;我该如何锚定它们?

screenshot

修改
也许是我忘记提及的最重要的事情。分割器必须与屏幕截图一样宽,按钮应放在它上面;所以那些按钮实际上是“浮动在分离器上”。

非常感谢

4 个答案:

答案 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;

Here you can view结果。

此致

答案 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。 (两者都是真的或两者都是假的)。否则拆分器不起作用。我和这个问题争了好几天