如何给程序中动态创建的控件指定事件(50分)

  • 主题发起人 主题发起人 sunwork
  • 开始时间 开始时间
S

sunwork

Unregistered / Unconfirmed
GUEST, unregistred user!
我要为几十个动态创建的控件指定一个事件,请问如何创建和指定。
我用过FORM->onkeydown = form1->onkeydown,好象不行,
请问哪位可以详细指导我,谢谢!!!我是用c++builder编程的。
 
???
FORM是什么? 自己定义的一个数组?
动态指定事件就是这样的, 例如:
for i := 0 to Form1.ControlCount - 1 do
Form1.Controls.OnClick := Form1.OnClick;
这里所有Parent为Form1的控件的OnClick事件触发时都将调用form1.OnClick事件
 
form[100]是我创建的一个 FORM对象。
定义是 FORM[100] *TFORM,
一共有有一百个FORM实例,(假如),如何给这些窗体指定事件。就是响应同一个事件
就可以了。
 
不知道你的事件过程是在哪里?有没有从TForm派生新类如 TMyForm=class(TForm)?
 
估计是你的定义出的问题.
form [100] *TForm;
*TForm表示指向TForm的指针.
在Delphi中我们可以认为TForm本身就是一个指针.
因此我认为
form->xxxx = ....是错的.
至少得TForm(*(form))->xxx = ....
c 忘光了, 语法你自己改, 总之要实现的是
对"<strong>指针指向的指针所指向的内容</strong>"进行赋值 (跟绕口令一样).
 
同意 Another_eYes,
你的用法不正确,你的form 和form1并非同类,恐怕不能
FORM->onkeydown = form1->onkeydown
 
(TFORM)TForm->onkeydown = Form1->onkeydown
 
(TFORM)TForm->onkeydown = Form1->onkeydown
 
我尝试过了,
(TFORM)TForm->onkeydown = Form1->onkeydown 不行,语法错误
TForm(*(form))->onkeydown = Form1->onkeydown 也不行,同样语法错误
龙丹兄:
我的事件过程是放在一个窗体(Form1)里面的。就象平时建窗体,然后写事件代码,
我只不过是象这窗体的代码可以给一百个动态创建的窗体重用。
有哪位高手可以指点一下呢?
 
很简单:
定义:
form [100] TForm;

使用:
Form->onkeydown = Form1->onkeydown
 
你们都说完了!
最好的方法还是创建一个新类,重载一些函数。
 
直接在创建控件的时候增加onclikc = 过程名
改过成名需要是参数和onclick时间参数相同的过程...
D5试验成功
 
接受答案了.
 
后退
顶部