Delphi で PageControl に Frame を動的に追加

 Delphi で PageControl に Frame を動的に追加

TMainForm に置いた PageControl1 に TMyFrame というフレームを追加する例
function TMainForm.AddTabSheet: TMyFrame;
var TabSheet: TTabSheet;
    MyFrame: TMyFrame;
begin
    TabSheet := TTabSheet.Create(Self);
    TabSheet.PageControl := PageControl1;

    MyFrame := TMyFrame.Create(TabSheet);
    MyFrame.Parent := TabSheet;
    MyFrame.Align := alClient;
    
    TabSheet.Tag := NativeInt(MyFrame);
    // ↑ MyFrame := TMyFrame(PageControl.Pages[0].Tag)で呼び出せる

    PageControl1.ActivePage := TabSheet;

    Result := MyFrame;
end;

流れは
タブシートを生成して、ページコントロールに関連付ける(PageControl := )
フレームを生成して、タブシートに関連付ける(Parent := )

タブシートの Tag に生成したフレームを保存しておけば、タブシート→フレームが呼び出しやすくなります

コメント