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:
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.
Hoffe Ihr könnt mir - wie immer - weiterhelfen.
SCRaT