AGB  ·  Datenschutz  ·  Impressum  







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

Mainform verstecken

Ein Thema von the_seed · begonnen am 31. Jul 2004 · letzter Beitrag vom 28. Jun 2019
Antwort Antwort
Seite 2 von 2     12   
the_seed

Registriert seit: 31. Dez 2003
213 Beiträge
 
#1

Re: Mainform verstecken

  Alt 31. Jul 2004, 23:08
Zitat von Meflin:
im übrigen sollte auch application.showmainform := true die mainform wieder sichtbar machen. bei mir tut es das zumindest...
sollte
bei D7 EE aufjedenfall nicht, mit de befehl Application.Mainform.Show;
gehts aber THX
  Mit Zitat antworten Zitat
Int3g3r

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

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
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#3

AW: Mainform verstecken

  Alt 27. Jun 2019, 15:42
Steck doch den wesentlichen Code aus dem FormActivate in eine eigene Methode und rufe die dann wahlweise im FormActivate oder an beliebiger anderer Stelle auf.
Delphi-Quellcode:
program hcFileTransfer;

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

begin
  Application.Initialize;
  Application.ShowMainForm := ParamCount > 1;
  Application.Title := 'hcFTP';
  Application.CreateForm(TformFTP, formFTP);
  if Application.ShowMainForm then begin
    Application.Run;
  end else begin
    // Hier die "neue" Methode aufrufen,
    formFTP.DoIt;
  end;
end.
Delphi-Quellcode:
procedure TformFTP.DoIt;
begin
   if ParamCount > 0 then
   begin
      if lowercase(ParamStr(1)) = '-upthen
      begin
         parameterUpload; //Lade datei Hoch
      end
      else if lowercase(ParamStr(1)) = '-downthen
      begin
         parameterDownload; //Lade date Herunter
      end
      else
      begin
         showmessage('Ungültige Parameter!');
      end;
      Close;
   end;
end;

procedure TformFTP.FormActivate(Sender: TObject);
begin
  DoIt;
end;
Ungetestet hingedaddelt.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: Mainform verstecken

  Alt 27. Jun 2019, 17:38
Zitat:
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.
Ich empfehle dir, dich vom OnActivate-Event wenn irgendwie möglich zu trennen.
Mein Programm hat damals auch auf FormShow aufgebaut. Der notwendige Refactor, um all den Quark auszubessern, hat Monate gedauert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#5

AW: Mainform verstecken

  Alt 27. Jun 2019, 22:46
Ich empfehle dir, dich vom OnActivate-Event wenn irgendwie möglich zu trennen.
Mein Programm hat damals auch auf FormShow aufgebaut. Der notwendige Refactor, um all den Quark auszubessern, hat Monate gedauert.
Oh, ich wurde schon mit Code konfrontiert, bei dem die haarsträubendsten Dinge im FormPaint passierten - auch schon mal Aufrufe von FormActivate oder FormResize.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:20 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