Thema: Delphi Mausover/Mausdown

Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Mausover/Mausdown

  Alt 19. Dez 2003, 12:30
Hallo,
eigentlich ist das der klassische Fall für das Erstellen eines eigenen TImage Nachfahren, der die Event's OnMouseEnter und OnMouseLeave bereitstellt.

Muss aber nicht sein. Man kann auch zur Laufzeit die Fensterprocedure austauschen.
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    FOldImageWndPorc : TWndMethod;
    procedure DoMouseEnter;
    procedure DoMouseLeave;
    procedure NewWndProc(var Msg : TMessage);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.NewWndProc(var Msg: TMessage);
begin
  If (Msg.Msg=CM_MouseEnter) and (Image1.Enabled) then
    DoMouseEnter;
  If (Msg.Msg=CM_MouseLeave) and (Image1.Enabled) then
    DoMouseLeave;
  FOldImageWndPorc(Msg);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FOldImageWndPorc:=Image1.WindowProc;
  Image1.WindowProc:=NewWndProc;
end;

procedure TForm1.DoMouseEnter;
begin
  Label1.Caption:=IntToStr(StrToInt(Label1.Caption)+1);
end;

procedure TForm1.DoMouseLeave;
begin
  Label2.Caption:=IntToStr(StrToInt(Label2.Caption)+1);
end;

end.
Die beiden Labels haben im Objektinspektor für Caption eine 0 bekommen
  Mit Zitat antworten Zitat