怎么将参数传递给一个 new TForm 生成的表单?

freeia 2003-08-25 10:05:47
我像把参数传递给一个通过new生成的表单,如何做到?
最好能给出示例代码,谢谢!
...全文
29 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
sczyq 2003-08-27
  • 打赏
  • 举报
回复
构造函数
freeia 2003-08-27
  • 打赏
  • 举报
回复
"
错了,更正。
hongliqiu(在火中) 的写法,参数将无法在FormCreate,可以在FormShow、FormActivate中使用,如果你确认该参数不需要在FormCreate中使用,可以用hongliqiu(在火中) 的写法,否则,就得改构析函数。
"
是改析构函数,还是改构造函数啊?我理解为改构造函数.
sczyq 2003-08-27
  • 打赏
  • 举报
回复
错了,更正。
hongliqiu(在火中) 的写法,参数将无法在FormCreate,可以在FormShow、FormActivate中使用,如果你确认该参数不需要在FormCreate中使用,可以用hongliqiu(在火中) 的写法,否则,就得改构析函数。
zihan 2003-08-27
  • 打赏
  • 举报
回复
你可以直接写一个函数,在里面在new就可以了,

如我在那个窗体里面写下如下代码\

class __stdcall TForm1:MYFormCreate(Param: Variant);
{
TForm1* Form1;
Form1 = new TForm1;
//在这里写你的这个参数的作用就可以了。
return Form1;
}
然后在其他地方调用这个函数就可以了,如
TForm1 *Form1 = TForm1->MyFormCreate(1);
自己就不用另外写创建函数了
我这里不感确定那个class 对不对,如果不对,就该为TForm1试试,因为最近一直用Delphi都忘记了CB的用法了,Delphi是这样用的。
freeia 2003-08-27
  • 打赏
  • 举报
回复
还是等几天再结贴吧,觉得大家回答得太精彩了.
Cocoky 2003-08-27
  • 打赏
  • 举报
回复
我平时都是用的第一种方法
可行
freeia 2003-08-26
  • 打赏
  • 举报
回复
各位,等我使用后再给分,先憋着.
另:
我还有两个帖子可以去看看,谢谢了!

1. http://expert.csdn.net/Expert/topic/2186/2186091.xml?temp=8.828372E-02

2. http://expert.csdn.net/Expert/topic/2188/2188024.xml?temp=.9966699
Robin 2003-08-26
  • 打赏
  • 举报
回复
直接自己定义,然后调用Parent Class!
niuzhenjun 2003-08-25
  • 打赏
  • 举报
回复
有三种方法可以实现:
1. hongliqiu(在火中) 的方法。
2. 就像 sczyq(我又...........) 说得那样,:hongliqiu(在火中) 的写法,参数将无法在FormCreate、FormShow、FormActivate中使用。但是你可以将1的方法改造一下,将
public: // User declarations
<TYPE> YourMember; //你的新Form中需要用到的参数。
改为公有属性。
public: // User declarations
__property <TYPE> YourMember = {read = Getnumber,write = Getnumber}; //你的新Form中需要用到的参数。
这样的好处是当你对YourMember赋值/取值时可以触发一个过程Getnumber(当然可以在read和write中触发不同的过程)来实现额外的工作。
3.改写构造函数,就像sczyq(我又...........) 的代码那样实现。
sczyq 2003-08-25
  • 打赏
  • 举报
回复
:hongliqiu(在火中) 的写法,参数将无法在FormCreate、FormShow、FormActivate中使用,
sczyq 2003-08-25
  • 打赏
  • 举报
回复
改写构析函数!

__fastcall TForm1::TForm1(TComponent* Owner, AnsiString cStr)
: TForm(Owner)
{
  MyString = cStr; // MyString 在.h中声明类型为AnsiString
}

使用时

AnsiString ccStr = "111";
Form1 = new TForm1(this, ccStr);
freeia 2003-08-25
  • 打赏
  • 举报
回复
高!试试看!
hongliqiu 2003-08-25
  • 打赏
  • 举报
回复
直接写NewForm中的公共属性就行了。
class TNewForm: public TForm
{
__published: // IDE-managed Components
private: // User declarations
public: // User declarations
<TYPE> YourMember; //你的新Form中需要用到的参数。
};

在原Form中的方法中:
newForm = new TNewForm(this);
//之后直接写参数就行了
newForm->YourMember = ??? //需要传入的值。
wangxd 2003-08-25
  • 打赏
  • 举报
回复
构造最好
freeia 2003-08-25
  • 打赏
  • 举报
回复
我现在用的就是global方法,觉得不爽啊.
hongliqiu 2003-08-25
  • 打赏
  • 举报
回复
还有一种方法,采用Global参数。
呵呵,有时候为了清晰各个Form之间的联系,我也使用Global参数(相当于中间变量)。

几种方法各有各的好处,看你怎么用了,第一种方法最简单直接。

freeia 2003-08-25
  • 打赏
  • 举报
回复
To niuzhenjun:
是不是第二种方法最好?

13,825

社区成员

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

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