Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Panel mit MouseEnter/Exit nachrüsten ?

  Alt 24. Mär 2008, 23:01
Hallo,

CM_MOUSEENTER CM_MOUSELEAVE wäre doch schon mal was.

Edit:
Zitat von Hansa:
Ich brauche folgende Ereignisse :
...
  • OnClick
Oder gibt es eine einfache Komponente, die ich übeersehen habe, die das alles hat ?
OnClick ist doch eigentlich beim TPanel schon dabei.
Und OnMouseEnter sowie OnMouseLeave sind schon bei Delphi 10 mit dabei.

Zitat von Hansa:
Kann man das eventuell abkupfern ?
Für sowas ist doch der Sourcecode der VCL da.

EDIT:

Hier das ganze nochmal ohne Komponente:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TPanel = class(ExtCtrls.TPanel)
  private
    { Private-Deklarationen }
    FOnMouseEnter: TNotifyEvent;
    FOnMouseLeave: TNotifyEvent;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  protected
    { Protected-Deklarationen }
  public
    property Canvas;
    property TabOrder;
    property TabStop;
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
  end;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    procedure FormCreate(Sender: TObject);
  private
    procedure PanelMouseEnter(Sender: TObject);
    procedure PanelMouseLeave(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TPanel.CMMouseEnter(var Message: TMessage);
begin
  if assigned(FOnMouseEnter) then
    FOnMouseEnter(Self);
end;

procedure TPanel.CMMouseLeave(var Message: TMessage);
begin
  if assigned(FOnMouseLeave) then
    FOnMouseLeave(Self);
end;

procedure TForm1.PanelMouseEnter(Sender: TObject);
begin
  if Sender is TPanel then
  begin
    TPanel(Sender).Canvas.Brush.Color:= clRed;
    TPanel(Sender).Canvas.TextOut(10, 10, 'MouseEnter');
  end;
end;

procedure TForm1.PanelMouseLeave(Sender: TObject);
begin
  if Sender is TPanel then
  begin
    TPanel(Sender).Canvas.Brush.Color:= clRed;
    TPanel(Sender).Canvas.TextOut(10, 10, 'MouseLeave');
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel2.OnMouseEnter:= PanelMouseEnter;
  Panel2.OnMouseLeave:= PanelMouseLeave;
  Caption:= inttostr(Panel2.TabOrder);
end;

end.
Angehängte Dateien
Dateityp: zip panel_185.zip (196,6 KB, 21x aufgerufen)
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat