Einzelnen Beitrag anzeigen

Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: MouseEnter und MouseLeave für TScrollBox

  Alt 18. Jan 2004, 20:25
Hi,

Leide die TScrollBox ab und füge ihr Handler für CM_MOUSEENTER und CM_MOUSELEAVE hinzu.
Das sieht dann etwa so aus (ungetestet):

Delphi-Quellcode:
unit ScrollBox;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TScrollBoxEx = class (TScrollBox)
  private
    { Private declarations }
    FOnMouseLeave: TNotifyEvent;
    FOnMouseEnter: TNotifyEvent;
    procedure CMMouseEnter(var msg: TMessage);
      message CM_MOUSEENTER;
    procedure CMMouseLeave(var msg: TMessage);
      message CM_MOUSELEAVE;
  protected
    { Protected declarations }
    procedure DoMouseEnter; dynamic;
    procedure DoMouseLeave; dynamic;
  public
    { Public declarations }
  published
    { Published declarations }
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Additional', [TScrollBoxEx]);
end;

{ TScrollBoxEx }

procedure TScrollBoxEx.CMMouseEnter(var msg: TMessage);
begin
  DoMouseEnter;
end;

procedure TScrollBoxEx.CMMouseLeave(var msg: TMessage);
begin
  DoMouseLeave;
end;

procedure TScrollBoxEx.DoMouseEnter;
begin
  if Assigned(FOnMouseEnter) then
    FOnMouseEnter(Self);
end;

procedure TScrollBoxEx.DoMouseLeave;
begin
  if Assigned(FOnMouseLeave) then
    FOnMouseLeave(Self);
end;

end.
Thomas
  Mit Zitat antworten Zitat