如何调用其它窗体的公共变量?

huygtt 2008-12-17 10:16:51
在我的一个窗体中有一个按钮,点击这个按钮就会进入到另外一个打印界面的窗体,我现在想对上一个窗体中的数据进行打印,我利用了QReport打印功能,然而,我在打印界面的窗体中需要调用上一个窗体的一个变量,我所使用的方法是:AnsiString num=form1->Edit1->Text;调用出来的结果这个编辑框中的最初的数据,也就是Edit1;但是Edit1中的数据已经发生变化了。
请问是不是只可以调用最初的状态的数据?
...全文
118 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlefish0101 2009-01-10
  • 打赏
  • 举报
回复
在主窗体中定义全局变量:
AnsiString num;

在需要调用的窗体上定义
extern AnsiString num;

在Edit的change事件中:
x=this->Edit3->Text ;
估计就可以实现
utin431 2009-01-10
  • 打赏
  • 举报
回复
在上一窗体(Form1)的头文件public:部分定义一个变量form1num,保存Edit的值,在要使用的窗体,用num = Form1->form1num;获取参数的值。
swanblue 2009-01-09
  • 打赏
  • 举报
回复
放在变量里,取变量的值。还不行的话,把程序重新build一下试试。
sunyuchuan86 2008-12-18
  • 打赏
  • 举报
回复
如果你新的窗体弹出之前,第一个窗体没有关闭,你可以把你想保存的值保存到一个静态变量中,然后你再去取变量的值。可能你弹出新窗体的时候,旧的窗体就重画了。那它上面的一些控件可能又重新初始化了。所以,还是建议你用一个静态的全局变量去存储要调用的值。
Jim@luckeeinc.com 2008-12-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huygtt 的回复:]
我就是这样做的,如果Edit1中最初的数据为123456,那在后面这个编辑框中的数据不管变为多少,调用出来的不是123456就是一个空白,不会得到变化后的数据。
[/Quote]

如果要等到變化后的數據就照你寫的AnsiString num=form1->Edit1->Text;不就可以了


如果要等到最初的數據 那就先定義個一個String變量,先把最初的值存起來,然後就不要動那個變量了,要用的時候再取
huygtt 2008-12-18
  • 打赏
  • 举报
回复
你们说的方法我都试过了,但是还是一样不行,还是一个空白,我再想想其它方法
jingzhongrong 2008-12-17
  • 打赏
  • 举报
回复
窗体A调用窗体B

重载一个窗体A的构造函数把窗体B的指针传到窗体A中保存起来
TripH0101 2008-12-17
  • 打赏
  • 举报
回复
加个这个:

void __fastcall TForm1::Edit3Change(TObject *Sender)
{
x=this->Edit3->Text ;
}


再在下一个窗口中调用x
huygtt 2008-12-17
  • 打赏
  • 举报
回复
我就是这样做的,如果Edit1中最初的数据为123456,那在后面这个编辑框中的数据不管变为多少,调用出来的不是123456就是一个空白,不会得到变化后的数据。
TripH0101 2008-12-17
  • 打赏
  • 举报
回复
在上一个窗口(如Form1)的头文件中,在public 下声明一个变量x,当前窗口引用这个头文件,引用变量 :Form1->x

13,822

社区成员

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

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