问个关于new的问题
void __fastcall TMainForm::CreateMDIChild(String Name)
{
TMDIChild *Child;
//--- create a new MDI child window ----
Child = new TMDIChild(Application);
Child-> Caption = Name;
if (FileExists (Name))
Child-> Memo1-> Lines-> LoadFromFile(Name);
}
//---------------------------------------
void __fastcall TMainForm::FileNew1Execute(TObject *Sender)
{
CreateMDIChild( "NONAME " + IntToStr(MDIChildCount + 1));
}
//---------------------------------------
void __fastcall TMainForm::FileOpen1Execute(TObject *Sender)
{
if (OpenDialog-> Execute())
CreateMDIChild(OpenDialog-> FileName);
}
//----------------------------------------------------
比如我new 了5mdichild。。。。我怎么获得这5个mdichild的指针阿?
[解决办法]
第1个问题:
TMDIChild *p = (TMDIChild *)FindComponent( "NONAME2 ");
if(p)
{
//... p就是Noname2子窗体的指针
}
第2个问题:
每一个pts[i]都是一个TsuiTabSheet *,在代码中生成了新的TsuiTabSheet实例并且指定了Owner(Form),那么除非主动释放了pts[i](比如用delete pts[i]),或者其Owner(Form)进行了释放,其占用的资源是一直存在的(包括TsuiTabSheet的Name,所以会提示名称已经存在)。
举一个最简单的例子,在某个按钮的点击事件中添加以下代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TButton *btn = new TButton(this);
btn-> Parent = this;
btn-> Name = "Btn1 ";
btn-> Show();
}
以上代码生成一个新的按钮在窗体上,并且按钮的名字为Btn1,其Owern是this(也就是Form),那么除非delete btn或者由关闭这个窗体(这时Owner会负责释放Btn1的资源),否则其占用的资源是一直存在的。当第二次点击Button1时,执行到btn-> Name这一行代码时,将提示Btn1组件已经存在。当然,你可以不指定btn的Name,这样就不会报名称已存在的提示。