作者jclc8855 (5588clcj)
看板C_and_CPP
标题[问题] 请教BCB中不同Form中变数的传递
时间Thu Jul 23 21:09:15 2009
想请问两个不同的Form,元件数值传递的问题
一个简单的程式范例如下:
假设我原先有一个Form1,我想由Form1叫出另一个Form2
就在Form1设计完後New一个新的Form2
并在Project的Options里Form的设定把Form1设定为Auto-create forms
Form2设定为Available forms
接着在Unit1.cpp里
#include "Unit2.h"
并设定一个按钮启动Form2,程式码如下
void __fastcall TForm1::Button3Click(TObject *Sender)
{
TForm2 *Form2;
Form2 = new TForm2(Application);
Form2->Show();
}
最後於Form2的Onclose事件中编辑程式码如下
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
}
即完成由Form1以一个Button呼叫Form2的简单程式
------------------------------------------------------------------------------
但我想请教的是,假设我今天在Form1中放一个Edit用来输入我的要的数值
而在Form2中将Form1的Edit做加减乘除的动作并於Form2中一个Label显示出答案
这样应该怎麽做
我是有试过这样的修改
在Unit1.cpp中:
//$$---- Form CPP ----
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
double x=30;
double y=x/2;
在Unit2.cpp中:
void __fastcall TForm2::Button1Click(TObject *Sender)
{
extern double x;
extern double y;
Label3->Caption = y;
}
是成功的.......
但....
如果在Unit1.cpp中
将double x=30;
double y=x/2;
改成
double x = StrToFloat(Edit1->Text);
double y=x/2;
就会出错...
有没有人能帮我解答?
不好意思因为急所以文章写得很冗长又有点乱,请见谅...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.127.33.83
1F:→ as0:可以直接extern TForm1 *Form1 就都可以用了吧 07/23 22:41
2F:推 milkdragon:在Unit2.cpp中include Unit1.h 就可以使用Form1的东西 07/23 23:50
3F:→ jclc8855:不好意思,两个方法我都有用了,但还是有错... 07/24 08:56
4F:→ jclc8855:问题好像出在double x = StrToFloat(Edit1->Text); 07/24 08:56
5F:→ jclc8855:会出现这个ERROR如下: 07/24 08:58
6F:→ jclc8855:[C++ Error]Unit1.cpp(10):E2451 Undefined symbol'Edit' 07/24 08:59
7F:推 VictorTom:Edit1是Form1的没理由在自己的cpp中找不到Simbol吧@_@" 07/24 09:30
8F:→ VictorTom:看error msg, 您是不是Edit少打了个1啦....@_@" 07/24 09:30
9F:推 goodrain:应该是他不知道你的Edit1是哪个Form的 要用Form1->Edit1 08/17 00:34
10F:→ goodrain:我居然回了一年前的文章 ORZ 08/17 00:34