Form1をメインフォーム、Form2を選択可能なフォームとしてButton1をクリックするとForm2を作成、Buton2をクリックするとButton1で作成されたフォームを全て廃棄します。
//---------------------------------------------------------------------------
// Unit1.h
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE 管理のコンポーネント
TButton *Button1;
TButton *Button2;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
private:
public: // ユーザー宣言
TList* mlstFrm; // ユーザー宣言
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
// Unit1.cpp
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
mlstFrm = new TList;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
delete mlstFrm;
mlstFrm = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Form2を生成します。
TForm2 *frm = new TForm2(this);
mlstFrm->Add(frm);
frm->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//生成した全てのForm2を破棄します。
TForm2 *frm;
for (int i=0;i<mlstFrm->Count;i++){
frm = (TForm2*)mlstFrm->Items[i];
delete frm;
frm = NULL;
}
mlstFrm->Clear();
}
//---------------------------------------------------------------------------
// Unit2.cpp
//---------------------------------------------------------------------------
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
TForm1 *frm = (TForm1*)Owner;
frm->mlstFrm->Delete(frm->mlstFrm->IndexOf(this));
}
//---------------------------------------------------------------------------
DownLoad bcbtips020.lzh 5KB(BCB5)