控件制作疑问
我做了一个简单的控件:在一个Panel中放置10个Label,刚好填满Panel。
我现在的做法是从Panel中继承。然后在 Create中动态生成10个Label放置在Panel中。
但是有个问题,该控件无法响应我的OnClick事件,请高手指点?
问题点数:50、回复次数:8Top
1 楼Rainstorey(Rain)回复于 2006-03-15 16:03:41 得分 0
事件指针有没有指向procedure?Top
2 楼zhangl_cn(和尚-修行)回复于 2006-03-15 16:36:02 得分 25
自己定义一个过程,然后把这个过程与OnClik事件挂接上:
procedure MyClik(Sender:TObject);
begin
//....
end;
Panel.OnClik:=MyClik; //挂接事件Top
3 楼merkey2002(小样的)回复于 2006-03-15 16:54:13 得分 25
在一个Panel中放置10个Label,刚好填满Panel。
--------
你单击事件是被label截获了,所以执行的是label的onclick事件,没的执行panel的onclick,
可以这样解决,创建后,设置每个label的onclick方法里执行panel的onclickTop
4 楼Zorror(松竹子)回复于 2006-03-15 17:04:05 得分 0
谢谢各位了,我的理解和 merkey2002(小样的) 说得差不多,就是不知道
如何实现 “设置每个label的onclick方法里执行panel的onclick“。Top
5 楼lazycat818(lazycat818)回复于 2006-03-15 23:45:32 得分 0
label1.OnClick := Panel1.OnClick;Top
6 楼Zorror(松竹子)回复于 2006-03-16 09:47:44 得分 0
先谢谢lazycat818(lazycat818),
我是下面这样做的:Label1.OnClick := self.OnClick;(因为Label1.parent :=self);
但是还是不能响应我的消息,但我里外写一个方法Label1Click,然后 Label1.OnClick:=Label1Click ,这样就可以响应,但是我不能每次都为这个去修改控件的源码啊。
各位高手,照顾一下新手。Top
7 楼zhangl_cn(和尚-修行)回复于 2006-03-16 13:33:56 得分 0
先谢谢lazycat818(lazycat818),
我是下面这样做的:Label1.OnClick := self.OnClick;(因为Label1.parent :=self);
但是还是不能响应我的消息,但我里外写一个方法Label1Click,然后 Label1.OnClick:=Label1Click ,这样就可以响应,但是我不能每次都为这个去修改控件的源码啊。
//////////////////////////////////////////////
按上面说的,自定义一个过程,然后让所有label的OnClik事件都挂到这个自定义的过程Top
8 楼Zorror(松竹子)回复于 2006-03-16 14:36:20 得分 0
在此谢谢各位的帮忙,我已经解决了,就是和 zhangl_cn(不做和尚了!) 的方法一样,但是我还是不明白为什么不能直接用Label1.OnClick := self.OnClick,而非得去再定义一个过程。Top




