我做了一個Delphi應用程序與德爾福,但我有一個奇怪的行爲。這是情況。德爾福克隆佈局
我有一個TLayout(稱爲InputLayout),它包含了GridPanelLayout
。我必須複製InputLayout這裏面格但我得到這樣的結果:
結果當然是我在左邊的一個。你可以看到,這是而不是我在找什麼,因爲我想有一個上面的網格的確切副本。最後的結果必須是兩個GridPanelLayout,其中第二個放置在第一個之下。這是代碼:
procedure TForm1.Button3Click(Sender: TObject);
var c: TGridPanelLayout;
begin
try
c := TGridPanelLayout(InputLayout.Children[0].Clone(InputLayout));
c.Align := TAlignLayout.Top;
InputLayout.AddObject(c);
except
// ...
end;
end;
什麼是錯?請注意,InputLayout
是包含GridPanelLayout的佈局,並且該組件是唯一的,所以我可以安全地使用0索引進行訪問。
設計時間'GridPanelLayout'似乎沒有對齊到頂部。目前還不清楚'GridPanelLayout'有多少列和行。當我嘗試你的問題時(有3列,1行和第一個'GridPanelLayout'對齊頂部),如果我最小化和恢復表單,我會得到一些消失的繪製文物。試試發生了什麼,並添加到您的問題。 –
@TomBrunberg是的,它與頂部對齊(設計時佈局中的一個)。我是否也必須將克隆的那個放到TAlignLayout.Top中?我正在使用該代碼,但即使我調整了不起作用的頁面。這可能是一個錯誤? –
我想我已經找到了解決方案,但它適用於TGridLayout。出於某些原因,GridPanelLayout不能很好地工作,而且我的行爲與@TomBrunberg相同。 –