动态生成的构件如何动态生成其中的事件???(100分)

  • 主题发起人 主题发起人 php3
  • 开始时间 开始时间
P

php3

Unregistered / Unconfirmed
GUEST, unregistred user!
对动态生成构件的属性进行赋值比较简单,但是如何对动态生成的构件
的事件进行写代码呢???
例如:
A、Timer1:=TTimer.Create(Form1);
  如何写OnTimer事件的代码???
B、Button1:=TButton.Create(Form1);
Button1.Parent:=Form1;
Button1.SetBounds(100,100,100,40);
Button1.Caption:=Button1.ClassName;
  如何写OnClick事件的代码???
 
写一个含有sender:Tobject的过程,直接把该过程附值给ontimer
 
写一个子程序
procedure TForm1.Click(Sender : TObject);
begin
{处理程序}
end;
然后:buttton1.Onclick := Click;
当然,也可以用一个Action事件来处理。
 
(1)Action事件如何处理呢???
(2)如果这个事件要用到动态生成的控件的其他属性,怎么办???
例如:OnClick事件中用到:
button1.caption:='暂停!';
 
动态生成的控件也是控件呀.当它create之后她就拥有了各种属性方法和事件.直接调用
即可
 
这个问题都被人问烂了,你就不能去查一下?
 
说实在的,大富翁的搜索功能做的不是很好用,易用性不佳,所以别人还不如提问题喽。
一个系统的搜索功能是十分十分重要的,不过要解决这类问题不是靠编程的技术能解决的,
要靠高人或者高高人,不能靠高手或高高手。(对不住,说废话了)
 
to 陈君凯
我想他是不知道动态生成的构件的名字.
 
参见:“如何得到动态创建控件的事件?”
 
你动态创建的控件难道没有保存它的内存指针吗?用指针访问,不用 Button1,因为动态
创建的控件默认没有给它取名字,而且由于在设计期间不存在,编译都通不过的。
 
还能添加其他的事件吗?比如说OnMouseDown...
 
to BaKuBaKu:
正如你所说的,这样是编译不过去的,请问怎么保存它指针啊?写几句代码给我看看吧。
procedure TForm1.myClick(Sender: TObject);
begin
ShowMessage('test');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
myBtn: TButton;
begin
myBtn := TButton.Create(Self);
myBtn.Parent := Self;
myBtn.Click := myClick;
end;

//[Error]:Left side cannot be assigned to
 
procedure TForm1.Button1Click(Sender: TObject);
var
myBtn: TButton;
begin
myBtn := TButton.Create(form1);
myBtn.Parent := form1;
mybtn.setbounds(....);//设置它的位置和大小
mybtn.caption:='xxx';//设置按钮上的文字
myBtn.onClick := myClick;//click是方法,onclick才是事件
end;
如果要对新生成的按钮文字进行赋值的话,你可以在myclick过程中
(sender as tbutton).caption:='yyy';//前提条件:myclick过程没有与其它控件的事件
进行关联。
或者:if (sender is tbutton) and ((sender as tbutton).caption='打开') then
(sender as tbutton).caption:='关闭';
 
to prob:
myBtn.Click := myClick;
Tbutton.Click本身是个过程,当然不能赋值了。应当用OnClick。
 
To prob:
var
myBtn: TButton; // 这是局部变量
begin
myBtn := TButton.Create(Self); // 这就象猴子掰玉米,myBtn 的内容在离开这个子程序
// 马上就失效了,创建一个就丢掉一个。
...
end;
 
各位大虾,可是100大洋啊!!!
好好回答嘛!!!
procedure TForm1.MyClick(Sender:TObject);
begin
(Sender as TButton).Caption:='MyButton';
……
end;

然后:MyButton.OnClick:=Myclick;
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
930
DelphiTeacher的专栏
D
D
回复
0
查看
871
DelphiTeacher的专栏
D
D
回复
0
查看
945
DelphiTeacher的专栏
D
D
回复
0
查看
777
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部