回 帖 发 新 帖 刷新版面

主题:断承

大家好,我又有一个问题要问大家了。代码如下:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TLabel=class(StdCtrls.TLabel)
  private
    procedure   LBMouseEnter(var   Message:   TMessage);   message   CM_MOUSEENTER;
    procedure   LBMouseLeave(var   Message:   TMessage);   message   CM_MOUSELEAVE;
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
 procedure   TLabel.LBMouseEnter(var   Message:   TMessage);
  begin
      inherited;
      Form1.Label1.Caption:='进来';
  end;

  procedure   TLabel.LBMouseLeave(var   Message:   TMessage);
  begin
      inherited;
      Form1.Label1.Caption:='出去';
  end;


end.

这样只要鼠标在Label上移动Label1的caption就会改变。我是要鼠标只有在Label1上移动时Label1的Caption才会改变。

回复列表 (共3个回复)

沙发

private
  procedure   LabelMouseOut(var   msg:tmessage);message   CM_MOUSEENTER;
    { Private declarations }


procedure TForm1.LabelMouseOut(var Msg: TMessage);
  var
      newLabel:TLabel;
  begin
     newLabel:=TLabel(Msg.lParam);
      if   newLabel<>nil   then
      Label1.Caption:='1'
       else  Label1.Caption:='2';
end;

板凳

谢谢,但是还没达到我所要的目的地。
我的要求是鼠标只有在Label1上来回移动时Label1的Caption才改变。
在其它label上移动时label1的caption不变。

3 楼

简单:
把水标焦点指向Label1才变就成了:
Label1

procedure TForm1.LabelMouseOut(var Msg: TMessage);
  begin
 if   msg.LParam=integer(Label1)   then
      Label1.Caption:='水标已进入Label1'
       else  Label1.Caption:='水标不在Label1处';
end;

我来回复

您尚未登录,请登录后再回复。点此登录或注册