你动态创建的label没办法添加onmouseenter
不过要实现你的问题可以自己便一个过程
pravite
 procedure mouseenter(sender:tobject)
   label1.color:=clredlabel1.onmousemove:=moueenter;

解决方案 »

  1.   

    那你还是从tabel派生一个类吧,实现onmouseenter事件。
    等等,如果重载 CM_MOUSEENTER也许也没什么问题。还是建议你派生一个新类,我到有这样的代码,不过是tpanel,你改一下就没有问题了。
    unit NewPanel;
    interface
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtCtrls;
    type
      TEnterLeave = procedure (Sender:TObject) of object;
      TNewPanel = class(TPanel)
      private
        { Private declarations }
        FOnEnter : TEnterLeave;
        FOnLeave : TEnterLeave;
        procedure WMENTER (var Msg : TMessage); message CM_MOUSEENTER;
        procedure WMLEAVe (var Msg : TMessage); message CM_MOUSELEAVE;
      protected
        { Protected declarations }
      public
        { Public declarations }
      published
        { Published declarations }
        property OnMouseEnter : TEnterLeave read FOnEnter write FOnEnter;
        property OnMouseLeave : TEnterLeave read FOnLeave write FOnLeave;
      end;
    procedure Register;
    implementation
    procedure Register;
    begin
      RegisterComponents('Samples', [TNewPanel]);
    end;
    { TNewPanel }
    procedure TNewPanel.WMENTER(var Msg: TMessage);
    begin
      inherited;
      if Assigned(FOnEnter) then FOnEnter(self);
    end;procedure TNewPanel.WMLEAVe(var Msg: TMessage);
    begin
      inherited;
      if Assigned(FOnLeave) then FOnLeave(self);
    end;end.实现了两个事件,一个是onmouseenter,一个是onmouseleave。
      

  2.   

    for i:=0 to j do begin
      label[i].OnMouseEnter := LableOnMouseEnter;
    end;
    procedure TForm1.LabelOnMouseEnter
    beginend;
      

  3.   

    pravite
     procedure mouseenter(sender:tobject)
    ...
    var
     L :TLabel;
    begin
     L := TLabel.Create(self);
     L.left..
     ...
     L.OnMouseEnter:=mouseenter
    end;
    procedure mouseenter(sender:tobject)
    begin
       TLanel(Sender).color:=clred
    end;
      

  4.   

    是这样的,delphi6中的Tlabel有现成的OnMouseEnter事件,我的问题是如何把OnMouseEnter事件分别添加到lab[i]中去,不可能一点点把每个lab[i]的onmouseenter都写出来
      

  5.   

    用鼠标的单击事件如何?
    动态创建是定义
    lab[i].OnClick;=LabelClick;//自定义
    procedure TForm.LabelClick(Sender: TObject);
    if sender is TLabel then
    begin
      lab.Color :=clred;
    end;
    当你单击时,则变成红色。
      

  6.   

    使用 tag 属性,使tag 的值与i相同,
    Label.tab := i;
    在以后,你可以用程序读tag的值,就可知是哪一个label了,试一试。
      

  7.   

    ihihonline的TLabel(Sender).color:=clred语句挺管用的,谢了!
      

  8.   

    To longerer:
       其实,在这儿,你只用了一个事件,但是,每个label的onMenseEnter都可以调用,不过,在动态创建时要设置它能接受焦点才可以;
    更详细的如下:
    pravite
     procedure mouseenter(sender:tobject)
    ...
    var
     L : TLabel;
     I : Integer;
     Str : String;
    begin
     for I := 0 to 20 do 
     begin
       Str := Label + IntToStr(I)
       L := TLabel.Create(self);
       L.Name := Str;
       L.left..
       ...
       L.OnMouseEnter:=mouseenter
     end;
    end;
    procedure mouseenter(sender:tobject)
    begin
       TLanel(Sender).color:=clred
    end;
      

  9.   

    TLanel(Sender).color:=clred -> TLabel(Sender).Color := ClRed;