![]() |
Re: OnMouseMove verzögern
:gruebel:
Würd mich wundern, wenn das nicht im TWinControl schon drin ist... Alle Komponenten, die ich mir grad angeschaut habe (TPageControl, TPanel, TCategoryButtons) haben beide Ereignisse. |
Re: OnMouseMove verzögern
Zitat:
Delphi-Quellcode:
type
tmyPanel = class(TPanel) public 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 declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { tmyPanel } procedure tmyPanel.CMMouseEnter(var Message: TMessage); begin Form1.Caption := 'CMMouseEnter'; end; procedure tmyPanel.CMMouseLeave(var Message: TMessage); begin Form1.Caption := 'CMMouseLeave'; end; procedure TForm1.FormCreate(Sender: TObject); var mPanel: TPanel; begin mPanel := tmyPanel.Create(Self); with mPanel do begin Name := 'myPanel'; Parent := Self; Left := 10; Top := 10; Width := 185; Height := 41; Caption := 'Panel1'; TabOrder := 0; end; end; |
Re: OnMouseMove verzögern
Zitat:
Da gibts nur OnMouseMove. @sniper_w: Ja, natürlich. Diese zwei Ereignisse kann man sich leicht selber bauen, aber von Haus aus sind die wohl nur beim TLabel dabei... |
Re: OnMouseMove verzögern
Hallo!
Ja, ich will erst dann reagieren, wenn der Cursor mindestens eine bestimmte Zeit auf meinem SysTray-Icon ist (welches ich übrigens mit TJvTrayIcon realisieren (dort gibts kein OnMouseEnter/Leave)). Zitat:
Grüße Faux |
Re: OnMouseMove verzögern
das hab ich doch in meinem Edit schon geschrieben. Implementiere einfach die Messages, die sniper_w genannt hat, falls sie noch nicht in deiner wunschkomponente vorhanden sind.
Dann: - im OnMouseEnter Timer starten - im OnMouseLeave Timer beenden - im OnTimer Aktion starten (meinetwegen Hint anzeigen oder w/ever) Ohne Timer? Du brauchst irgendwas, mit dem du die Zeit misst... und eine timer-message ist da sehr bequem. |
Re: OnMouseMove verzögern
Zitat:
Zitat:
Grüße Faux |
Re: OnMouseMove verzögern
Zitat:
Was hab ich denn drüber geschrieben? Du sollst die Messages implementieren. Du weisst nicht, das bedeutet?
Delphi-Quellcode:
Sonst noch Wünsche? Soll ich dir n heisses Bad einlassen?
type
tmyPanel = class(TPanel) public FMouseLeave, FMouseEnter: TNotifyEvent; procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; constructor Create(AOwner: TComponent); override; published property OnMouseEnter: TNotifyEvent read FMouseEnter write FMouseEnter; property OnMouseLeave: TNotifyEvent read FMouseLeave write FMouseLeaver; end; implementation {$R *.dfm} { tmyPanel } procedure tmyPanel.CMMouseEnter(var Message: TMessage); begin if Assigned(OnMouseEnter) then OnMouseEnter(self); end; procedure tmyPanel.CMMouseLeave(var Message: TMessage); begin if Assigned(OnMouseLeave) then OnMouseEnter(self); end; procedure tmyPanel.Create(AOwner: TComponent); begin inherited Create(AOwner); OnMouseEnter := nil; OnMouseLeave := nil; end; end. EDIT: Seitenhieb entfernt. |
Re: OnMouseMove verzögern
Zitat:
@Topic: Jo, sorry, da hab ich mich etwas verlesen. Joa, so werd ichs machen. Danke. :) Grüße Faux |
Re: OnMouseMove verzögern
Sorry... hab das entfernt.
|
Re: OnMouseMove verzögern
Wies scheint hab ich da was falsch gemacht. Es funktioniert nicht. :S
Delphi-Quellcode:
unit Unit2;
interface uses Messages, Classes, Controls, JvTrayIcon; type TCustomJvTrayIcon = class(TJvTrayIcon) private FMouseEnter, FMouseLeave: TNotifyEvent; procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; public constructor Create(AOwner: TComponent); override; published property OnMouseEnter: TNotifyEvent read FMouseEnter write FMouseEnter; property OnMouseLeave: TNotifyEvent read FMouseLeave write FMouseLeave; end; implementation procedure TCustomJvTrayIcon.CMMouseEnter(var Message: TMessage); begin if Assigned(FMouseEnter) then OnMouseEnter(Self); end; procedure TCustomJvTrayIcon.CMMouseLeave(var Message: TMessage); begin if Assigned(FMouseLeave) then OnMouseLeave(Self); end; constructor TCustomJvTrayIcon.Create(AOwner: TComponent); begin inherited Create(AOwner); OnMouseEnter := nil; OnMouseLeave := nil; end; end.
Delphi-Quellcode:
Woran liegt das?!
procedure TForm1.FormCreate(Sender: TObject);
begin TrayIcon := TCustomJvTrayIcon.Create(Self); TrayIcon.Active := True; TrayIcon.OnMouseEnter := TrayIconMouseEnter; TrayIcon.OnMouseLeave := TrayIconMouseLeave; end; procedure TForm1.TrayIconMouseEnter(Sender: TObject); begin Label1.Caption := 'Entered'; end; procedure TForm1.TrayIconMouseLeave(Sender: TObject); begin Label1.Caption := 'Left'; end; Ich weiß, ich werf' euch jetzt einfach so nen Code hin, so nach dem Motto sucht den Fehler, aber ich habe leider keinen Plan wo der Fehelr liegen kann. :oops: Grüße Faux |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 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