AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OnMouseEnter in eigener Komponente benutzen

Ein Thema von Andreas L. · begonnen am 7. Jun 2007 · letzter Beitrag vom 7. Jun 2007
Antwort Antwort
Andreas L.
(Gast)

n/a Beiträge
 
#1

OnMouseEnter in eigener Komponente benutzen

  Alt 7. Jun 2007, 11:12
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:
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;
Das Shape verändert sich aber nicht beim drüberfahren. Wieso?

ciao,
Andy
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: OnMouseEnter in eigener Komponente benutzen

  Alt 7. Jun 2007, 11:29
Das sollte in etwa so gehen, wie ich es hier vor kurzem geposted habe. Dir fehlt einfach, der Komponente mitzuteilen, welche Nachricht fürs MouseEnter verantwortlich ist
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: OnMouseEnter in eigener Komponente benutzen

  Alt 7. Jun 2007, 11:30
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.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#4

Re: OnMouseEnter in eigener Komponente benutzen

  Alt 7. Jun 2007, 14:29
Ahhh, jetzt gehts. Danke

Welche Message brauch ich eigentlich um eine Aktion beim neuzeichnen des Shapes auszuführen? CN_DRAWITEM geht nicht.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 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