16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"PageControlの動的なTabSheetの生成・破棄"
この発言に対し以下のコメントが寄せられています
#00345 FuKu さん RE:PageControlの動的なTabSheetの生成・破
みなさんこんにちは。FuKuです。
nifty:FDELPHI/MES/8/5929
に関連したサンプルです。
TPageControlに動的にTTabSheetを追加し、
その上に、StringGridを乗せていくという物です。
ボタンは何回押しても良いです。(^^)
TPageControlは使ったこと無いので間違ってるかもしれません。(^_^;)オイオイ
間違っている、もしくはこっちの方が効率よいよ、
という報告をお待ちしております。m(__)m
-------- 8< -------- 8< -------- 8< -------- 8< -------- 8< --------
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
PageControl1: TPageControl;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
public
StrGridList: TList; {StrGridのインスタンスへの <---手動で追加
ポインタを格納しておく入れ物}
end;
-------- 8< -------- 8< -------- 8< -------- 8< -------- 8< --------
procedure TForm1.Button1Click(Sender: TObject);
var
j: Integer; {オブジェクトの生成・破棄はjには依存しない
ようになっています}
TabSheet: TTabSheet;
begin
for j:=0 to 9 do {別に何回でも良いです。}
begin
{TTabSheetはTPageControlがオブジェクトを
格納する入れ物になってくれる}
TabSheet := TTabSheet.Create(Self);
TabSheet.PageControl := PageControl1;
PageControl1.Pages[PageControl1.PageCount-1].Caption
:= 'TabSheet'+IntToStr(PageControl1.PageCount);
StrGridList.Add(Pointer(TStringGrid.Create(Self)));
TStringGrid(StrGridList[PageControl1.PageCount-1]).Parent
:= PageControl1.Pages[PageControl1.PageCount-1];
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
{StrGridListもPageControl1も後ろから廃棄しています
もしかするとStringGridは明示的に廃棄しなくても
TabSheetを廃棄するだけで良いのかもしれません(自信無し(^_^;))}
while (StrGridList.Count > 0) do
begin
TStringGrid(StrGridList[StrGridList.Count-1]).Free;
StrGridList.Delete(StrGridList.Count-1);
end;
while (PageControl1.PageCount > 0) do
PageControl1.Pages[PageControl1.PageCount-1].Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StrGridList := TList.Create;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Button2Click(Sender);
StrGridList.Free;
end;
-------- 8< -------- 8< -------- 8< -------- 8< -------- 8< --------
-------
98/01/16 (金)11:31:42
FuKu (SGV00305)
Original document by FuKu 氏 ID:(SGV00305)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|