Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Nach dem Schließen eine Form Procdure einer anderen Form ausführen (https://www.delphipraxis.net/192849-nach-dem-schliessen-eine-form-procdure-einer-anderen-form-ausfuehren.html)

Aviator 25. Mai 2017 13:00

AW: Nach dem schleißen eine Form Procdure einer anderen Form ausführen
 
Zitat:

Zitat von SneakyBagels (Beitrag 1372724)
Es gibt mittlerweile soviel Arbeitsspeicher... wieso gibt man überhaupt noch Forms frei? Ich gehe einfach mal davon aus, dass es sich hierbei um ein Kleinstprojekt handelt wo das eh vollkommen überflüssig ist Forms freizugeben. Ob diese Kleinstanwendung jetzt 2 MB oder 5 MB belegt ist doch egal.

Also diese Denkweise finde ich mehr als fragwürdig. :shock:

Natürlich gibt man Instanzen (egal welcher Art) immer wieder frei wenn man sie nicht benötigt. Außerdem hat man es sich bei der Freigabe der Form gespart, dass man zuvor geänderte Felder (Edit, ComboBox, ...) wieder auf einen Standardwert zurücksetzen muss, usw.

Also Objekte sollte man immer freigeben.

SneakyBagels 25. Mai 2017 13:18

AW: Nach dem schleißen eine Form Procdure einer anderen Form ausführen
 
Zitat:

Natürlich gibt man Instanzen (egal welcher Art) immer wieder frei wenn man sie nicht benötigt. Außerdem hat man es sich bei der Freigabe der Form gespart, dass man zuvor geänderte Felder (Edit, ComboBox, ...) wieder auf einen Standardwert zurücksetzen muss, usw.
Nur wenn man davon keine Ahnung hat dann sollte man das nutzen was Delphi einem anbietet:
Forms automatisch erzeugen und automatisch freigeben und nicht selber daran rumwerkeln.

haentschman 25. Mai 2017 13:28

AW: Nach dem schleißen eine Form Procdure einer anderen Form ausführen
 
Vorschlag:

:shock: Ich hatte nicht ein großes Projekt erwartet.
Delphi-Quellcode:
procedure TMain.FNeuerArtikeloeffnen;
begin
   TNeuerArtikel.Create(Self); // hier z.B.
end;
Du hast ein Chaos in den Instanzen. Du erzeugst ständig neue Forms und gibst sie nur über Main(Owner = Self) Close frei. :? Auch wenn ich auch für die dynamischen Forms bin,
hier würde ich das nicht empfehlen. :roll:

1. Alle Forms automatisch erzeugen lassen mit Hide oder Visible := False = nicht sichtbar.
2. Statt xxx.Create(Self) nur xxx.Show des entsprechenden Forms ausführen.
3. Danach wieder die Form ausblenden mit Hide oder Visible := False.

...dann schaun wir mal weiter.

PS: Ich gehe jetzt ein ECHTES :cheers: trinken. Auf meinen Ehrentag... 8-) Ich schaue dann mal später wieder rein.

SneakyBagels 25. Mai 2017 13:30

AW: Nach dem schleißen eine Form Procdure einer anderen Form ausführen
 
Zitat:

1. Alle Forms automatisch erzeugen lassen mit Hide = nicht sichtbar.
2. Statt xxx.Create(Self) nur xxx.Show des entsprechenden Forms ausführen.
3. Danach wieder die Form ausblenden mit Hide.
Exakt. Vereinfacht das Ganze sehr!

MCOP2001DE 25. Mai 2017 13:34

AW: Nach dem schleißen eine Form Procdure einer anderen Form ausführen
 
Ok danke werde ich versuchen.

Aviator 25. Mai 2017 13:42

AW: Nach dem schleißen eine Form Procdure einer anderen Form ausführen
 
Zitat:

Zitat von SneakyBagels (Beitrag 1372742)
Zitat:

Natürlich gibt man Instanzen (egal welcher Art) immer wieder frei wenn man sie nicht benötigt. Außerdem hat man es sich bei der Freigabe der Form gespart, dass man zuvor geänderte Felder (Edit, ComboBox, ...) wieder auf einen Standardwert zurücksetzen muss, usw.
Nur wenn man davon keine Ahnung hat dann sollte man das nutzen was Delphi einem anbietet:
Forms automatisch erzeugen und automatisch freigeben und nicht selber daran rumwerkeln.

Warum wirst du eigentlich bei jedem der nicht deiner Meinung ist immer direkt aggressiv und greifst die Leute (verbal) an. Wo ist dein Problem. Jede Methode hat Vor- und Nachteile. Und das ist kein Grund direkt pampig zu werden.

Du gehörst für mich schon seit deiner letzten Aktion zu denjenigen, mit denen man besser keine Diskussion anfängt. Da gibt es so einige Spezialisten hier im Forum. Es bringt ja eh nichts. Auch hier wieder genau das gleiche Verhalten. Und diese Meinung hat sich gerade wieder verstärkt. :roll:

SneakyBagels 25. Mai 2017 13:53

AW: Nach dem schleißen eine Form Procdure einer anderen Form ausführen
 
Zitat:

Warum wirst du eigentlich bei jedem der nicht deiner Meinung ist immer direkt aggressiv und greifst die Leute (verbal) an
:shock: wo bitte bin ich aggressiv?

Zitat:

Warum wirst du eigentlich bei jedem der nicht deiner Meinung ist immer direkt aggressiv und greifst die Leute (verbal) an
Dir steht es frei mir nicht zu antworten, was du aber dennoch tust.

Demnach müsstest du eigentlich auch haentschman anmeckern, denn er ist auch nicht deiner Meinung - in DIESEM Fall.

stalkingwolf 29. Mai 2017 14:31

AW: Nach dem schleißen eine Form Procdure einer anderen Form ausführen
 
ich würde das nicht beim formclose durchführen sondern beim click auf den Button.
Die neue Form wird doch sicherlich modal geöffnet und danach kann man auf das Modalresult der 2ten Form reagieren.

Formcloses zu verlangsamen hat bei uns zu einigen komischen verhalten von Fenstern geführt.
Z.b das die Form noch sichtbar war, aber nicht mehr vorhanden. Beim erneuten click auf schließen ( auch das X von Windows ) hagelte es Zugriffsverletzungen.

formclose benutze ich nur noch zum aufräumen meiner form und evtl speichern von Konfigurationen.

himitsu 29. Mai 2017 14:55

AW: Nach dem schleißen eine Form Procdure einer anderen Form ausführen
 
Drum Erwähnte ich auch OnCloseQuery (vordem Schließen).

Zitat:

Zitat von stalkingwolf (Beitrag 1372900)
formclose benutze ich nur noch zum aufräumen meiner form und evtl speichern von Konfigurationen.

Aber nur von Dingen, die im OnShow geladen/erstellt wurden.
Alles Andere gehört in Destroy, wenn es im Create erstellt wurde.

stalkingwolf 31. Mai 2017 08:20

AW: Nach dem schleißen eine Form Procdure einer anderen Form ausführen
 
Natürlich ;-)

Wir haben uns das vollstopfen von onCreate aber mittlerweile abgewöhnt. Verzögert den Programmstart und dann kommt nur mimimi von Kunden.
Irgendwo muss man ja die verlorene Zeit der Live Virenscanner wieder reinholen ;-)


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

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