我正在尝试重置 TControlBar 内的一组工具栏位置。用户可以拖动工具栏并取消停靠它们。我正在尝试创建将重新排列工具栏的重置按钮是一种预设方式。
我无法按照我想要的顺序重置工具栏。我的 ManualDock 调用的结果似乎会根据我的代码执行之前的排列方式而有所不同。
我有 4 个工具栏,我想像这样排列成两行:
[工具栏1][工具栏2] [工具栏3][工具栏4]
我尝试了以下代码的变体但没有成功:
// I found some references to different docking issues when controls were visible
// Hide everything first and then show them in the order I want them added.
Toolbar1.Visible := false;
Toolbar2.Visible := false;
Toolbar3.Visible := false;
Toolbar4.Visible := false;
ToolBar1.Visible := true;
ToolBar1.ManualDock(DockSite);
ToolBar1.Left := 0;
Toolbar2.Visible := true;
Toolbar2.ManualDock(DockSite, Toolbar1, alRight);
Toolbar3.Visible := true;
Toolbar3.ManualDock(DockSite, Toolbar1, alBottom);
Toolbar3.Left := 0;
Toolbar4.Visible := true;
Toolbar4.ManualDock(DockSite, Toolbar3, alRight);
屏幕上的结果会有所不同,具体取决于我的代码执行之前工具栏的启动位置。
我尝试了几种不同的方法 - 在手动停靠调用后设置工具栏顶部和左侧 - alLeft/alTop 而不是上面的选项 - 使用 Nil 作为 ManualDock 调用中的第二个参数并将所有内容设置为 alTop
我尝试只使用 2 个工具栏来强制它们出现在同一行(并排)或两行。同样,我的结果也有所不同,具体取决于我的代码执行之前工具栏的开始位置。