Thema: Delphi Mainform verstecken

Einzelnen Beitrag anzeigen

Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Mainform verstecken

  Alt 27. Jun 2019, 15:26
Guten Tag,

Ich stehe gerade vor einem ähnlichen Problem und habe diesen Thread gefunden.

Wenn ich meine Applikation mit Parameter starte soll nur ein Progressbar erscheinen. Das mainForm soll versteckt werden, nach Abschluss soll sich das Programm selbst schliessen.
Wenn ich meine Applikation ohne Parameter starte soll das mainForm angezeigt werden.

Mein Problem ist nun das ich noch nicht ganz verstehe wie eine Applikation aufgebaut wird.
Wenn ich in meinem Projekt Application.ShowMainForm := false; im OnCreate oder im Quelltext verwende, funktioniert meine Applikation nicht ordnungsgemäss weil das OnActivate Event nicht mehr ausgeführt wird.
Leider kann ich den Code im OnActivate nicht im OnCreate laufen lassen weil sich sonst die Applikation nach Abschluss nicht mehr selbst schliessen kann.

Warum wird das OnActivate nicht mehr ausgeführt ?
Wie lässt sich das verstecken des mainForms in meinem Fall erreichen?
Wenn möglich möchte ich den aufbau des mainForms nie sehen(kein geflacker) wenn ich parameter benutze.
Es sollte nur virtuell existieren.


Delphi-Quellcode:
program hcFileTransfer;

uses
  Forms,
  ftpprogressf in 'ftpprogressf.pas{FormFtpprogressf},
  ftpf in 'ftpf.pas{formFTP},
  ftpdialogf in 'ftpdialogf.pas{FormFtpdialog};

begin
  Application.Initialize;
   if ParamCount > 1 then
   Application.ShowMainForm := false; // -> onActivate wird nicht mehr ausgeführt.
  Application.Title := 'hcFTP';
  Application.CreateForm(TformFTP, formFTP);
  Application.Run;
end.



procedure TformFTP.FormCreate(Sender: TObject);
begin
   FormFtpdialog := TFormFtpdialog.Create(self);
   FormFtpprogress := TFormFtpprogress.Create(self);
   State := OffLineConst;
   LocFileSizes := TStringList.Create;
   RemFileSizes := TStringList.Create;
   ComboBoxLocHistory.Items.Insert(0, GetCurrentDir);
   ComboBoxLocHistory.ItemIndex := 0;
   RadioGroupTransferMode.ItemIndex := 2;
   UpdateLocal;
   UpdateButtons;
   readSettings;
   if (edtLocalPath.Text <> '') and (edtLocalPath.Text <> ComboBoxLocHistory.Items[0]) then
   begin
      chDir(edtLocalPath.Text);
      ComboBoxLocHistory.Items.Insert(1, edtLocalPath.Text);
      ComboBoxLocHistory.ItemIndex := 1;
   end;
end;



procedure TformFTP.FormActivate(Sender: TObject);
begin
    if ParamCount > 0 then
   begin
      if lowercase(ParamStr(1)) = '-upthen
      begin
         parameterUpload; //Lade datei Hoch
         Close; // Close kann nicht im onCreate Event ausgeführt werden.
      end
      else if lowercase(ParamStr(1)) = '-downthen
      begin
         parameterDownload; //Lade date Herunter
         Close; // Close kann nicht im onCreate Event ausgeführt werden.
      end
      else
      begin
         showmessage('Ungültige Parameter!');
         Application.Terminate;
      end;
   end;
end;
Danke für die Hilfe,
Gruss Int3g3r

Geändert von Int3g3r (27. Jun 2019 um 15:41 Uhr)
  Mit Zitat antworten Zitat