Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Aus TrayIcon Application "steuern" (https://www.delphipraxis.net/56853-aus-trayicon-application-steuern.html)

Helmi 12. Nov 2005 12:07


Aus TrayIcon Application "steuern"
 
Hallo,

ich habe eine TrayIcon-Komponente, in der ich die Application-Mainform anzeigen lasse oder verstecke.

Beim Anzeigen soll die Form 1. angezeigt werden und 2. gleich in den Vordergrund kommen.

Beim Verstecken soll die Form 1. versteckt werden und 2. auch aus der Taskleiste verschwinden.

Ich hab das mal so gelöst:
Delphi-Quellcode:
procedure TTrayIcon.ShowMainForm;
begin
  with Application do
    begin
      ShowWindow(Handle, SW_SHOW);

      //maximieren
      Restore;

      //Haupt-Form anzeigen
      MainForm.Show;    

      //in den Vordergrund bringen
      BringToFront;
    end;
end;

procedure TTrayIcon.HideMainForm;
var
  hwndOwner: HWnd;

begin
  with Application do
    begin
      //minimieren
      Minimize;

      //Haupt-Form verstecken
      MainForm.Hide;

      ShowWindow(Handle, SW_HIDE);

      //Icon aus der Taskleiste verstecken
      hwndOwner := GetWindow(Handle, GW_OWNER);
      ShowWindow(hwndOwner, SW_HIDE);

      //für Windows 2000
      ShowWindowAsync(hwndOwner, SW_HIDE);
      ShowWindowAsync(Handle, SW_HIDE);
    end;
end;
Was mich an diesem Code stört, dass ich "VCL-Code" mit "API-Code" vermische.

Gibt es eine andere, VCL-basierende Lösung?
oder grundsätzlich einen anderen Lösungsweg?

omata 12. Nov 2005 14:51

Re: Aus TrayIcon Application "steuern"
 
Moin,

schau dir doch mal die CoolTrayIcon-Komponente an.

Ich bin nicht ganz sicher, aber vielleicht gefällt dir die besser.
Schau dir mal die Beispiele an.


MfG
Thorsten

Ralf Kaiser 12. Nov 2005 14:59

Re: Aus TrayIcon Application "steuern"
 
Zitat:

Zitat von Helmi
Was mich an diesem Code stört, dass ich "VCL-Code" mit "API-Code" vermische.

Gibt es eine andere, VCL-basierende Lösung?
oder grundsätzlich einen anderen Lösungsweg?

Hallo,

was stört dich daran?

Wenn du eine "VCL-basierende Lösung" benutzt, dann wird genau dieser (oder sehr ähnlicher) Code ebenfalls ausgeführt. Der einzige Unterschied ist dann, daß er in den Methoden dieser Komponente ausgeführt wird.

Welchen Vorteil versprichst du dir davon?

Der einzige Effekt wäre, daß du noch zusätzlichen Code für das Erstellen/Initialisieren/Zerstören der Komponente im Programm hättest.

Ciao,
Ralf

SirThornberry 12. Nov 2005 15:14

Re: Aus TrayIcon Application "steuern"
 
anstele von ShowWindow kannst du auch das property "visible" nutzen oder die methoden "show" und "hide". Da beim Application Object diese Methoden allerdings nicht vorhanden sind wird dir nix anders überig bleiben als eben die api-Befehle zu nutzen oder von der Klasse TApplication ableiten, methoden hinzufügen (nur methoden, nix weiter) und dann kannst du auch auf Application auf deine neue Klasse casten und die entsprechenden methoden ausführen. Ist aber bedeutend mehr arbeit als einfach die api-befehle direct zu nutzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:16 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