CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

还是窗体问题,怎么也弄不明白

楼主guess1975(猜)2003-09-02 18:30:26 在 C++ Builder / 基础类 提问

Form2   Form3   两个窗体,    
  Form2是MDIChild   设为Available   form    
  Form3是fsNomal     设为Available   form   Auto_create   forms  
  在Form2窗体的button2控件上写:Form3->ShowModal();  
  在Form3窗体的button3控件上写:Form2->Edit1->Text=Form3->Edit1->Text;  
  然后编译运行,程序出现Form1窗体,点击button1   出现Form2窗体  
  点击在Form2窗上体的button2控件,出现Form3窗体,可是点击在Form3窗上体的button3控件时出现了错误信息,并不能“Form2->Edit1->Text=Form3->Edit1->Text”这是怎么会事   如何才能“Form2->Edit1->Text=Form3->Edit1->Text”  
  注:Form1窗体是主窗体,窗体的button1是这样写的:  
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
    TForm2   *   NewChildForm;  
    NewChildForm=new   TForm2(Application);  
  } 问题点数:20、回复次数:5Top

1 楼CompositeBowMan(白天瞎鸡巴忙,晚上鸟没事)回复于 2003-09-02 18:35:11 得分 0

unit   3是否include了unit2,否则怎么访问Form2Top

2 楼linjl(木子)回复于 2003-09-02 19:09:35 得分 3

呵呵,你应该没有在   unit3   的代码中包含   unit2.h   吧,你不包含它,   Form3   就不会知道在  
  From2   中有     Edit1   这么一个控件存在,自然你在   From3   中调用   Edit1   就会出错啦。  
  在   unit3.cpp     中加上   #include<unit2.h>   就没事了.Top

3 楼GeoPhoenix(天鸽)回复于 2003-09-02 20:18:47 得分 2

不应该是楼上说的原因,如果是那个原因,编译就通不过,还是没得到form2指针,这个问题才是关键Top

4 楼nightfallrove(过儿 明月装饰了你的窗 你装饰了我的梦)回复于 2003-09-02 22:17:23 得分 15

不是没有include的原因,可能是因为窗体名重复了,,  
  在设计form2,form3时就会有两个全局变量form2,form3  
  一个是全局的一个是局部的,所以在调用  
  Form2->Edit1->Text=Form3->Edit1->Text”时因为Form2  
  是指那个全局的form2,也就是一个没有分配的Form2当然就会出错,  
  楼主既然写了:  
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
    TForm2   *   NewChildForm;  
    NewChildForm=new   TForm2(Application);  
  }  
  为什么还要用  
  Form2->Edit1->Text=Form3->Edit1->Text”呢?  
  应该用  
  “NewChildForm->Edit1->Text=Form3->Edit1->Text”  
  这时NewChildForm应该也是全局的,  
  要不就应该把  
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
    TForm2   *   NewChildForm;  
    NewChildForm=new   TForm2(Application);  
  }  
  改为  
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
    Form2=new   TForm2(Application);  
  }  
  这样应该就不会出问题了,  
  当然对于FORM3的处理也是要注意窗体名不能冲突,  
  楼主自已多理解,在对CB的程序结构不是很清楚的情况下  
  最好不要按自己的想法去编制一些比较”混乱“的程序,  
  有些东西只能是自己体会,别人讲也难得讲清,  
  呵呵,,  
  小弟的一点愚见,希望抛砖引玉了,,  
   
  Top

5 楼nightfallrove(过儿 明月装饰了你的窗 你装饰了我的梦)回复于 2003-09-02 22:24:28 得分 0

上面找错一点了,,不好意思  
  不是没有include的原因,可能是因为窗体名重复了,,  
  在设计form2,form3时就会有两个全局变量form2,form3在调用     //删掉数字,,,,  
  Form2->Edit1->Text=Form3->Edit1->Text”时因为Form2  
  是指那个全局的form2,也就是一个没有分配的Form2当然就会出错,  
  楼主既然写了:  
  //下同。。  
  呵呵,,Top

相关问题

  • 窗体上的横线是怎么弄出来?
  • 怎么使用多窗体?
  • 闪现窗体怎么做?
  • MDI窗体怎么使用
  • 怎么得到父窗体?
  • 怎么把窗体编译成dll,怎么调用窗体dll?
  • 怎么在主窗体中关闭所有子窗体
  • 在窗体SHOW时怎么不能关闭窗体的
  • 怎么使有子窗体的窗体永远在上面?急
  • MDI主窗体上的panel覆盖子窗体,怎么办?

关键词

  • 控件
  • application
  • 窗体
  • newchildform
  • tform
  • 全局
  • edit
  • form
  • 调用
  • fastcall

得分解答快速导航

  • 帖主:guess1975
  • linjl
  • GeoPhoenix
  • nightfallrove

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo