【发布时间】:2014-06-03 13:27:38
【问题描述】:
我做了2个表格。 MainForm 和 ChildForm(我设置成为可用的表单)
设计 >> http://i.imgur.com/UkV7lZh.png
当我想调用我的 ChildForm 时使用此代码
void __fastcall TMainForm::ChildForm1Click(TObject *Sender)
{
if(!ChildForm)
{ ChildForm = new TChildForm(this); }
else
{ ChildForm->WindowState=wsNormal; }
}
然后关闭
void __fastcall TChildForm::FormClose(TObject *Sender,
TCloseAction &Action)
{
Action=caFree;
}
为什么当我打开 ChildForm 然后我关闭。以及何时再次打开。 ChildForm打不开??
#主窗体
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h" //ChildForm
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ChildForm1Click(TObject *Sender)
{
if(!ChildForm)
{ ChildForm = new TChildForm(this); }
else
{ ChildForm->WindowState=wsNormal; }
}
【问题讨论】:
-
某事告诉我,您还需要在
FormClose的正文中将ChildForm设置为NULL。 -
TChildForm::TChildForm中的代码是什么?如果它以某种方式保留了它所获得的指向TMainForm的指针的副本,那么应该可以告诉它重置它所持有的ChildForm指针。 -
@didierc:这是正确的答案,因此您应该将其发布为答案,而不是评论。但是,我建议在孩子的析构函数中重置指针,而不是在 OnClose 事件中。
-
@didierc:谢谢.. 它的工作。 :)
标签: c++ c++builder mdi c++builder-6