AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

VCL Formular verstecken

Offene Frage von "KodeZwerg"
Ein Thema von Igerbam · begonnen am 25. Sep 2020 · letzter Beitrag vom 28. Sep 2020
Antwort Antwort
Igerbam

Registriert seit: 25. Sep 2020
Ort: NRW
9 Beiträge
 
Delphi 10.4 Sydney
 
#1

VCL Formular verstecken

  Alt 25. Sep 2020, 21:34
Hat hier jemand eine Ahnung wie man ein anderes VLC-Formular öffnen und das alte schließt? Natürlich kann ich beim aufrufen den anderen VLC-Formulars das andere mit Form1.Hide verstecken und wenn ich es schließe in Ereignissen des neuen Formulars FormCloseQuery so schreiben:
Delphi-Quellcode:
Halt(ExitCode);
Application.Terminate;
Damit wird das Programm dann immer komplett beendet. Folgendes Problem: Wenn ich dann das neue VCL-Formular anzeigen will und das alte(main) Formular verstecke ist das Programm nicht mehr in der Taskleiste zu finden:

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
begin
Application.CreateForm(TForm5, Form5);
Form5.Show;
Self.Hide;
end;
heißt bisher hab ich das immer so gemacht:

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
begin
Application.CreateForm(TForm5, Form5);
Form5.Show;
menu:=nil;
ClientHeight:=0;
ClientWidth:=0;
BorderIcons:=[];
end;
aber so bleibt natürlich ein kleines Fenster im Hintergrund offen. Wie kann ich das verstecken?
Mika / 15J
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.709 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: VCL Formular verstecken

  Alt 26. Sep 2020, 01:16
Die MainForm zu schließen (Close) beendet das ganze Programm. Mit Hide ausblenden geht aber.

Durch Application.MainFormOnTaskbar=True wird die MainForm dort angezeigt,
aber das auf False zu ändern ist eine schlechte Idee.
Früher wurde in der Taskbar das unsichtbare Message-Windows der Application angezeigt, was aber seit Vista dank AeroPeak und Co. blöde Nebenwirkungen hat, z.B. hat das Vorschaufenster dann keinen Inhalt, weil die MessageForm ja leer ist.

Lösung:
Wie man für ein anderes Form auch einen Taskbar-Button bekommt,
da hätte dir die Suchfunktion bestimmt geholfen: Fenster ins Taskleiste anzeigen, oder Dergleichen
Stichwort: Hier im Forum suchenWS_EX_APPWINDOW
z.B. https://www.swissdelphicenter.ch/de/showcode.php?id=775

Application.Terminate oder MainForm.Close beendet das Programm.

Halt beendet zwar auch die Anwendung, aber das kann man eher als "erschießen" bezeichnen.
Und wer sowas nötig hat, der hat wohl extreme Problme mit seinem Programm.
Die Hilfe sagt dazu nicht umsonst: Initiates the abnormal termination of a program.
Delphi-Quellcode:
//ExitCode := ...; falls man das benötigt
Application.Terminate;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (26. Sep 2020 um 01:18 Uhr)
  Mit Zitat antworten Zitat
venice2

Registriert seit: 5. Dez 2019
Ort: Köln
805 Beiträge
 
Delphi 2010 Architect
 
#3

AW: VCL Formular verstecken

  Alt 26. Sep 2020, 01:31
Zitat:
Halt beendet zwar auch die Anwendung, aber das kann man eher als "erschießen" bezeichnen.
Und wer sowas nötig hat, der hat wohl extreme Problme mit seinem Programm.
Ja?
Warum stellt man dann so eine Funktion überhaupt zur Verfügung wenn sie Keine Berechtigung hat.

Ich denke es ist legitim "Halt" unter besonderen Voraussetzungen zu verwenden.
Zum beispiel wenn man eine DLL instantiiert und diese einen Fehler ausgibt, da man ohne diese nicht arbeiten kann sollte das legitim sein.
Außer das man ein Window erstellt hat ist ja sonst noch nichts passiert.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.709 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: VCL Formular verstecken

  Alt 26. Sep 2020, 01:53
Warum?
Für den Notfall, wenn man wegen schwer Probleme alles beenden abschießen muß.

Ja, für die Behandlung von "schweren" Fehlern ist es schon OK, aber ein Ausnahmeverhalten ist nicht für den Standard da, also nicht zum "regulären" Beenden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (26. Sep 2020 um 02:13 Uhr)
  Mit Zitat antworten Zitat
venice2

Registriert seit: 5. Dez 2019
Ort: Köln
805 Beiträge
 
Delphi 2010 Architect
 
#5

AW: VCL Formular verstecken

  Alt 26. Sep 2020, 02:14
Zitat:
aber ein Ausnahmeverhalten ist nicht für den Standard da, also nicht zum "regulären" Beenden.
Das ist richtig!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.079 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: VCL Formular verstecken

  Alt 28. Sep 2020, 08:43
Wenn man möchte, kann man sein Programm mit Parametern bestücken.
Beispiel: "Program.exe /Form=1"

Eine kleine Abfrage ob das Programm bereits geladen ist in der .dpr rein die dann auch das im Parameter aufgerufene Formular öffnet.
Bei der Operation die das Formular wechselt halt eine Execute Methode mit entsprechenden Parameter aufrufen.

So etwas wäre nur Sinnvoll wenn man keinen Datenaustausch zwischen den Formularen hat.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf