如何在两个窗体之间传值。

happyno9 2003-01-02 01:37:35
点击a窗体的按钮建立b窗体。
b窗体有数个编辑框,如何在点击b窗体的ok后,将b窗体的编辑框的值传给a窗体。


谢谢!
...全文
172 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyflyflylflyfly 2003-01-05
  • 打赏
  • 举报
回复
同意Libran()前辈的看法!建议不使用全局变量
llmm 2003-01-05
  • 打赏
  • 举报
回复
楼主哪里去了,这不是说的很明白了吗,使用include,然后用窗口指针,就可以了
GoogleGeek 2003-01-05
  • 打赏
  • 举报
回复
最好用发送消息的方式
SendMessag(m_hWnd,WM_YOUR_MESAAGE,WPARAM(yourdata),LPARAM(otherdata));
--------------------
我以前是学vc的
zbyjjyy 2003-01-05
  • 打赏
  • 举报
回复
用全局变量,如果无法避免

最好是用#include的办法

如果b窗体只用于ShowModal(如一个输入对话框),则可以在b的cpp文件中定义一个函数如GetInput:
AnsiString GetInput()
{
Tb *b=new Tb(0);
bool result=b->ShowModal();
AnsiString temp=b->Edit1->Text;
delete b;
return(result==mrYes?temp:AnsiString());
}
在a的cpp中加入extern AnsiString GetInput(),
在按钮事件中加入GetInput()即可。
windstrom 2003-01-05
  • 打赏
  • 举报
回复
如果无法避免 那你就用全局变量
iamleejun 2003-01-05
  • 打赏
  • 举报
回复
我在用perl 做的程序中都不用全局变量
95533 2003-01-05
  • 打赏
  • 举报
回复
我喜欢全局变量。:)
GeoPhoenix 2003-01-05
  • 打赏
  • 举报
回复
最好是通过一个数据结构来传递,数据结构在被调用的窗体的构造函数里实现传递这样比较方便
kingkee 2003-01-05
  • 打赏
  • 举报
回复
全局变量大大的不要!
copy_paste 2003-01-02
  • 打赏
  • 举报
回复
再严重抗议一下。。。。

:)
copy_paste 2003-01-02
  • 打赏
  • 举报
回复
严重抗议使用Form1...FormN之类,由VCL生成的全局变量。。。

用指针,,,
通过封装访问,,,

看了那么多的VCL代码,很少见有说为了两个类实例之间访问而使用全局变量的例子,都是通过对象指针,事件指针,进行通讯的。。。
copy_paste 2003-01-02
  • 打赏
  • 举报
回复
严重抗议全局变量。。。

用指针。。。。
用函数。。。。
用局部变量。。。。
child_bj 2003-01-02
  • 打赏
  • 举报
回复
最好还是别用全局变量,严重破坏封装性。

就放在FORM的PUBILC里,然后其他的这样访问:
Form1->xxx;
zbc 2003-01-02
  • 打赏
  • 举报
回复
我倒是觉得重载构造函数来做更好一些,如果你以后改程序的时候,你的窗体名称一变,那你不是得各个窗体都得去修改了?!
favorit 2003-01-02
  • 打赏
  • 举报
回复
用include,前面都说得很清楚了
windcsn 2003-01-02
  • 打赏
  • 举报
回复
同意使用include,然后用窗体的指针来传递
如form1为主窗体,其中一按牛事件:
#include "TForm2.h"
void __fastcall TForm1::Button1Clic()
{
TForm2 *form2 = new TForm2(this);
form2->ShowModal();
if(form2->ModualResult)//form2按下ok按牛
{
ShowMessage(form2->Edit1->Text );
}
delete form2;
}
yangguo_god 2003-01-02
  • 打赏
  • 举报
回复
在a.cpp中加
#include "b.h"
设置为String a=Formb->Edit1->Text;
ShowMessage("a");
annkie 2003-01-02
  • 打赏
  • 举报
回复
a.cpp
#include "b.h"
.........
Edit1->Text = frmB->Text1->Text;
.........
netsys2 2003-01-02
  • 打赏
  • 举报
回复
"你可以用全局变量试试,到时候多了,我看你怎么管理"
------->很容易管理,我的规则:
1)凡是在单一文件中使用的,直接在CPP前定义
2)可能被其它窗体使用的,在名称前加g_XXX,然后在本窗体的.h文件中增加
extern int g_XXX,其它的窗体直接使用就可以了,而且凡是看到g_打头的就知道是全局变量
windtransient 2003-01-02
  • 打赏
  • 举报
回复
全局变量才是不好的习惯呢!!!!!
你可以用全局变量试试,到时候多了,我看你怎么管理!!!!
面向对象的程序员应该尽量不用全局变量
我赞成Libran(),但我认为最好是取public变量的值,你可以在b 点确定后把
编辑框的值传给public变量,a就可以从b 的public变是量中得到数据。也可以在b 点确定后把编辑框的值传给a 的public变量,这样a 只要从自己处取值就可以了!
加载更多回复(2)

13,825

社区成员

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

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