gpt4 book ai didi

delphi - 以编程方式设置停靠工具栏的位置

转载 作者:行者123 更新时间:2023-12-03 18:31:58 24 4
gpt4 key购买 nike

我正在尝试重置 TControlBar 内的一组工具栏位置。用户可以拖动工具栏并取消停靠它们。我正在尝试创建将重新排列工具栏的重置按钮是一种预设方式。

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

我有 4 个工具栏,我想像这样排列成两行:

[Toolbar1][Toolbar2][Toolbar3][Toolbar4]

I have tried variants of the following code without success:

// 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 而不是上面的选项
- 在 ManualDock 调用中使用 Nil 作为第二个参数并将所有内容设置为 alTop

我尝试只使用 2 个工具栏来强制它们出现在同一行(并排)或两行中。同样,根据我的代码执行之前工具栏从哪里开始,我的结果会有所不同。

最佳答案

隐藏、停靠、设置位置和显示应该会导致预期的结果。

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;

关于delphi - 以编程方式设置停靠工具栏的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19755499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com