簡體   English   中英

Delphi-TSplitter在運行時對齊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM