如何继承TLabel的事件(100分)

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

surfman

Unregistered / Unconfirmed
GUEST, unregistred user!
1)继承TLabel,动态生成自己的MyLabel(代码如下),但如何继承TLabel的事件比如DOUBLECLICK,当点击某个MyLabel时,产生与之对应的事件。并且当MOUSE移到它们上面时,闪动该Label。
newlable := TLabel.Create(Label1);
with newlable do
begin
parentColor :=false;
ParentFont := false;
newlable.Caption := Selected.Text ;
newlable.Name :='newlable'+IntToStr(label_num) ;
newlable.Enabled := false;
newlable.ShowHint :=true;
parent:= Panel4;

2)如何做象DELPHI中的运行按钮那样,可以拉下显示多个内容?
3)如何做一个比较通用的报表,请高手指点。
 
1.

TYourtlabel=class (TLabel)
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
published
property OnDblClick; // 使父类的双击事件可见
end;

procedure TYourLabel.CMMouseEnter(var Message: TMessage);
begin
inherited;
// 相应MOUSE移到控件上面时的动作
end;

procedure TYourLabel.CMMouseLeave(var Message: TMessage);
begin
inherited;
// 相应MOUSE离开时的动作
end;

2. 使用ToolBar,
ToolButton1.Style := tbsDropDown;
ToolButton1.DropdownMenu := PopupMenu1;
// 搞定

报表要通用,代码量很大,懒得做
 
谢谢,slicker,但是这些代码该写在哪里?
 
sorry,问题中的代码不是继承。
 
1.mylabel.onclick:=label1.onclick;
2.或者在toolbutton的menuitem设popmenu的子项目
3.通用,更麻烦吧
 
surfman,给我mail,发段源代码给你研究.

对于TLabel,是新建一个控件,增加几个你需要的事件属性.
如果你不通过Component->Install component安装,只能动态建立和
赋值, 安装后,在IDE中设计时可以见到.

to dedman
PopupMenu属性设置的菜单是使用鼠标右键弹出的.
 
to slicker:
'DropdownMenu' property make link with the popupmenu
while
'menuitem' property make link with the menuitem of the popupmenu
just now,it's my a lapse of pen
 
理解错了,再来一份,正如dedman所说的,设置MenuItem属性
 
谢谢slicker发来的代码,第二个问题我已解决。
关于component的代码有些笔误,我更正后也安装成功了。
但功能没实现,也许我表达得不清楚,我的用意是这样的:
按一个按钮Create a label,放在一panel上,于是,在panel上
有了很多的new label,当我将mouse移到某一new label上时,该new label闪动,
用鼠标能拖动这些new label,而且,可以选中多个new label。
 
你是不是想在自己的程序中实现类似Delphi IDE的功能?如果是这样,你可有的忙了!!!
Delphi 是通过 ComponentStates是否有 csDesigning 标志来处理的,

根据你的用意,也不是先不了啊,我做了一个简单的Demo(只有一个ELabel),希望能够有所启发.

随手写的代码,每检查,多谢更正

 
接受答案了.
 
后退
顶部