![]() |
TTrayIcon - DblClick überschreiben
Hallo zusammen,
ich habe eine neue Komponente von TTrayIcon abgeleitet. Ziel soll es sein, daß bei einem Minimieren des Formulares das Icon in der TNA erscheint und die Applikation "versteckt" wird. Das klappt auch wunderbar. Bei einem Doppelklick auf das TrayIcon soll die Applikation (= das Formular) wiederhergestellt werden. Ich möchte, daß ich nicht bei jeder meiner Application die entsprechenden Ereignisse über das Formular (z.B. OnMinimize etc.), sondern direkt über die Komponente abfange und behandle. Wie gesagt, das minimieren funktioniert 1A, nur der Doppelklick auf das TrayIcon wird irgendwie nicht "wahrgenommen". Was muss ich denn im Quellcode noch einfügen, um das zu verwirklichen (Self.Visiblie := False, FOwnerForm.Visible:= True und FOwnerForm.BringToFront soll in der entsprechenden Prozedur ausgeführt werden). Die Mesage WM_LBUTTONDBLCLICK (o.ä.) habe ich versucht abzufangen, ohne Erfolg. Hier der Quellcode:
Delphi-Quellcode:
Hoffe Ihr könnt mir - wie immer - weiterhelfen.
unit AdvTrayIcon;
interface uses SysUtils, Classes, ExtCtrls, Forms, Messages, Windows; type TAdvTrayIcon = class(TTrayIcon) private { Private-Deklarationen } FOldWndProc : TWndMethod; FOwnerForm : TForm; { Protected-Deklarationen } procedure WndProc(var Msg : TMessage); public { Public-Deklarationen } constructor Create(AOwner : TComponent); override; destructor Destroy; override; published { Published-Deklarationen } end; procedure Register; implementation constructor TAdvTrayIcon.Create(AOwner: TComponent); begin inherited Create(AOwner); FOwnerForm := TForm(AOwner); FOldWndProc := FOwnerForm.WindowProc; FOwnerForm.WindowProc := WndProc; end; destructor TAdvTrayicon.Destroy; begin FOwnerForm.WindowProc := FOldWndProc; inherited Destroy; end; procedure TAdvTrayIcon.WndProc(var Msg: TMessage); begin If (Msg.Msg = WM_SYSCOMMAND) and (Msg.wParam = SC_MINIMIZE) Then Begin FOwnerForm.Hide; Self.Visible := True; End Else FOldWndProc(Msg); end; procedure Register; begin RegisterComponents('Michael Kübler', [TAdvTrayIcon]); end; end. SCRaT |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 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