Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Panel mit MouseEnter/Exit nachrüsten ? (https://www.delphipraxis.net/110783-panel-mit-mouseenter-exit-nachruesten.html)

Hansa 24. Mär 2008 21:01


Panel mit MouseEnter/Exit nachrüsten ?
 
Hi,

hat jemand das schon mal gemacht ? Wenn ja, wie ? In der VCL habe ich gesehen, dass das beim Label mit message gemacht wird CM_MOUSEENTER etc. Kann man das eventuell abkupfern ? Ich brauche folgende Ereignisse :
  • OnMouseEnter
  • OnMouseLeave
  • OnClick

und das :
  • TabOrder
  • TabStop
  • Canvas

Oder gibt es eine einfache Komponente, die ich übeersehen habe, die das alles hat ?

bitsetter 24. Mär 2008 22:01

Re: Panel mit MouseEnter/Exit nachrüsten ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

CM_MOUSEENTER CM_MOUSELEAVE wäre doch schon mal was.

Edit:
Zitat:

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. :gruebel:
Und OnMouseEnter sowie OnMouseLeave sind schon bei Delphi 10 mit dabei.

Zitat:

Zitat von Hansa
Kann man das eventuell abkupfern ?

Für sowas ist doch der Sourcecode der VCL da. :stupid:

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.

Hansa 26. Mär 2008 00:05

Re: Panel mit MouseEnter/Exit nachrüsten ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das geht tatsächlich mit VCL-Abkupfern. :mrgreen: Thx @Bitsetter. Der Fall eignet sich allerdings auch dazu, auf einfache Weise zu zeigen, wie bereits vorhandene Komponenten erweitert/nachgerüstet werden können. Siehe Anhang.

Die Muhkuh 26. Mär 2008 00:44

Re: Panel mit MouseEnter/Exit nachrüsten ?
 
Du solltest vielleicht schon die ExtPanel.pas noch dazuhängen. ;)

Eigentlich hätte ich, nach dem was Du sonst in der DP von Dir gibst, gedacht, dass Du das alleine hinbekommst. So kann man sich täuschen. :)

Hansa 26. Mär 2008 00:51

Re: Panel mit MouseEnter/Exit nachrüsten ?
 
Das war eine Vorfrage mit immerhin einer Antwort.

Zitat:

Zitat von Die Muhkuh
..So kann man sich täuschen. :)

Genau. Da ihr das alles ja aus dem effeff kennt besteht kein Anlass mehr richtige Datei jetzt anzuhängen. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz