Delphi 以编程方式设置停靠工具栏’;s位置

Delphi 以编程方式设置停靠工具栏’;s位置,delphi,vcl,delphi-xe3,Delphi,Vcl,Delphi Xe3,我正在尝试重置TControlBar中的一组工具栏位置。用户可以拖动工具栏并将其解除锁定。我试图创建重置按钮,将重新安排工具栏是一种预设的方式 我很难让工具栏按我想要的顺序重置。ManualDock调用的结果似乎因代码执行前的安排方式而异 我有4个工具栏,我希望按如下方式排列成两行: [Toolbar1][Toolbar2] [Toolbar3][Toolbar4] 根据“我的代码”执行之前工具栏的启动位置,屏幕上的结果会有所不同 我尝试过几种不同的方法 -在手动停靠呼叫后,将工具栏设置为顶部和

我正在尝试重置TControlBar中的一组工具栏位置。用户可以拖动工具栏并将其解除锁定。我试图创建重置按钮,将重新安排工具栏是一种预设的方式

我很难让工具栏按我想要的顺序重置。ManualDock调用的结果似乎因代码执行前的安排方式而异

我有4个工具栏,我希望按如下方式排列成两行:

[Toolbar1][Toolbar2] [Toolbar3][Toolbar4] 根据“我的代码”执行之前工具栏的启动位置,屏幕上的结果会有所不同

我尝试过几种不同的方法 -在手动停靠呼叫后,将工具栏设置为顶部和左侧 -alLeft/alTop,而不是上述选项 -使用Nil作为手动停靠调用中的第二个参数,并将所有参数设置为alTop


我尝试只使用两个工具栏,强制它们显示在同一行(并排)或两行中。同样,根据我的代码执行之前工具栏的起始位置,我的结果也会有所不同。

隐藏、停靠、设置位置和显示应该会产生预期的结果

begin
  ToolBar1.Visible := false;
  ToolBar2.Visible := false;
  ToolBar3.Visible := false;
  ToolBar4.Visible := false;
  ToolBar1.ManualDock(ControlBar1);
  ToolBar2.ManualDock(ControlBar1);
  ToolBar3.ManualDock(ControlBar1);
  ToolBar4.ManualDock(ControlBar1);

  ToolBar1.Left := 0;
  ToolBar1.Top := 0;
  ToolBar2.Left := ToolBar1.Width;
  ToolBar2.Top := 0;
  ToolBar3.Left := 0;
  ToolBar3.Top := MAX(ToolBar1.Height, ToolBar2.Height);
  ToolBar4.Left := ToolBar3.Width;
  ToolBar4.Top := ToolBar3.Top;

  ToolBar1.Visible := true;
  ToolBar2.Visible := true;
  ToolBar3.Visible := true;
  ToolBar4.Visible := true;
end;

那是为了我。在这段代码和我的代码之间尝试不同的选项,在更改其左上方位置之前,键似乎在调用所有工具栏上的ManualDock。
begin
  ToolBar1.Visible := false;
  ToolBar2.Visible := false;
  ToolBar3.Visible := false;
  ToolBar4.Visible := false;
  ToolBar1.ManualDock(ControlBar1);
  ToolBar2.ManualDock(ControlBar1);
  ToolBar3.ManualDock(ControlBar1);
  ToolBar4.ManualDock(ControlBar1);

  ToolBar1.Left := 0;
  ToolBar1.Top := 0;
  ToolBar2.Left := ToolBar1.Width;
  ToolBar2.Top := 0;
  ToolBar3.Left := 0;
  ToolBar3.Top := MAX(ToolBar1.Height, ToolBar2.Height);
  ToolBar4.Left := ToolBar3.Width;
  ToolBar4.Top := ToolBar3.Top;

  ToolBar1.Visible := true;
  ToolBar2.Visible := true;
  ToolBar3.Visible := true;
  ToolBar4.Visible := true;
end;