![]() |
Hover-Effekt für Panel
Hi,
ich möchte einen Panel eine Art Hover-Effekt geben. Das heißt ist die Maus über den Panel soll es eine andere Farbe haben als wenn die Maus nicht über den Panel ist. Ich habe versucht das mit den OnMouseMove-Eregnis zu realisieren. Funktioniert jedoch nicht.
Delphi-Quellcode:
Das Panel ist 8 Pixel breit.
procedure Tfrm_Designer.pnl_ShowHideSideBarMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer); var BarPosition: TPoint; begin BarPosition := ClientToScreen(Point(pnl_ShowHideSideBar.Left, pnl_ShowHideSideBar.Top)); //mouse is not in panel? if X > BarPosition.X + 8 then begin pnl_ShowHideSideBar.Color := $00D1D8DB; end else begin pnl_ShowHideSideBar.Color := clSkyBlue; end; end; Ich möchte nicht in jeden onMouseMove-Ereignis jeder Komponente die Farbe des Panels setzen. Auch möchte ich auf einen ressourceenlastigen Timer verzichten. Welche Möglichkeiten gibt es noch? onEnter und onExit habe ich auch schon probiert, geht auch nicht... Ciao, Andy |
Re: Hover-Effekt für Panel
Hast du nicht ein OnMouseEnter-Ereigniss ?
|
Re: Hover-Effekt für Panel
Zitat:
Oder gibt es noch eine andere Möglichkeit |
Re: Hover-Effekt für Panel
Zitat:
Da ich annehme, dass du keine eigene Panel-Komponenten von TPanel ableiten willst, könntest du das so lösen:
Delphi-Quellcode:
private
FOrgPanelWndProc: TWndMethod; procedure PanelWndProc(var Msg: TMessage); end; procedure TForm1.FormCreate(...); begin FOrgPanelWndProc := Panel1.WindowProc; Panel1.WindowProc := PanelWndProc; end; procedure TForm1.FormDestroy(...); begin Panel1.WindowProc := FOrgPanelWndProc; end; procedure TForm1.PanelWndProc(...); begin FOrgPanelWndProc(Msg); case Msg.Msg of CM_MOUSEENTER: begin end; // Farbe ändern CM_MOUSELEAVE: begin end; // Farbe ändern end; end; |
Re: Hover-Effekt für Panel
Zitat:
Danke :mrgreen: |
Re: Hover-Effekt für Panel
Zitat:
|
Re: Hover-Effekt für Panel
Wie kann ich mir ein TImage ableiten und die OnMouseEnter und onMouseLeave Ereignisse integrieren? Am besten wäre natürlich diese Routinen in die vorhandene TImage zu integrieren. Dann brauche ich nicht alle Bilder ersetzen. Mir stehen auch die VCL-Sourcen zur Verfügung (von turbo Delphi). Die darf ich doch auch für D7PE verwenden, oder? Also müsste ich nur eine bestimmte Unit ersetzen?
|
Re: Hover-Effekt für Panel
Die VCL würde ich nicht ändern, einfach die Ableitung erstellen und dann einmal mit Suchen & Ersetzen über die DFM schrubben.
|
Re: Hover-Effekt für Panel
Zitat:
|
Re: Hover-Effekt für Panel
@Andreas,
ich hatte mal vor langer Zeit für jemanden ein Beispiel gemacht: ![]() Vielleicht hilft es dir ja weiter... Cu, Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:17 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