C++Buidler6中需要注意的几个问题
2010-10-19 13:56:17 来源:WEB开发网核心提示:delete Form2_N; }Form2_N中的函数:void __fastcall TForm2_N::Button21Click(TObject *Sender){ Form3->ShowModal();}void __fastcall TForm2_N::Button22Click(TObject *S
delete Form2_N; }
Form2_N中的函数:
void __fastcall TForm2_N::Button21Click(TObject *Sender)
{ Form3->ShowModal();
}
void __fastcall TForm2_N::Button22Click(TObject *Sender)
{ Form1->Edit1->Text=Form2->Edit2->Text;
Form1->Memo1->Text=Form2->Memo2->Text;
this->Close(); }
Form3中的函数:
void __fastcall TForm3::Button3Click(TObject *Sender)
{ Form2->Edit2->Text=Form3->Edit3->Text;
Form2->Memo2->Text=Form3->Memo3->Text;
this->Close(); }
测试中发现,Form3上Edit3和Memo3中的文字不能赋值到Form2_N的Edit2和Memo2中,但Form2_N上Edit2和Memo2中的文字可以赋到Form1上的Edit1和Memo1中。
如果修改Form1中Button1的Click事件的执行语句,将创建Form2_N改为创建Form2,并将在其它地方出现的Form2_N改为Form2:
void __fastcall TForm1::Button1Click(TObject *Sender)
{ Form2=new TForm2(Form1);
Form2->ShowModal();
delete Form2; }
这样,Form3上Edit3和Memo3中的文字就能赋给Form2的Edit2和Memo2了。
创建属于TForm2类的窗口Form2_N和Form2时,不同点在于,在创建Form2_N时(点击Button1时),需要向系统申请内存创建。Form2_N的创建过程 “TForm2 * Form2_N=new TForm2(Form1);”中包含了定义新的窗体类Form2_N和对其进行初始化两个动作, Form2_N在定义过程中申请了内存空间;而Form2是在Design-Time定义的窗体,在程序初始化时就完成了申请内存空间的动作。两种窗体申请内存的时间先后影响了它们对所传递数值的接受。
三、结语
C++ Builder中有些隐含的使用限制还不太直观,像动态窗口的创建会给窗口之间的变量赋值带来不便,而在Delphi中创建动态窗口(Form1:=TForm1.Create(self);)就不存在这样的问题。因此如果遇到在C++ Builder中的不能用一般方法解决的一些问题时,还需要进一步熟悉C++ Builder,细致分析,多进行尝试摸索解决,积累了一些经验,就可以提高编码效率。
Form2_N中的函数:
void __fastcall TForm2_N::Button21Click(TObject *Sender)
{ Form3->ShowModal();
}
void __fastcall TForm2_N::Button22Click(TObject *Sender)
{ Form1->Edit1->Text=Form2->Edit2->Text;
Form1->Memo1->Text=Form2->Memo2->Text;
this->Close(); }
Form3中的函数:
void __fastcall TForm3::Button3Click(TObject *Sender)
{ Form2->Edit2->Text=Form3->Edit3->Text;
Form2->Memo2->Text=Form3->Memo3->Text;
this->Close(); }
测试中发现,Form3上Edit3和Memo3中的文字不能赋值到Form2_N的Edit2和Memo2中,但Form2_N上Edit2和Memo2中的文字可以赋到Form1上的Edit1和Memo1中。
如果修改Form1中Button1的Click事件的执行语句,将创建Form2_N改为创建Form2,并将在其它地方出现的Form2_N改为Form2:
void __fastcall TForm1::Button1Click(TObject *Sender)
{ Form2=new TForm2(Form1);
Form2->ShowModal();
delete Form2; }
这样,Form3上Edit3和Memo3中的文字就能赋给Form2的Edit2和Memo2了。
创建属于TForm2类的窗口Form2_N和Form2时,不同点在于,在创建Form2_N时(点击Button1时),需要向系统申请内存创建。Form2_N的创建过程 “TForm2 * Form2_N=new TForm2(Form1);”中包含了定义新的窗体类Form2_N和对其进行初始化两个动作, Form2_N在定义过程中申请了内存空间;而Form2是在Design-Time定义的窗体,在程序初始化时就完成了申请内存空间的动作。两种窗体申请内存的时间先后影响了它们对所传递数值的接受。
三、结语
C++ Builder中有些隐含的使用限制还不太直观,像动态窗口的创建会给窗口之间的变量赋值带来不便,而在Delphi中创建动态窗口(Form1:=TForm1.Create(self);)就不存在这样的问题。因此如果遇到在C++ Builder中的不能用一般方法解决的一些问题时,还需要进一步熟悉C++ Builder,细致分析,多进行尝试摸索解决,积累了一些经验,就可以提高编码效率。
更多精彩
赞助商链接