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 OnEnter Event für Image-Komponenten (https://www.delphipraxis.net/104882-onenter-event-fuer-image-komponenten.html)

guevaradelaserna 12. Dez 2007 10:19


OnEnter Event für Image-Komponenten
 
Hallo!
Ich möchte bei einem Image ein OnEnter-Event definieren. Geht dies, wenn ja wie?

Danke Alex

bitsetter 12. Dez 2007 10:23

Re: OnEnter Event für Image-Komponenten
 
Hallo,

in Delphi 2006 gibts es schon dieses Ereignis.

Ansonsten kannst du dir ja mal diesen Code ansehen.

Aurelius 12. Dez 2007 10:25

Re: OnEnter Event für Image-Komponenten
 
Ein "richtiges" OnEnter-Event gibt es ja nicht(jedenfalls nicht bei D7 :stupid: ). Eine Lösung wäre es die Mausposition auf dem Formular abzufragen und dann, wenn die Maus innerhalb der Koordinaten des Images ist, den Befehl auszuführen.

himitsu 12. Dez 2007 10:33

Re: OnEnter Event für Image-Komponenten
 
ich weiß jetzt nicht ob TImage eine Ereignisprozedur besitzt wo alle Messages durchgehn und wo man sich einklinken kann

oder du versuchst dir eine neue Klasse zu erstellen und implementierst es selber.

TLabel z.B. bekommt CM_MOUSEENTER und CM_MOUSELEAVE zugesendet.
Delphi-Quellcode:
TMyImage = class(TImage)
  private
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  end;
@xX0815Xx: TLabel hat sowas in meinem D7 :zwinker:
aber da er ja nur OnMouseEnter benötigt, ließe sich wohl der Vorschlag mit OnMouseMove (dieses hat ja TImage schon) am Einfachsten umsetzen.

warum sind hier alle so schnell ;(

Aurelius 12. Dez 2007 10:38

Re: OnEnter Event für Image-Komponenten
 
Ich meinte doch für ein Image :stupid:

bitsetter 12. Dez 2007 10:40

Re: OnEnter Event für Image-Komponenten
 
Am einfachsten wäre es natürlich so:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TImage = class(ExtCtrls.TImage)
  private
    FOnMouseEnter: TNotifyEvent;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
  public
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
  end;

type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
  private
    procedure ImageMouseEnter(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

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

procedure TForm1.ImageMouseEnter(Sender: TObject);
begin
  Showmessage(format('%s onMouseEnter', [TImage(Sender).Name]));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Image1.OnMouseEnter:= ImageMouseEnter;
end;

end.
EDIT: getestet unter Delphi 6

Aurelius 12. Dez 2007 10:43

Re: OnEnter Event für Image-Komponenten
 
Da hast du nat. Recht. Deine Idee ist besser als meine (von Subclassing hab ich noch nicht so viel Ahnung, aber langsam kommts^^).


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 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