![]() |
Hoover Effekt bei Panel geht nicht. OnMouseLeave fehlt...
Hallo, ich habe hier ein kleines Problem. Ich habe ein Panel bei dem BevelOuter = bvNone und BevelInner = bvLowered sind. Wenn sich die Maus über das Panel bewegt möchte ich gerne das BevelInner zu bvRaised wird und beim Verlassen wieder auf bvNone geht. Wie mache ich das am Besten? Mir fehlt beim Panel die OnMouseLeave Eigenschaft um den Wert zurückzusetzen. Wie kann ich das trotzdem machen?
Ist sicherlich nur ein klitzekleines Problem aber ich wäre trotzdem für jede Hilfe dankbar! MfG Florian :hi: |
Re: Hoover Effekt bei Panel geht nicht. OnMouseLeave fehlt..
Zitat:
Hai flomai, Schaue dir mal diesen Thread an: ![]() |
Re: Hoover Effekt bei Panel geht nicht. OnMouseLeave fehlt..
das hier sollte dir helfen:
![]() [edit] Wieder zu spät :mrgreen: Ich kann mich einfach nicht an die GEburtagsfarben gewöhnen :mrgreen: |
Re: Hoover Effekt bei Panel geht nicht. OnMouseLeave fehlt..
Zitat:
Delphi-Quellcode:
Dieser Code macht für Panel1 den Hoover Effekt wie flomei in möchte.
type
TForm1 = class(TForm) Panel1: TPanel; private { Private-Deklarationen } public procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.CMMouseEnter(var Message: TMessage); var ptWork : TPoint; begin GetCursorPos(ptWork); if WindowFromPoint(ptWork) = Panel1.Handle then //Maus ist über dem Panel1 begin Panel1.BevelInner := bvRaised; end; end; procedure TForm1.CMMouseLeave(var Message: TMessage); var ptWork : TPoint; begin GetCursorPos(ptWork); if WindowFromPoint(ptWork) <> Panel1.Handle then //Maus verlässt das Pannel1 begin Panel1.BevelInner := bvNone; end; end; |
Re: Hoover Effekt bei Panel geht nicht. OnMouseLeave fehlt..
Wie mach ich das denn bei mehreren Panels? Ich hab probiert die Namen umzuändern aber das klappt nicht.
Delphi-Quellcode:
Fehlermeldung:
//Hoover fürs erste Panel
procedure PnlCheckLengthHooverOn(var Message: TMessage); message CM_MOUSEENTER; procedure PnlCheckLengthHooverOff(var Message: TMessage); message CM_MOUSELEAVE; //Hoover fürs zweite Panel procedure PnlResetHooverOn(var Message: TMessage); message CM_MOUSEENTER; procedure PnlResetHooverOff(var Message: TMessage); message CM_MOUSELEAVE; Zitat:
Schonmal Danke! MfG Florian :hi: |
Re: Hoover Effekt bei Panel geht nicht. OnMouseLeave fehlt..
Zitat:
die proceduren gelten für die gesamte Form! Die Auswertung "von welchem Object die Message kommt" wir in der Procedure gemacht.
Delphi-Quellcode:
Das geht sicher auch besser. Aber das müssen die die API-Profis sagen ;-)
procedure TForm1.CMMouseEnter(var Message: TMessage);
var ptWork : TPoint; begin GetCursorPos(ptWork); if WindowFromPoint(ptWork) = Panel1.Handle then begin Panel1.BevelInner := bvRaised; end; if WindowFromPoint(ptWork) = Panel2.Handle then begin Panel2.BevelInner := bvRaised; end; end; Oder Du erzeugst dir gleich ein Eigenes Pannel mit den Eigenschaften.
Delphi-Quellcode:
Wenn Du Dir das noch in eine Komponente packst hast Du alles was Du möchtest.
type
myPanel = class (TPanel) private procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; end; TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } panel1 : myPanel; panel2 : myPanel; panel3 : myPanel; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure myPanel.CMMouseEnter(var Message: TMessage); begin BevelInner := bvRaised; end; procedure myPanel.CMMouseLeave(var Message: TMessage); begin BevelInner := bvNone; end; procedure TForm1.FormCreate(Sender: TObject); begin panel1 := myPanel.Create(nil); panel1.Left := 100; panel1.Top := 50; panel1.Width := 100; panel1.Height := 100; panel1.Show; panel1.Parent := Form1; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 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