gpt4 book ai didi

Delphi - TSplitter 在运行时对齐

转载 作者:行者123 更新时间:2023-12-02 11:34:59 28 4
gpt4 key购买 nike

我有以下面板结构

enter image description here

从代码中我需要根据右侧、底部或左侧的情况对齐底部面板。将拆分器向右和底部对齐不会造成问题,但将拆分器向左对齐我做不到

enter image description here

负责面板和分离器对齐的代码

procedure TForm1.alignThem;
begin
case CommentPanelPosition of
0: begin
pROComponents.Align := alRight;
sROSplitterComponents.Align := alRight;
sROSplitterComponents.width := 3;

pROComponents.Width := GridPanel.Width div 4;
end;
1:
begin
pROComponents.height := GridPanel.height div 3;
end;
2:
begin
pROComponents.Align := alLeft;
TabellePanel.Align := alClient;
sROSplitterComponents.Align := alLeft
end;
end;
end;

哪里

CommentPanelPosition


0 当分离器位于右侧时
1 当分离器位于底部时
2 当分离器位于左侧时

如何解决将分离器向左对齐时出现的问题?

最佳答案

对齐分离器后,设置pROComponents.Left := 0;,

begin
pROComponents.Align := alLeft;
TabellePanel.Align := alClient;
sROSplitterComponents.Align := alLeft;
pROComponents.Left := 0;
end;

您有两个左对齐的组件(拆分器和面板)。最后移到左侧的是分离器。此时它的左侧位置已经为 0,导致它移动到最左侧并将面板推到右侧。

因此,不同的解决方案可能是首先将拆分器向左对齐,然后将面板向左对齐。

但是..

我相信重新对齐时的 Left-属性很重要,因此如果面板和拆分器都向右对齐,并且您将它们向左移动(先拆分器,然后是面板),则面板可能会再次位于拆分器的右侧,因为在重新对齐时其 Left 属性大于 0。因此,通过设置被分割的控件的适当属性,我感觉更安全,因此它们位于正确的位置。

分离器看起来是一个智能组件,但没有办法直接将它与两个控件关联起来。在设计表单或在代码中重新对齐表单时,拆分器不知道它属于哪个控件,并且它不会尝试将自己定位在面板之间的逻辑位置。它只是遵循适用于每个控件的正常规则,并且仅在您实际开始使用鼠标移动拆分器时才找到正确的控件。

因此,设置面板的“Left”(或“Right”、“Top”、“Bottom”)属性实际上只是解决分割器缺乏功能的一种解决方法。

关于Delphi - TSplitter 在运行时对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18144282/

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