TFrame の使い方についての質問なのですが
理解できず、対処できないので教えてください
TFrameから派生したTMyFrameでメニューを作りました。
フォームにはPageControlを配置し
いくつかのTabSheetとTabSheetMyFrameを作りました。
TabSheetMyFrameのOnShowで
MyFrame := TMyFrame.Create(TabSheetMyFrame);
MyFrame.Parent := TabSheetMyFrame;
TabSheetMyFrameのOnHideで
MyFrame.Free;
MyFrame := Nil;
と、しました。
PageControlのActivePageがTabSheetMyFrame以外で
PageControl.ActivePage := TabSheetOther
としていれば
TabSheetMyFrameに切り替えるとフレームが表示されるのに、
Form.Create で
PageControlのActivePageをTabSheetMyFrameで
PageControl.ActivePage := TabSheetMyFrame
にするとフレームが表示されないのはどうしてでしょうか?
タブを切り替えるとき 新しいタブの SHOW 元のタブの HIDE と
実行されるので
TabSheetMyFrameのOnShowで
MyFrame := TMyFrame.Create(TabSheetMyFrame);
MyFrame.Parent := TabSheetMyFrame;
TabSheetMyFrameのOnHideで
MyFrame.Free;
MyFrame := Nil;
だとタブを切り替えたとたんに消えると思うんだけど・・・
こんな感じにすべきかと?
procedure TForm7.TabSheetOnShow(Sender: TObject);
begin
Frame8.Parent := TTabSheet(Sender);
end;
procedure TForm7.FormCreate(Sender: TObject);
begin
Frame8 := TFrame8.Create(TTabSheet(Sender));
Frame8.Parent := PageControl1.ActivePage;
TabSheet1.OnShow := TabSheetOnShow;
TabSheet2.OnShow := TabSheetOnShow;
end;
一応 TabSheetOnShow で
TabSheet(Sender).BringToFront;
を入れれば表示されるようになると思うけど(タブが1個の場合表示されない)
FormのOnActiveでFrameを貼り付けて
FormのOnDestroyでFrmaeを削除すればいいんですよね。