Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit Form Show und Hide (https://www.delphipraxis.net/75283-problem-mit-form-show-und-hide.html)

sonicfire 17. Aug 2006 03:40


Problem mit Form Show und Hide
 
Servus allerseits! :hi:

Bitte um Entschuldigung , falls diese eine doofe Frage ist... aber:

1. Wenn ich eine zweite Form via "Hide;" schließe und Sie danach wieder mit "Show;" anzeige ... öhm, ja dann sind sämtliche Einstellungen in der Form wieder auf Ihrem Ursprungs-Stand.

Warum? Ich dachte genau dafür sind Show und Hide, um eben NICHT alle Einstellungen zu verlieren?
:gruebel:

Onkelrossie 17. Aug 2006 04:39

Re: Doofe Frage, ich weiss...
 
Guten Morgen,
bei show wird die Form neu gezeichnet und dadurch wird alles bei labels usw. zurrück gesetzt. Versuche es mit Visible := True/False. Ich hoffe das war die Antwort die du gesucht hast.


Einen schönen Tag noch...
Onkelrossie

marabu 17. Aug 2006 06:58

Re: Doofe Frage, ich weiss...
 
Guten Morgen,

grundsätzlich ändern sich keine "Einstellungen" an einer Form, deren Methoden Hide() und Show() aufgerufen werden - vorausgesetzt, die Form wurde nicht zerstört und neu erzeugt. Die Formulierung "eine zweite Form" macht mich stutzig. Vielleicht ist der Zugriff auf die globale Form-Variable schuld an der Verwirrung.

Grüße vom marabu

Daniel 17. Aug 2006 07:14

Re: Doofe Frage, ich weiss...
 
moin,

die Frage ist keineswegs doof und es besteht nicht der geringste Anlass, sich dafür zu entschuldigen. ;-) Aaaaaber: Der Titel, den Du Deinem Beitrag gegeben hast, der ist doof. Bitte ändere ihn doch in etwas Aussagekräftiges. Danke Dir.

Phoenix 17. Aug 2006 07:15

Re: Doofe Frage, ich weiss...
 
Edit: Da war Cheffe schneller... ;-)

lizardking 17. Aug 2006 07:15

Re: Doofe Frage, ich weiss...
 
Zitat:

Zitat von Onkelrossie
Guten Morgen,
bei show wird die Form neu gezeichnet und dadurch wird alles bei labels usw. zurrück gesetzt. Versuche es mit Visible := True/False. Ich hoffe das war die Antwort die du gesucht hast.

Das wird keinen Unterschied machen. Auszug aus der VCL:

Delphi-Quellcode:
procedure TCustomForm.Hide;
begin
  Visible := False;
end;

procedure TCustomForm.Show;
begin
  Visible := True;
  BringToFront;
end;
Intern passiert also eh nicht viel mehr, als auf Visible zuzugreifen.

RavenIV 17. Aug 2006 07:38

Re: Doofe Frage, ich weiss...
 
Zitat:

Zitat von lizardking
Das wird keinen Unterschied machen. Auszug aus der VCL:

.....
.....

Intern passiert also eh nicht viel mehr, als auf Visible zuzugreifen.

es könnte aber sein, dass in FormShow des Forms etwas spezielles gemacht wird.
Daher solltest Du Form.Visible benutzen.

Andidreas 17. Aug 2006 07:39

Re: Doofe Frage, ich weiss...
 
hey,

ich habs mal so gemacht...

Delphi-Quellcode:
ShowWindow(application.Handle, SW_HIDE);
funkt ohne probleme....

falls des problem weiterhin besteht, kannst ja deine einstellungen in einer ini speichern und
vor dem anzeigen die ini datei wieder auslesen!

sonicfire 17. Aug 2006 13:38

Re: Doofe Frage, ich weiss...
 
Zitat:

Zitat von marabu
Guten Morgen,

grundsätzlich ändern sich keine "Einstellungen" an einer Form, deren Methoden Hide() und Show() aufgerufen werden - vorausgesetzt, die Form wurde nicht zerstört und neu erzeugt. Die Formulierung "eine zweite Form" macht mich stutzig. Vielleicht ist der Zugriff auf die globale Form-Variable schuld an der Verwirrung.

Grüße vom marabu

Hmm... naja, ich habe in meinem Hauptprogramm unter TForm1.FormCreate (usw) das hier:
(Also damit die zweite Form beim Programmstart einmal instanziiiert wird:
Delphi-Quellcode:
    NewForm := TForm2.Create(Application);
    NewForm.Position := poMainFormCenter;
Ist natürlich auch unter "Uses" eingebunden (Unit2).

Dann habe ich einfach nur im "Hauptprogramm" einen Button der die Form2 anzeigt:
Delphi-Quellcode:
  Form2.Show;
Und in Form2 bzw. Unit2 habe ich einen "Schließen"-Button:
Delphi-Quellcode:
  Self.Hide;
...komisch :gruebel:

marabu 17. Aug 2006 13:45

Re: Problem mit Form Show und Hide
 
Dann scheint meine Vermutung richtig zu sein:

Zitat:

Zitat von marabu
Vielleicht ist der Zugriff auf die globale Form-Variable schuld an der Verwirrung.

Wenn du eine Instanz von TForm2 in der Variable NewForm erzeugst und Delphi per default eine Instanz in der Variablen Unit2.Form2 ablegt, dann musst du dich entscheiden, mit welcher Instanz du arbeiten willst. Noch besser du entscheidest dich für den einen oder anderen Weg: entweder du beschränkst die Lebenszeit der Form indem du sie bei Bedarf erzeugst und dann wieder löschst, oder du lässt Delphi (Projektoptionen::Formulare) die Form zu Beginn erzeugen und zum Schluß zerstören.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:06 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz