AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TTrayIcon - DblClick überschreiben

Ein Thema von scrat1979 · begonnen am 24. Feb 2007
Antwort Antwort
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#1

TTrayIcon - DblClick überschreiben

  Alt 24. Feb 2007, 10:21
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
Michael Kübler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz