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
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.374 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Mainform verstecken

  Alt 28. Jun 2019, 06:22
Ich mache diesen ganzen Zirkus mit Application.ShowMainForm gar nicht erst.
Für solche Variationen beim Programmstart sieht meine dpr-Datei so aus:
Delphi-Quellcode:
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TdtmMain, dtmMain);
  Application.CreateForm(TfrmMain, frmMain);
  if ParamCount >= 3 then
  begin
    frmMain.DoJobs;
    frmMain.Close;
  end
  else
  begin
    Application.Run;
  end;
Ich mache also bei parametergesteuertem Aufruf gar kein Application.Run. Dafür habe ich eine eigene Methode "DoJobs", die dann die automatisierten Prozesse durchführt. Dort eine Fortschrittsanzeige einzubauen sollte problemlos möglich sein. Ich hatte bisher keinen Bedarf für eine Anzeige, da das bei mir in der Regel zeitgesteuerte Prozesse sind, die keine Visualisierung erfordern. Theoretisch könnte man dafür auch ein Konsolen-Programm schreiben, aber bei Bedarf nutze ich solche Anwendungen auch mit GUI. Da ist ein Konsolenprogramm nicht mehr so praktisch.
Peter
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.562 Beiträge
 
Delphi 7 Professional
 
#2

AW: Mainform verstecken

  Alt 28. Jun 2019, 08:31
Ich mache also bei parametergesteuertem Aufruf gar kein Application.Run. Dafür habe ich eine eigene Methode "DoJobs", die dann die automatisierten Prozesse durchführt. Dort eine Fortschrittsanzeige einzubauen sollte problemlos möglich sein. Ich hatte bisher keinen Bedarf für eine Anzeige, da das bei mir in der Regel zeitgesteuerte Prozesse sind, die keine Visualisierung erfordern. Theoretisch könnte man dafür auch ein Konsolen-Programm schreiben, aber bei Bedarf nutze ich solche Anwendungen auch mit GUI. Da ist ein Konsolenprogramm nicht mehr so praktisch.
Das ist meiner Meinung nach die einzige, sinnvolle Variante.

Und das Schöne daran: Banal einfach zu implementieren.

Setzt halt voraus, das man Progammsteuerungslogik nicht von irgendwelchen Anzeigeereignissen abhängig macht (was ich übrigens für einen sehr schlechten Programmierstil halte).

'ne Datei im FormActivate zu laden, ist keine besonders gute Idee. Was ist denn, wenn ein Formular mehrfach aktiviert wird? Wird die Datei dann mehrfach geladen? Jedes Mal, wenn man das Programm in den Vordergrund holt (und dann wieder in den Hintergrund schiebt, weil einem das Laden der Datei zu lange dauert, um danach das Programm wieder in den Vordergrund zu holen, weil das Laden endlich fertig ist, was zu einem erneuten Laden der Datei führt, weshalb man es für diese Zeit wieder in den Hintergrund schiebt, um danach das Programm wieder in den ...)?
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
260 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Mainform verstecken

  Alt 28. Jun 2019, 08:36
Zitat:
Ich mache diesen ganzen Zirkus mit Application.ShowMainForm gar nicht erst.
Kann ich nur zustimmen.

Wenn Du in Delphi under 'Projekt' den Menü Eintrag "Quelltext anzeigen" wählst, siehst Du den code der beim Start eines Projektes abläuft.

Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;

Das Formular welches als erstes erzeugt wird, wird dann auch angezeigt und gestartet.

In diesem Fall wäre dies "ProgressBar"

Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TProgessBar, ProgessBar);
Application.CreateForm(TForm1, Form1);
Application.Run;

welches dann den Job anstossen könnte und dann das Programm wieder beenden. Dabei kann dann das MainForm (also Form1) verwendet werden, ohne dass es angezeigt wird.
Wenn Du kein Form anzeigen willst, dann ist der "DoJobs" Ansatz perfekt.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF

Geändert von jziersch (28. Jun 2019 um 08:41 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Mainform verstecken

  Alt 28. Jun 2019, 10:40
Hallo,

Zitat:
ne Datei im FormActivate zu laden, ist keine besonders gute Idee. Was ist denn, wenn ein Formular mehrfach aktiviert wird?
Das mache ich immer so.

Allerdings steht bei mir als erste Zeile
OnActivate := nil;
Heiko
  Mit Zitat antworten Zitat
Int3g3r

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

AW: Mainform verstecken

  Alt 28. Jun 2019, 12:30
Vielen Dank für die Beispiele.

Es funktioniert nun.
Delphi-Quellcode:
// Projekt -> Quelltext Anzeigen (.dpr file)
begin
   Application.Initialize;
   Application.Title := 'FTP';
   Application.CreateForm(TformFTP, formFTP);
   if ParamCount > 0 then
      begin
         Application.ShowMainForm := false;
         formFTP.parameterStart;
         formFTP.Close;
      end
      else
      begin
         Application.Run;
      end;
end.

Geändert von Int3g3r (28. Jun 2019 um 14:29 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.562 Beiträge
 
Delphi 7 Professional
 
#6

AW: Mainform verstecken

  Alt 28. Jun 2019, 12:41
Vielen Dank für die Beispiele.

Es funktioniert nun.
Delphi-Quellcode:
// Projekt -> Quelltext Anzeigen (.dpr file)
begin
   Application.Initialize;
   Application.Title := 'FTP';
   Application.CreateForm(TformFTP, formFTP);
   if ParamCount > 0 then
      begin
         Application.ShowMainForm := false;
         formFTP.parameterStart;
         formFTP.Close;
      end;
   Application.Run;
end.
Bitte anpassen:
Delphi-Quellcode:
// Projekt -> Quelltext Anzeigen (.dpr file)
begin
  Application.Initialize;
  Application.Title := 'FTP';
  Application.CreateForm(TformFTP, formFTP);
  if ParamCount > 0 then
  begin
    Application.ShowMainForm := false;
    formFTP.parameterStart;
    formFTP.Close;
  end else begin
    Application.Run; // Das muss nur ausgeführt werden,
                     // wenn kein Parameter übergeben wurde,
                     // aber bei einer Parameterübergabe bestimmt
                     // nicht mehr nach dem Schließen des Hauptformulares.
                     // Auch dann nicht, wenn es vielleicht so funktionieren mag.
  end;
end.
  Mit Zitat antworten Zitat
Int3g3r

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

AW: Mainform verstecken

  Alt 28. Jun 2019, 14:31
Danke für die Info. Ist nun angepasst.
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:45 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