Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Weitere Forms nach schließen leeren (https://www.delphipraxis.net/42611-weitere-forms-nach-schliessen-leeren.html)

Nisbo 21. Mär 2005 16:50


Weitere Forms nach schließen leeren
 
Moin Moin

denke mal langsam nerve ich :wiejetzt: aber einige sachen finde ich leider nicht durch suchen :(

Ich habe Ein Form --> Form1 von dem 6 weitere Forms geöffnet werden, funktioniert auch ohne Probleme, nur wenn ich jetzt sagen wir mal Form7 öffnen, dort was mache es wieder schließe und wieder öffne, dann ist das Form nicht im "urzustand" sondern das was ich da mal eingegeben habe ist noch vorhanden.

Wie kann man das umgehen ? also quasi resetten ?

toms 21. Mär 2005 16:52

Re: Weitere Forms nach schließen leeren
 
Hallo!

Erzeuge die Forms dynamisch und gib sie beim Beenden wieder frei.
Dann findest du bei jedem weiteren Anzeigen der Forms wieder den "urzustand" vor.

malo 21. Mär 2005 16:55

Re: Weitere Forms nach schließen leeren
 
Du kannst ja im OnClose des Form7 einfach alle Daten in den "Urzustand" zurückversetzen (also Komponenten wieder richtig setzen, Variablen zurück etc.) ;)

toms 21. Mär 2005 16:57

Re: Weitere Forms nach schließen leeren
 
Zitat:

Zitat von malo
Du kannst ja im OnClose des Form7 einfach alle Daten in den "Urzustand" zurückversetzen (also Komponenten wieder richtig setzen, Variablen zurück etc.) ;)

Ja, auch eine Moeglichkeit :cyclops: Einfacher ist aber sicher mein Vorschlag.

Nisbo 21. Mär 2005 17:00

Re: Weitere Forms nach schließen leeren
 
mmm dynamisch erzeugen ? wie soll das denn funktionieren ?
ich meine wie habe ich dort vorzugehen

Sharky 21. Mär 2005 17:22

Re: Weitere Forms nach schließen leeren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Nisbo
...ich meine wie habe ich dort vorzugehen

Hai Nisbo,

schaue dir mal mein Beispiel im Anhang an. Dabei solltest Du dir auch ansehen das ich nur die "MainForm" beim Programmstart erzeuge (Menü: Projekt - Optionen - Formulare).

Nisbo 21. Mär 2005 17:35

Re: Weitere Forms nach schließen leeren
 
kann ich doch nicht, ich habe doch Lazarus, aber da gibt es diese Option auch

Was muß ich jetzt da machen ?

Links Stehen jetzt 7 Forms udn alle sind blau markiert, rechts ist das gesammte feld leer
ich vermute mal das ich dort alles außer Form1 reinverschieben muß oder ?

und dann dann ich den aufruf des fensters wie gewohnt mit

Form7.ShowModal aufrufen ?

will da nix falschmachen, nicht das nachher das gesamte Projekt hinüber ist

Jens Schumann 21. Mär 2005 17:49

Re: Weitere Forms nach schließen leeren
 
Zitat:

Zitat von Nisbo
kann ich doch nicht, ich habe doch Lazarus, aber da gibt es diese Option auch

Was muß ich jetzt da machen ?

Links Stehen jetzt 7 Forms udn alle sind blau markiert, rechts ist das gesammte feld leer
ich vermute mal das ich dort alles außer Form1 reinverschieben muß oder ?

und dann dann ich den aufruf des fensters wie gewohnt mit

Form7.ShowModal aufrufen ?

will da nix falschmachen, nicht das nachher das gesamte Projekt hinüber ist

Ich habe Lazarus noch nie gesehen. Ich vermute aber es ist sehr Delphi ähnlich (habe ich gelesen). Alle Formularen bis auf das Hauptformular kannst Du in dem Dialog auf die rechte Seite schieben. Dann werden die Formulare nicht schon beim Programmstart automatisch erzeugt.

Du musst die Formulare zur Laufzeit erzeugen. Grundsätzlich funktioniert das so:
Delphi-Quellcode:
With TForm7.Create(Application) do
  begin
  Try
    ShowModal;
  Finally
    Release;
    end;
  end;
Im OnClose Event des Formulars setzte Du Action auf caHide.

Nisbo 21. Mär 2005 18:01

Re: Weitere Forms nach schließen leeren
 
Also lass uns das nochmal zusammenfassen

Ich gehe auf Projekt --> Optionen --> Formulare
und dort dann alles außer Form1 nach rechts verschieben ?

Der Aufruf eines Formulars erfolgt dann so ?

Delphi-Quellcode:
procedure TForm1.MenuItem32Click(Sender: TObject);
begin
With TForm7.Create(Application) do
  begin
  Try
    ShowModal;
  Finally
    Release;
    end;
  end;
end;
statt:

Delphi-Quellcode:
procedure TForm1.MenuItem32Click(Sender: TObject);
begin Form7.ShowModal; end;
und was muß ich jetzt wo noch machen ? also das mit dem caHide ?

Jens Schumann 21. Mär 2005 18:14

Re: Weitere Forms nach schließen leeren
 
Hallo,
ja - genau so. Achte aber darauf, dass Du im OnClose Event des Formulars Action auf caHide setzt

Nisbo 21. Mär 2005 18:19

Re: Weitere Forms nach schließen leeren
 
und wie mache ich das ?

also ich kann bei OnClose von Form7 (nehme mal an das Du form7 meinst) das nicht auswählen sondern da nur ne Prozedur erstellen, mit dem raten habe ich es heute leider nicht so ;)

btw wenn ich jetzt Form7 öffne kann man dann Form1 irgendwie ausblenden ? möchte hjetzt deswegen nicht extra nen neuen Thread aufmachen, aber wenn das gewünscht wird kopier ich das hier raus und erstelle ein neues Thema, aber passt ja eigendlich hier rein

Momentan ist es ja so das wenn ich das wie hier beschreiben öffne Form1 immer im Hindergrund bleibt, auf invisilbe setzen habe ich nicht hinbekommen da Form7 Form1 ja nicht kennt

Sharky 21. Mär 2005 18:29

Re: Weitere Forms nach schließen leeren
 
Zitat:

Zitat von Nisbo
....btw wenn ich jetzt Form7 öffne kann man dann Form1 irgendwie ausblenden ...

Hai Nisbo,

die Frage für mich: Macht das Sinn? Ich möchte meine Mainform eigentlich immer sehen.

Nisbo 21. Mär 2005 18:38

Re: Weitere Forms nach schließen leeren
 
In dem Fall öffne ich ja das Screenshot-Programm welches in Form7 ist und da ist dann die MinForm hinderlich, aber eigendlich hast Du recht, so kann man ja den Rest vom Programm nicht mehr nutzen :wall: sollte ich also vielleicht nochmal überdenken
allerdings würde das in der Hinsicht wieder sinn machen was ich im anderen beitrag gefragt habe wegen dem OnTop sein, aber dazu ist das andere thema da wo du auch nen Screenshot siehst
http://www.delphipraxis.net/internal...=338698#338698


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz