Delphi 动态创建的窗体间如何传值?

gouxiaoyu 2009-07-22 04:31:50
在父窗体内动态创建了一个子窗体
//noteFrm_:= TFrmNote.Create(Self);
//noteFrm_.Show;

statFrm_:= TFrmStat.Create(Self);
statFrm_.Show;
我想点击statFrm的一个按钮后吧statFrm的一个edit1.Text传给noteFrm的edit2.Text
如果noteFrm不存在就动态创建一个并把edit.Text传给他的edit2.Text
代码该怎么写?

还望各位大虾不吝赐教!!
...全文
811 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
y5051500110 2012-08-17
  • 打赏
  • 举报
回复
悲剧的楼主
kfanffvga 2009-07-23
  • 打赏
  • 举报
回复
假如仅仅是为了edit的话,那更加简单,SendMessage(Edit.Handle,WM_SELText,0,LongInt(PChar))
kfanffvga 2009-07-23
  • 打赏
  • 举报
回复
假如仅仅是为了传值的话,有4种方式
1.在传值和被传值之间用函数来实现
2.用变量来实现
3.用共享的数据空间,比如datamodule来实现
4.用消息来实现
看你喜欢了
gouxiaoyu 2009-07-23
  • 打赏
  • 举报
回复
好吧 谢谢您的关注! 我需求是这样的: 我设计了一个父窗体和两个子窗体Form1和Form2 在父窗体上有两个按钮 点击能创建相应的窗体 现在我点击一个按钮创建了Form2,并再Form2中查询出了数据放在了DBGrid中,我想双击DBGrid的一 行数据就把DBGrid中第一列的值取出, 并判断Form1是否已经被创建 如果被创建了我就获取它的实例, 如果没有被创建就创建它。 然后把DBGrid中第一列的值传给Form1的一个edit,同时将这个值作为参数查询数据库, 并把查询获得的数据给Form1 感激不尽!!!
gouxiaoyu 2009-07-23
  • 打赏
  • 举报
回复
算了 把分给xinxinshou2009吧 感谢大家的帮助
xinxinshou2009 2009-07-23
  • 打赏
  • 举报
回复
form是你自己设计期就创建的,有什么实例不实例的?
7年 2009-07-23
  • 打赏
  • 举报
回复
LZ的意思是不是在取得edit1的值后窗体就关闭了?然后向把这值传个另一个窗体啊?
gouxiaoyu 2009-07-23
  • 打赏
  • 举报
回复

要获取Form1的实例 才可以用Show 啊
DBGrid第一列是 :当前选中的第一列
谢谢xinxinshou2009的关注
xinxinshou2009 2009-07-23
  • 打赏
  • 举报
回复
首先,你要明白一个事情,既然你已经在设计期搞定了那两个form,那么在你程序中就不要再重复创建form了,只要根据需要把那两个form打开就行了,直接用form1.show; 另外你说双击dbgrid的一行,就把第一列数据取出,传给edit,但是你要知道,第一列哎,数据不止一条,你怎么传给edit?
xinxinshou2009 2009-07-22
  • 打赏
  • 举报
回复
如果notefrm已经打开,则正常传送,如果notefrm还没显示就把它显示出来再传送?
xinxinshou2009 2009-07-22
  • 打赏
  • 举报
回复
你是不是说,点击statfrm上的一个按钮,然后把statfrm上的edit1的值传送给notefrm上的edit1 ?
xinxinshou2009 2009-07-22
  • 打赏
  • 举报
回复
汗,白忙活了。请你重新清楚的、完整的把问题再说一遍,好嘛?(几乎是请求的语气了)
gouxiaoyu 2009-07-22
  • 打赏
  • 举报
回复
我想是我表达错了 第一次用CSDN寻求帮助 - -~!
我有一个unitu NoteFrm;
界面都是画好的 有edit1控件。。
yct0605 2009-07-22
  • 打赏
  • 举报
回复

var
noteFrm_: TFrmNote;
begin
if not assigned(noteFrm_) then
begin
noteFrm_:=TFrmNote.Create(Self);
noteFrm_.Show;
end;
noteFrm_.edNoteNum.Text:= ADOQ2.FieldByName('code').AsString;

这回应该没问题了吧。
xinxinshou2009 2009-07-22
  • 打赏
  • 举报
回复
明白了,你只是判断了noteFrm_是不是存在,存在就发数据过去,可是你还没有创建noteFrm_上的edit控件呢,所以没有数据显示。在创建noteFrm_的语句后面,加个创建edit的语句就搞定了
gouxiaoyu 2009-07-22
  • 打赏
  • 举报
回复
谢谢大家的关注
gouxiaoyu 2009-07-22
  • 打赏
  • 举报
回复
动态窗体 间传输数据 肯定是先动态创建窗体
再把数据传入咯 如果noteFrm存在 我就要获取它的实例把edit.Text传给它
xinxinshou2009 2009-07-22
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 gouxiaoyu 的回复:]
是没有错误 可noteFrm_ 还是无法显示。。
[/Quote]

问题转移了,原先是数据传送,现在改成窗体显示了
gouxiaoyu 2009-07-22
  • 打赏
  • 举报
回复
是没有错误 可noteFrm_ 还是无法显示。。
yct0605 2009-07-22
  • 打赏
  • 举报
回复
我刚才试了试,没有错误。
加载更多回复(15)

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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