Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Minimiert starten... (https://www.delphipraxis.net/28854-minimiert-starten.html)

GimbaR 31. Aug 2004 12:10


Minimiert starten...
 
... Wie kann ich mein programm minimiert starten?
Ich hab vorher versucht im OnCreate-Ereigniss die procedure GoToTray zu laden, die mein programm minimiert, wenn ich auf einen Button klicke 8also funktioniert die procedure)
hier meine GoToTray procedure:
Delphi-Quellcode:
procedure TForm1.GoToTray;
var
  i: Integer;
  NewItem: TMenuItem;
begin
  SaveConfig;
  CoolTrayIcon1.ShowBalloonHint('Einstellungen gespeichert',
        'Die Einstellungen wurden erfolgreich gespeichert.',
        bitNone, 10);
  Timer1.Enabled:=true;
  PopupMenu1.Items.Clear;
  NewItem:=TMenuItem.Create(PopupMenu1);
    PopupMenu1.Items.Add(NewItem);
    NewItem.Caption:=('Scannen');
    NewItem.OnClick:=PopupItemClickScan;
  NewItem:=TMenuItem.Create(PopupMenu1);
    PopupMenu1.Items.Add(NewItem);
    NewItem.Caption:=('-');
  for i:= 0 to ComboBox1.Items.Count-2 do
  begin
    gamename:=ComboBox1.Items[i];
    NewItem:=TMenuItem.Create(PopupMenu1);
    PopupMenu1.Items.Add(NewItem);
    NewItem.Caption:=(gamename);
    NewItem.OnClick:=PopupItemClick;
  end;
  NewItem:=TMenuItem.Create(PopupMenu1);
    PopupMenu1.Items.Add(NewItem);
    NewItem.Caption:=('-');
  NewItem:=TMenuItem.Create(PopupMenu1);
    PopupMenu1.Items.Add(NewItem);
    NewItem.Caption:=('Eintellungen');
    NewItem.Default:=true;
    NewItem.OnClick:=PopupItemClickOptions;
  NewItem:=TMenuItem.Create(PopupMenu1);
    PopupMenu1.Items.Add(NewItem);
    NewItem.Caption:=('Hilfe');
    NewItem.OnClick:=PopupItemClickHelp;
  NewItem:=TMenuItem.Create(PopupMenu1);
    PopupMenu1.Items.Add(NewItem);
    NewItem.Caption:=('Beenden');
    NewItem.OnClick:=PopupItemClickExit;
  Application.Minimize;
  CoolTrayIcon1.PopupMenu:=PopupMenu1;
  CoolTrayIcon1.HideMainForm;
end;
leider startet meine anwendung ganz normal, sie wird nicht in die TNA verschoben :(
Wie bekomme ich sie in die TNA?

mfg GimbaR

Dani 31. Aug 2004 12:23

Re: Minimiert starten...
 
Soviel ich weiß besitzt/besaß die CoolTrayIcon Komponente ein OnStartup (oder so) Event, wo du festlegen kannst, ob das Formular angezeigt werden soll oder nicht.

GimbaR 31. Aug 2004 14:10

Re: Minimiert starten...
 
habs probiert, ging abba net...
Delphi-Quellcode:
procedure CoolTrayIcon1.OnStartup(irgendwas^^);
begin
   GotoTray;
end;
oder:
Delphi-Quellcode:
procedure CoolTrayIcon1.OnStartup(irgendwas^^);
begin
   GotoTray;
   Application.Minimize;
end;

Luckie 31. Aug 2004 14:14

Re: Minimiert starten...
 
Schreib mal in die Projektdatei:
Delphi-Quellcode:
Application.ShowmainForm := False;

GimbaR 31. Aug 2004 14:51

Re: Minimiert starten...
 
hab das mal im project gespeichert (also net in Form1):
Delphi-Quellcode:
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
  Application.ShowmainForm := False;
end.
hat net geklappt...
muss dass in OnStartUp-Ereigniss von CoolTrayIcon?

nailor 31. Aug 2004 14:54

Re: Minimiert starten...
 
probier mal das showmainform vor das form create

Steve 31. Aug 2004 15:15

Re: Minimiert starten...
 
Muss nicht unbedingt vor Create sein, Hauptsache vor run :)

Gruß
Stephan

Golze 31. Aug 2004 17:55

Re: Minimiert starten...
 
habe die gerade die zweitbeste Lösung gelesen mit
Application.ShowMainForm := False
Nachteil: Das OnShow-Ereignis - in dem erst das komplette Handle verfügbar ist - wird nicht mehr durchlaufen. Alternativen wären
Delphi-Quellcode:
...
Const
  ShowArray: array [Boolean] of Integer = (sw_showNormal, sw_Hide);
begin
  if not (csDesigning in ComponentState) then
    ShowWindow(Application.Handle, ShowArray[FHideTask]);
...
oder auch nicht zu verachten mit CreateParams(..).

richtig gut finde ich aber
Delphi-Quellcode:
program project1;
uses
  Forms;
{$R *.RES}

begin
  Application.Initialize;
  Application.Run;
end;
Keine Form mehr da. Einfach weg; nix mehr Form anzeigen und ärgern.
kay

Sprint 31. Aug 2004 17:59

Re: Minimiert starten...
 
Die Eigenschaft ShowMainForm kann auch im Create Ereignis der Form gesetzt werden.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.ShowMainForm := False;
end;

GimbaR 31. Aug 2004 19:18

Re: Minimiert starten...
 
Zitat:

Zitat von Golze
habe die gerade die zweitbeste Lösung gelesen mit
Application.ShowMainForm := False
Nachteil: Das OnShow-Ereignis - in dem erst das komplette Handle verfügbar ist - wird nicht mehr durchlaufen. Alternativen wären
Delphi-Quellcode:
...
Const
  ShowArray: array [Boolean] of Integer = (sw_showNormal, sw_Hide);
begin
  if not (csDesigning in ComponentState) then
    ShowWindow(Application.Handle, ShowArray[FHideTask]);
...
oder auch nicht zu verachten mit CreateParams(..).

richtig gut finde ich aber
Delphi-Quellcode:
program project1;
uses
  Forms;
{$R *.RES}

begin
  Application.Initialize;
  Application.Run;
end;
Keine Form mehr da. Einfach weg; nix mehr Form anzeigen und ärgern.
kay

Kannst du mir das erste Bsp genauer erklären, plz, hab kA woarauf du hinaus willst, bzw wo ich das einbinden soll...
Hab das mal so versucht, hat abba auch net geklappt (ganuso wenig wie das Einfügen der Zeile Application.Minimize:=false; im OnCreate-ereigniss der MainForm) :(

Delphi-Quellcode:
program GB;

uses
  Forms, IniFiles, SysUtils, Dialogs,
  main in 'units\main.pas' {Form1},
  Unit2 in 'units\Unit2.pas' {Form2};

{$R *.res}

var
  ini: TIniFile;

begin
  Application.Initialize;
  Application.Title := 'GameBuster';
  Application.HelpFile := 'E:\sonstiges\Eigene Dateien\CODE\Delphi\GB.beta\GameBuster-help.chm';
  ini:=TInifile.Create(ExtractFilePath(ParamStr(0))+'\config.ini');
    try
      if ini.ReadBool('Options', 'StartMinimized', false)=true then Application.ShowMainForm:=false;
    finally
      ini.free;
    end;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.

GimbaR 1. Sep 2004 11:03

Re: Minimiert starten...
 
War das jetzt nen Scherz von Golze, so wie die zweite möglichkeit (da ich die Form ja brauch, kann ich ja das create-ereigniss löschen)?

hat nich sonst noch jemand mal nen programm so geschreiben, dass es minimiert gestartet wird?

alcaeus 1. Sep 2004 11:28

Re: Minimiert starten...
 
Hi Gimbar!

Ich habe in meinem ComputerPinger einfach einen Code in der dpr-Datei eingefügt:
Delphi-Quellcode:
if f_Main.cb_LoadMinimized.Checked then
  Application.ShowMainForm := False;
Das TrayIcon wird bei mir automatisch erstellt.
Wichtig: Wie bereits bemerkt wird das OnShow-Ereignis beim Start nicht ausgelöst, weil ja das Form nicht angezeigt wird.

Greetz
alcaeus

Steve 1. Sep 2004 11:34

Re: Minimiert starten...
 
Möchte man, dass das Fenster nicht angezeigt wird, dann möchte man doch logischerweise auch nicht, dass OnShow ausgeführt wird :mrgreen:
Falls beim Start was ausgeführt werden soll, dann halt in OnCreate, welches ja auch bei ShowMainForm=False ausgeführt wird...

Gruß
Stephan

GimbaR 1. Sep 2004 11:41

Re: Minimiert starten...
 
hmmm, da hab ich doch eigentlich mit
Delphi-Quellcode:
ini:=TInifile.Create(ExtractFilePath(ParamStr(0))+'\config.ini');
    try
      if ini.ReadBool('Options', 'StartMinimized', false)=true then Application.ShowMainForm:=false;
    finally
      ini.free;
    end;
nix falsch gemacht, oder?

alcaeus 1. Sep 2004 11:51

Re: Minimiert starten...
 
Hi gimbar!

Der Code müsste eigentlich so laufen. Ich hab im moment nicht zeit den zu testen, aber auf den ersten blick scheint nichts falsch zu sein.

Greetz
alcaeus

GimbaR 2. Sep 2004 06:25

Re: Minimiert starten...
 
so, ich weiß jetzt wieso das nur teilweise geklappt hat: in meiner procedure GoToTray steht ganz am enendede
Delphi-Quellcode:
Application.Minimize;
, dies hatte zu folge, dass auch wenn die Mainform net angezeigt wurde, mein Programm in der taskbar war...
najo, problem gelöst, trotzdem THX!!!

mfg GimbaR


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