new一个Form和CreateForm的区别是什末?

gegegeg 2003-05-02 02:39:35
我在窗体TfPublicFunc中动态增加一个分割条控件:

void __fastcall TfSzoilSubSys::P_WATCHClick(TObject *Sender)
{
if(fPublicFunc == NULL)
Application->CreateForm(__classid(TfPublicFunc), &fPublicFunc);
fPublicFunc->Show();
}

void __fastcall TfPublicFunc::FormCreate(TObject *Sender)
{
Splitter1=new TSplitter(fPublicFunc);
Splitter1->Parent=fPublicFunc;
Splitter1->Color=0x7fffffff;

}
//------------------------------------------------------------------------
结果分割条出不来,如果我把Application->CreateForm(__classid(TfPublicFunc), &fPublicFunc);替换为Application->CreateForm(__classid(TfPublicFunc), &fPublicFunc);就可以了。为什末呢?
new一个Form和CreateForm的区别是什末?
请大虾指教。
...全文
78 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ch_builder 2003-05-03
  • 打赏
  • 举报
回复
给我吓了一跳,我想你的问题是有点问题,这下看明白了,首先这里有必要说一下VCL中的组件,如果要继承只能用如下形式:(这是PASCAL的原因,没办法)
父类 *子类=new 父类(对象|NULL),不用说你用的形式一定是错了。
当然用CreatForm()来动态的创建一个窗口是一定可以的了。这里还有一点要说明的用new 来创建窗口应该还要注意:父类 *子类=new 父类(Application),里面一定是Application,当然你要是把=和=号前面的内容全去掉在这里也是可以的:P
gegegeg 2003-05-03
  • 打赏
  • 举报
回复
用myy() 的方法可以,不过为什末?Splitter1=new TSplitter(fPublicFunc);
Splitter1->Parent=fPublicFunc;与Splitter1=new TSplitter(this);
Splitter1->Parent=this;有什末区别吗?
多谢qibo999(行路者) ,不过用你的方法还是出不来。:)
qibo999 2003-05-02
  • 打赏
  • 举报
回复
TfPublicFunc *fPublicFunc = new TfPublicFunc(Application);试一下。
记得delete啊。
gegegeg 2003-05-02
  • 打赏
  • 举报
回复
对不起!我的问题有误,应该是这样的:

我在窗体TfPublicFunc中动态增加一个分割条控件:

void __fastcall TfSzoilSubSys::P_WATCHClick(TObject *Sender)
{
if(fPublicFunc == NULL)
fPublicFunc = new TfPublicFunc(NULL);
fPublicFunc->Show();
}

void __fastcall TfPublicFunc::FormCreate(TObject *Sender)
{
Splitter1=new TSplitter(fPublicFunc);
Splitter1->Parent=fPublicFunc;
Splitter1->Color=0x7fffffff;

}
//------------------------------------------------------------------------
结果分割条出不来,如果我把fPublicFunc = new TfPublicFunc(NULL);替换为Application->CreateForm(__classid(TfPublicFunc), &fPublicFunc);就可以了。为什末呢?
new一个Form和CreateForm的区别是什末?
请大虾指教。
youngjam 2003-05-02
  • 打赏
  • 举报
回复
看看这个是不是你的问题得关键?
By default, the form created by the first call to CreateForm in a project becomes the application抯 main form.
myy 2003-05-02
  • 打赏
  • 举报
回复
void __fastcall TfPublicFunc::FormCreate(TObject *Sender)
{
Splitter1=new TSplitter(this);
Splitter1->Parent=this;
Splitter1->Color=0x7fffffff;

}//这样应该行了

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧