另外一种方法,你可以让每个控件这样做:当鼠标进入时,放大,离开时,缩小。
TYPE
  TBUTTON1=CLASS(TButton)
  ...
  protected
   procedure MouseEnter(var Msg:Tmessage);
     message cm_mouseenter;
   procedure MouseLeave(var Msg:TMessage);
     message cm_mouseLeave;
  end;
  Tform1=class(Tform)
    button1:=Tbutton1;
    ...
  end;
...
begin
...
procedure tbutton1.mouseenter(var msg:tmessage);
begin
 放大;
end; 
procedure tbutton1.mouseleave(var msg:tmessage);
begin
 复原;
end;
...
end.

解决方案 »

  1.   

    以按钮为例:
    procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
       ShowMessage(Button1.Name+Button1.ClassName);
    end;
      

  2.   

    dxz_pl的代码需要同时处理MouseMove及窗体的MouseMove事件,
    即在控件的MouseMove中处理放大效果,在FORM的MouseMove中处
    理还原效果。至于名称、类型那根本太简单了,就像dxz_pl那样
    ,只不过,如果你想写一个针对不同控件类型的通用事件,那可
    以使用Is、As操作符来判断,如:
    procedure Tform1.CommonMouseMove(Sender:TObject;Shift:TShiftState;X,Y:Integer);
    begin
      if Sender is TButton then 处理按钮类型的效果
      else if Sender is TEdit then 处理编辑框类型的效果
      else ... 
    end;
    当然,要有好的效果,应该像Thinking_man那样,继承一个TButton类,
    并为其加入MouseEnter及MouseLeave消息,并在获取该消息时做以上处
    理,如果你的控件类型太多,这个方法就太麻烦了,因为TEdit,TMemo等
    继承自TWinControl的类都没有MouseEnter及MouseLeave事件。具体用哪
    种方法,自己斟酌吧。