procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  (Sender as Tlabel).Color:=clyellow;
end;procedure TForm1.Label1MouseLeave(Sender: TObject);
begin
  (Sender as Tlabel).Color:=clred;
end;这样是没什么效果,如何才能实现得了?多谢.

解决方案 »

  1.   

    procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      //label1.Color:=clRed;    //Label1的背景变红
      Label1.Font.Color:=clRed; //字体变红
    end;procedure TForm1.Label1MouseLeave(Sender: TObject);
    begin
      //Label1.Color:=clWhite;   //Label1的背景变白
      Label1.Font.Color:=clWhite;//字体变白
    end;
      

  2.   

    变红 写在label的onmousemove或者onmouseenter事件都可以
    变白写在label的onmouseleave或者form的onmounsemove事件都可以
    也就是说下面的写法都是对的:procedure TForm1.Label1MouseEnter(Sender: TObject);
    begin
        Label1.Color:=clRed;
    end;
    procedure TForm1.Label1MouseLeave(Sender: TObject);
    begin
        Label1.Color:=clWhite;
    end;--------------------------------------
    procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
        Label1.Color:=clRed;
    end;
    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
        if Label1.Color=clRed then Label1.Color:=clWhite;
    end;一共四种组合方法,其中推荐的是onenter和onleave
      

  3.   

    楼上的楼上,如果写在mousemove事件里,可以实现,但不是最好的,你移动鼠标太快了就看出来了,呵呵,最好的方法是自己加一个事件,然后写代码,
      

  4.   

    楼上:
    我知道“写在mousemove事件里,可以实现,但不是最好的”,因为onEnter和OnLeave是标准答案,而onmove只是实现的方法一种而已,但你说的“你移动鼠标太快了就看出来了”,我用下面的代码试了试,效果是一样的,却不知你说的是什么问题?
    另外你说“最好的方法是自己加一个事件,然后写代码”我也不同意,因为正解是写在Label的onEnter和OnLeave事件里procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
        Label1.Color:=clRed;
    end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
        if Label1.Color=clRed then Label1.Color:=clBlue;
    end;