[英]Delphi - TSplitter align at runtime
我的面板結構如下
從代碼中,我需要根據右側,底部或左側的情況對齊底部面板。 將分離器向右和底部對齊不會造成問題,但是將分離器向左對齊我無法做
負責對齊面板和分離器的代碼
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
屬性大於0。 因此,通過設置要拆分的控件的適當屬性,我感到更安全,因此它們處於正確的位置。
拆分器似乎是一個智能組件,但是無法將其與兩個控件直接關聯。 在設計表單或在代碼中重新對齊時,拆分器不知道它屬於哪個控件,並且它不會嘗試將自己定位在面板之間的邏輯位置。 它僅遵循適用於每個控件的常規規則,並且僅在您實際開始使用鼠標移動拆分器時才找到正確的控件。
因此,設置面板的Left(或Right,Top,Bottom)屬性實際上只是解決此分離器功能不足的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.