一般我们定义了一个组件的触发事件时我们希望其他的组件也能不用写相同重复的代码就能实现相同的功能。
比如有很多个LABEL
我定义其中一个LABEL1两个事件,手标移上去字体变成红色,移开后恢复默认色
procedure TForm2.onmousemove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
Label1.Font.Color:=clred;
end;procedure TForm2.onmouseleave(Sender: TObject);
begin
Label1.Font.Color :=cldefault;
end;
问题是我们很多个LABEL都想拥有LABEL1的效果,我想一定有一个办法简单地调用LABEL1定义好的方法,而不用一个一个写代码?
怎么解决?注意:不能以自定义FORM的形式重载方法。

解决方案 »

  1.   

    1定义一个通用的事件:
    type
      TForm1 = class(TForm)
        ....
        procedure Commmouseleave(Sender: TObject);
        { Private declarations }
      public
        { Public declarations }
      end;
    .....
    procedure TForm1.Commmouseleave(Sender: TObject);
    begin
       TLabel(sender).Font.Color :=cldefault;
    end;
    2:选中所有label然后在该事件的下拉框选择你定义的通用事件处理就可以了