在Form1中声明的变量继承到Form2后,值就丢失了-高手赐教
以下是摘录的两个个窗口定义的主要部分,内容特简单,请不要怕难读,一晃就明白了~~
一共有两个窗体:Form1、From2;在Form1中声明的变量继承到Form2后,值就丢失了,我是在TForm1的FormCreate中给变量赋值的;如果在Form的初始化函数中赋值,变量就可以得到正确的值,为什么????
Form1 代码如下:
Form1.h
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
void __fastcall Button1Click(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
private: // User declarations
protected: // User declarations
String strProgram;
void setProgram(String _strProgram);
String getProgram();
virtual int SetNull(); //释放窗体类指针
virtual int iniForm();
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
Form1.cpp
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
// iniForm();
}
//---------------------------------------------------------------------------
void TForm1::setProgram(String _strProgram)
{
strProgram = _strProgram;
}
//---------------------------------------------------------------------------
String TForm1::getProgram()
{
return strProgram;
}
//---------------------------------------------------------------------------
//虚拟方法
int TForm1::iniForm()
{
setProgram("Form1");
return 1;
}
//---------------------------------------------------------------------------
//虚拟方法
int TForm1::SetNull()
{
Form1 = NULL;
return 1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
SetNull();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String a;
a = getProgram();
ShowMessage(a);
}
//---------------------------------------------------------------------------
/////////////////////////////////////////////////////////////////////////////
Form2 代码如下:
Form2.h
//---------------------------------------------------------------------------
class TForm2 : public TForm1
{
__published: // IDE-managed Components
private: // User declarations
protected: // User declarations
virtual int SetNull(); //释放窗体类指针
virtual int iniForm();
public: // User declarations
__fastcall TForm2(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
Form2.cpp
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm2(Owner)
{
}
//---------------------------------------------------------------------------
int TForm2::iniForm()
{
setProgram("Form2");
return 1;
}
//---------------------------------------------------------------------------
int TForm2::SetNull()
{
Form2 = NULL;
return 1;
}
//---------------------------------------------------------------------------