不解,不解…………(她多余吗“)

shudingbo 2003-01-07 07:25:54
在bcb中
为啥每个类
都有一个
TForm1 *Form1;//指向自己的指针
这有啥用,用this 不就可以了吗!
而且删了后编译还通不过!不和标准哟!

望赐教!!!!!!
...全文
41 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
shudingbo 2003-01-08
  • 打赏
  • 举报
回复
我的观点同 jishiping(JSP 季世平) 差不多!
Form的实现应该完全掌握在程序员的手上,
而不是 由IDE 自动创建!
hatumei 2003-01-08
  • 打赏
  • 举报
回复
这是C++基本语法呀,Form1是TForm的一个全局实例.
在类代码里用this指向的是当前实例.它不局限特定的实例.
jishiping 2003-01-08
  • 打赏
  • 举报
回复
在Form2里访问自己的成员,直接写成员名就可以了。比如:
class TForm2 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
int X, Y;
public: // User declarations
__fastcall TForm2(TComponent* Owner);
};

__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
X = 10; Y = 10;
//不要写成 Form2->X = 10; Form2->Y = 10;
}
tccsdn 2003-01-08
  • 打赏
  • 举报
回复
to 季大侠:
如果调用Form2的成员时要怎么调用呢,我一前就是这样调用的,那呀怎么写才
安全呢,望赐教
jishiping 2003-01-08
  • 打赏
  • 举报
回复
这样做的目的,就是为了在WinMain里自动创建Form使用的。凡是Form没有自动创建的,都可以将那行去掉。其实我也认为Borland不应该这样做,这样做害苦了很多初学BCB的人,他们总喜欢动不动就使用这些外部变量,明明是Form2里的代码,访问Form2的成员时,好多初学者喜欢在前面加上一个Form2->,这样的写法是不规范的,也是很危险的。
tccsdn 2003-01-08
  • 打赏
  • 举报
回复
谢谢,有学了一招
jishiping 2003-01-08
  • 打赏
  • 举报
回复
"Form1访问Form2的呢,象Form2上面的什么控件什么之类的?"

这时可以通过那个全局变量访问,但不是一定要通过全局变量,可以这样做:
TForm2* Form = NULL;
for(int n=0; n<Screen->FormCount; n++) {
Form2 = dynamic_cast<TForm2*>(Screen->Forms[n]);
if (Form2!=NULL) break;
}
这样你也可以得到Form2,然后通过这个局部变量Form2访问Form2的成员。当
然了,这样比较费事一点。我的意思就是,坚决反对在Form2里使用Form2->
这样的写法。
mustang_zr 2003-01-08
  • 打赏
  • 举报
回复
学习
tccsdn 2003-01-08
  • 打赏
  • 举报
回复
Form1访问Form2的呢,象Form2上面的什么控件什么之类的?
Wliqian 2003-01-07
  • 打赏
  • 举报
回复
真有意思,不同的人不同的思路,不同
的回答,向大家学习。
yhz 2003-01-07
  • 打赏
  • 举报
回复
这句话是要创建一个窗体的实例,

没有他,当然不行。
ThinkX 2003-01-07
  • 打赏
  • 举报
回复
为了让其他的cpp和h文件可以访问这个Form。
mopyman 2003-01-07
  • 打赏
  • 举报
回复
我靠,这是标准的C Plus Plus语法,你的程序要运行总要有个TForm1类的实例吧,不然怎么出来GUI
这是窗体类的实例化,必须要的
楼主结贴吧.


-------------------------------------------------------------------
该问题已经结贴 ,得分记录:mopyman(20)
Wliqian 2003-01-07
  • 打赏
  • 举报
回复
这得去问设计BCB的人,为什么这样规定。
建议先学该怎么样,再来学为什么要这样。
大大怪老张 2003-01-07
  • 打赏
  • 举报
回复
学习
myy 2003-01-07
  • 打赏
  • 举报
回复
这是:
BCB的IDE为了便于实现“非模式显示 并且 是Auto create 的窗体”,比如
主窗体,如不是上述情况的Form,完全可以象 PPower() 说的那样删除掉。
cdws222 2003-01-07
  • 打赏
  • 举报
回复
不多余,以后你会明白的
勉励前行 2003-01-07
  • 打赏
  • 举报
回复
.h File
//extern PACKGE TForm1 *Form1 ; //delete it

.cpp File
//TForm1 *Form1;//delete it

多看看C++
kingfish 2003-01-07
  • 打赏
  • 举报
回复
删掉后自己还是要写

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
TForm1 *Form1;
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
kingfish 2003-01-07
  • 打赏
  • 举报
回复
//删了后编译还通不过

???
加载更多回复(1)

13,825

社区成员

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

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