![]() |
OnMouseEnter in eigener Komponente benutzen
Hi,
ich versuche bei einer eigene Komponente einen hover-Effekt zu bauen. Dazu brauche ich die Eregnisse OnMouseEnter und OnMouseLeave. ich habe folgendes veruscht:
Delphi-Quellcode:
Das Shape verändert sich aber nicht beim drüberfahren. Wieso?
type
TRoundedHoverLabel = class(TShape) private { Private-Deklarationen } ... fOnMouseEnter: TNotifyEvent; protected { Protected-Deklarationen } ... procedure SetOnMouseEnter(Event: TNotifyEvent); public { Public-Deklarationen } published { Published-Deklarationen } constructor Create(AOwner: TComponent); override; ... property OnMouseEnter: TNotifyEvent read FOnMouseEnter write SetOnMouseEnter; end; ... ... procedure TRoundedHoverLabel.SetOnMouseEnter(Event: TNotifyEvent); begin fOnMouseEnter := Event; if not fDown then //fdown ist true wenn der "gedrückt"-style aktiv ist begin Pen.Color := clGradientInactiveCaption; Pen.Mode := pmNotXor; Pen.Style := psSolid; end; end; ciao, Andy |
Re: OnMouseEnter in eigener Komponente benutzen
Das sollte in etwa so gehen, wie ich es
![]() |
Re: OnMouseEnter in eigener Komponente benutzen
Du hast nur Behandlungsroutinen definiert welche man von aussen (z.B. über Objektinspektor) nutzen kann um Aktionen darauf hin auszuführen. Du brauchst aber die Ereignisse selber. Wenn die Komponente dir sowas nicht bietet, musst du dir selber diese Events besorgen oder wen finden, der dich entsprechend benachrichtigt. Dies ist z.B. vorhanden in der VCL: nutze den Erhalt der Nachricht CM_MOUSEENTER und CM_MOUSELEAVE um deine Aktionen auszuführen.
|
Re: OnMouseEnter in eigener Komponente benutzen
Ahhh, jetzt gehts. Danke ;-)
Welche Message brauch ich eigentlich um eine Aktion beim neuzeichnen des Shapes auszuführen? CN_DRAWITEM geht nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz