この特定のケースでは、PowerPDFライブラリを使用してPDFドキュメントを動的に作成していますが、親コントロール内でコントロールを動的に整列させるという一般的な概念にも同じことが当てはまります。このライブラリでTPRPage
は、はすべての要素コントロール、この場合はのシーケンシャルインスタンスを含む基本コントロールですTPRLayoutPanel
。
コントロールを動的に追加するときに行うこと:
- コントロールを作成する(
TPRLayoutPanel
) - コントロールの親を設定します(
TPRPage
) - コントロールを上に揃えます(
PRLayoutPanel.Align:= alTop;
)
問題は、ページの最後(下)ではなく、最初(上)に強制されることです。
私はその順序を設定しようとしましたが、運がありませんでしたPRLayoutPanel.SendToBack;
。PRLayoutPanel.BringToFront
親コントロール内で複数のコントロールを動的に作成して整列させるにはどうすればよいですか?私の現在の唯一の回避策は、コントロールを逆の順序(最後から最初まで)で追加することです。これは途方もなく不要です。
これが、この親に整列されたコントロールのすべての新しいインスタンスを作成する私のユニバーサル関数です。
function TfrmReport.InsertPanel: TPRLayoutPanel;
begin
Result:= TPRLayoutPanel.Create(PRPage);
Result.Parent:= PRPage;
Result.Align:= alTop;
Result.Height:= 40; //Default, may change later
end;