Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Application anwählbar minimiert startbar machen (https://www.delphipraxis.net/44752-application-anwaehlbar-minimiert-startbar-machen.html)

Helmi 24. Apr 2005 09:36


Application anwählbar minimiert startbar machen
 
Hallo,

Ich hab ein TrayIcon und bei diesem TrayIcon minimiere ich im "Loaded" die MainForm der Application.

Delphi-Quellcode:
procedure TTrayIcon.Loaded;
begin
  inherited Loaded;        // Immer zuerst "inherited Loaded"

  If FStartMinimized and not (csDesigning in ComponentState) then
  begin
    Application.ShowMainForm     := false;
    ShowWindow(Application.Handle, SW_HIDE);
  end;
end;
Die Variable "FStartMinimized" kommt aus einer Property.

Delphi-Quellcode:
property StartMinimized: Boolean read FStartMinimized write SetStartMinimized
  default False;
Wenn ich jetzt im OI "StartMinimied" auf "true" setze dann funktioniert es ohne Probleme.
Nur würd ich gerne aus dem Programm raus anwählbar machen - sprich mit einer CheckBox.

Ich hab es mal versucht, dass ich es im OnCreate der Form so mache:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Iniauslesen; //<== Hier wird eine Ini-Datei ausgelesen und der Zustand der CheckBox1 beschrieben.

  with TrayIcon do
    begin
      StartMinimized := CheckBox1.Checked; //zu diesem Zeitpunkt "true"
    end;
Das Problem hierbei ist, dass das "Loaded" des TrayIcons schon "durchlaufen" wurde und deshalb bringt das nichts mehr.

Weiss jemand wie ich es am besten machen könnte, damit es minimiert startbar ist und trotzdem die Form nicht kurz sichtbar ist.
Ich würd das ganze gerne in der Komponente lassen - sprich über die Property "StartMinimized".

SirThornberry 24. Apr 2005 10:19

Re: Application anwählbar minimiert startbar machen
 
in deinem Iniauslesen könntest du als Defaultwert den der Checkbox nehmen
Delphi-Quellcode:
StartMinimized := Ini.ReadBool('YourSection', 'StartMinimized', CheckBox1.Checked);

Helmi 24. Apr 2005 17:32

Re: Application anwählbar minimiert startbar machen
 
Hallo,

Zitat:

Zitat von SirThornberry
in deinem Iniauslesen könntest du als Defaultwert den der Checkbox nehmen
Delphi-Quellcode:
StartMinimized := Ini.ReadBool('YourSection', 'StartMinimized', CheckBox1.Checked);

aber das ist das was ich 1. nicht brauche und was 2. auch nicht funktioniert.
ich möchte das ja in der Komponente haben

Christian Seehase 24. Apr 2005 18:49

Re: Application anwählbar minimiert startbar machen
 
Moin Helmi,

wenn Du mit minimiert starten meinst, dass die Anwendung zuerst nur im Tray erscheinen soll, dann könntest Du es z.B. dadurch erreichen, dass Du in der Projektdatei ApplicationShowMainForm auf false setzt, in Abhängigkeit der Einstellung.

Helmi 24. Apr 2005 18:56

Re: Application anwählbar minimiert startbar machen
 
Zitat:

Zitat von Christian Seehase
Moin Helmi,

wenn Du mit minimiert starten meinst, dass die Anwendung zuerst nur im Tray erscheinen soll, dann könntest Du es z.B. dadurch erreichen, dass Du in der Projektdatei ApplicationShowMainForm auf false setzt, in Abhängigkeit der Einstellung.

Ja - das wär das Einfachste.

Ich würds halt gerne in die TrayIcon-Komponente packen.
Es ist ja eigentlich schon drin (siehe oben), nur kann man dort das nicht einstellbar machen, sondern es funktioniert nur aus dem OJ raus. (bzw. wenn schon die Variable beim laden der komponente true ist)

Christian Seehase 24. Apr 2005 19:27

Re: Application anwählbar minimiert startbar machen
 
Moin Helmi,

das kannst Du jetzt drehen und wenden wie Du willst, aber irgendwo musst Du den Wert speichern, wenn er sich verändert hat, zumindest beim Programmende.
Ob die jeweilige Programmdatei dafür der geeignete Ort ist wage ich aber mal zu bezweifeln. ;-)


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