![]() |
JvItemsPanel1 OnMouseMove + OnMouseLeave
Hi
Ich benutze JvItemsPanel mit dem Event OnMouseMove, allerdings verfügt diese Komponente anscheinend nicht über das Event OnMouseLeave. Kann mir jemand sagen wie ich dies dort einbauen könnte? Die Komponente ist für mich deshalb so wichtig, da sie beim klicken nach innen geht, so das der User auch genau sieht welches Item er angeklickt hat. |
Re: JvItemsPanel1 OnMouseMove + OnMouseLeave
Ich habe es sehr unelegant lösen können, aber das muss es doch etwas besseres geben?
Delphi-Quellcode:
Das viele Visible kommt daher, dass ansonsten das Image hinter dem Panel liegt, da das Image später sichtbar gemacht wird als der Panel.
procedure TFormKunden.JvTimer1Timer(Sender: TObject);
begin if FindDragTarget(Mouse.CursorPos, True)= JvItemsPanel1 then Begin if not Image then Begin JvItemspanel1.Visible := false; JvImage4.Visible := true; JvItemspanel1.Visible := true; Image := true; End; End else Begin if Image then Begin JvItemspanel1.Visible := false; JvImage4.Visible := false; JvItemspanel1.Visible := true; Image := false; End; End; end; |
Re: JvItemsPanel1 OnMouseMove + OnMouseLeave
Leite die Komponente ab, und reagiere auf die folgenden Windows Messages:
![]() ![]() Damit solltest du den gewünschten Effekt ausführen können! |
Re: JvItemsPanel1 OnMouseMove + OnMouseLeave
Habe dazu dieses Beipsiel gefunden
Delphi-Quellcode:
Allerdings verstehe ich nicht wie Delphi weiß für welchen Panel dies gültig ist.
unit Mousepanel;
interface uses Messages, SysUtils, Classes, Controls, ExtCtrls; type tMousepanel = class(TPanel) private { Private-Deklarationen } FOnMouseEnter: TNotifyEvent; FOnMouseLeave: TNotifyEvent; procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; protected { Protected-Deklarationen } public { Public-Deklarationen } published { Published-Deklarationen } property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; end; procedure Register; implementation procedure Register; begin RegisterComponents('Beispiele', [tMousepanel]); end; procedure tMousepanel.CMMouseEnter(var Message: TMessage); begin if assigned(FOnMouseEnter) then FOnMouseEnter(Self); end; procedure tMousepanel.CMMouseLeave(var Message: TMessage); begin if assigned(FOnMouseLeave) then FOnMouseLeave(Self); end; end. Kann mir jemand das erklären? Habe bislang noch nie soetwas machen müssen. |
Re: JvItemsPanel1 OnMouseMove + OnMouseLeave
An der stelle wird die Kompo von dem normalen Panel abgeleitet:
Delphi-Quellcode:
tMousepanel = class(TPanel)
Deine Version musst du vom JVItemsPanel ableiten! |
Re: JvItemsPanel1 OnMouseMove + OnMouseLeave
Kriege es einfach nicht hin.
Delphi-Quellcode:
type
TJvItemsPanel = class(TPanel); private { Private-Deklarationen } FOnMouseLeave: TNotifyEvent; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; public { Public-Deklarationen } published { Published-Deklarationen } property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; end;
Delphi-Quellcode:
procedure TFormKunden.JvItemsPanel1.CMMouseLeave(var Message: TMessage);
begin if assigned(FOnMouseLeave) then FOnMouseLeave(Self); end; Wirft er mir nur Fehler raus und kann nicht compelieren.
Delphi-Quellcode:
Ist schon nicht korrekt
TJvItemsPanel.CMMouseLeave(var Message: TMessage);
|
Re: JvItemsPanel1 OnMouseMove + OnMouseLeave
Du sollst ja auch von TJvItemsPanel ableiten:
Delphi-Quellcode:
type
tMousepanel = class(TJvItemsPanel) |
Re: JvItemsPanel1 OnMouseMove + OnMouseLeave
Das kann auch nicht gehen. Wenn du den Fehler lesen würdest, würdest du sehen, dass die Prozedur nicht gefunden werden kann.
Erstens willst du vom TJvItemsPanel ableiten und nicht vom TPanel selbst. |
Re: JvItemsPanel1 OnMouseMove + OnMouseLeave
Zitat:
Ich habe es so verstanden, das tmouspanel der neue panel ist und von TPanel abgeleitet wird. Da ich tMousepanel nicht kenne. |
Re: JvItemsPanel1 OnMouseMove + OnMouseLeave
Liste der Anhänge anzeigen (Anzahl: 1)
HeHe^^
Ich war mal so frei, obwohl du mit deiner gefundenen Unit ja schon mehr als die halbe Miete hattest ;) Im Bsp. Projekt achte auf die Form "Caption"! Projekt mit allem drumm und drann angehängt! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 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