如何访问位于动态创建窗口内的控件?

coonypie 2005-11-12 03:00:35

MainForm动态创建Frame1

Frame动态创建Form1

Form1如何访问位于Frame1上的控件(比如Label)?

直接访问引发AV错误,希望各位不吝赐教。谢谢~
...全文
167 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
coonypie 2005-11-13
  • 打赏
  • 举报
回复
感谢ccrun(老妖)(www.ccrun.com),问题按你的方法得以解决

关键是pFrame = (TFrame1 *)Owner;

即获取Frame1实际产生对象的指针,我用错了方法

再次感谢

------------------------------------------------------
感谢aniven(Compile Fail)

不知道是不是我自己的原因导致没有通过,我会再按你的方式试试

再次感谢



coonypie 2005-11-13
  • 打赏
  • 举报
回复
谢谢rainfall19831109(恩恩)

是这样的,但问题还是没能解决。

继续请教~
编译失败 2005-11-13
  • 打赏
  • 举报
回复
应该是TFrame1 *Frame1=(TFrame1 *)this->Parent;
ccrun.com 2005-11-13
  • 打赏
  • 举报
回复
我看了看你的代码,好象你的Form1和MainForm不是一回事,对吧。

关键是在Form1中,再包含了Frame1的头文件以后,添加一个全局变量,如:
#include "Unit2.h" // 假设是Frame1的头文件
TFram1 *pFrame;

然后在Form1的构造函数中:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
pFrame = (TFrame1 *)Owner;
}

在Form1的Button3的点击事件中,改变Frame1中的Label1标题:
void __fastcall TForm1::Button3Click(TObject *Sender)
{
pFrame->Label1->Caption = "123";
}

编译失败 2005-11-13
  • 打赏
  • 举报
回复
void Button3Click()
{
TFrame1 *Frame1=this->Parent;
Frame1->Label1->Caption="xxx";
}

你上面的动态创建错了,该是
TFrame1 *pFrame = new TFrame1(this);
TForm1 *pForm = new TForm1(this);
rainfall19831109 2005-11-13
  • 打赏
  • 举报
回复
不要使用局部的指针
把pFrame和pForm指针定义成类的成员变量
coonypie 2005-11-13
  • 打赏
  • 举报
回复
谢谢ccrun(老妖)

采用:

MainForm 上Button1 Click 如下

TFrame *pFrame = new TFrame1(this);
pFrame->parent = MainForm;
pFrame->show();

Frame1显示后,其上的Button2 Click 如下

TForm *pForm = new TForm1(this);
pForm->parent = this;
pForm->show();

Form1显示后,其上Button3 Click 时需改变位于Frame1上的Label1的Caption

请教~
ccrun.com 2005-11-12
  • 打赏
  • 举报
回复
你是如何创建的?

13,825

社区成员

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

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