![]() |
Re: Form zur Laufzeit neu erstellen
Nein satt
Delphi-Quellcode:
Kompo.free;
Delphi-Quellcode:
verwenden. dann kannst du mit
FreeAndNil ( kompo);
Delphi-Quellcode:
abfragen ob das Objekt noch existent ist.
if assigned( kompo)
|
Re: Form zur Laufzeit neu erstellen
Warum hat FormClose einen Parameter ?
Delphi-Quellcode:
So sieht das normalerweise aus. Alles andere ist überflüssig. Bei kleineren Programmen ohne OOP auch das inherited. FreeAndNil-Orgien besorgt Delphi automatisch. :zwinker:
procedure Tfrm.FormClose(Sender: TObject;
var Action: TCloseAction); begin inherited; Action := caFree; end; |
Re: Form zur Laufzeit neu erstellen
Das ist natürlich bei modalen Eingabeformularen sehr geschickt, nach schließen des Formualar sind die Eigaben gleich weg. :gruebel:
|
Re: Form zur Laufzeit neu erstellen
Nun folgt das nächste Problem:
Wenn ich nun die Form "gefreet und genilt" habe und während der Laufzeit wieder erstelle, kommt hier eine Zugriffsverletzung:
Delphi-Quellcode:
Warum ?
procedure TFormAnmeldung.BitBtnOKClick(Sender: TObject);
begin //Kein Passwort if FormAnmeldung.CB_Anwender.text = '' then ... Muss ich die ComboBox u.s.w. auch noch erstellen. Die müssten doch mit erstellt werden da ich ja hiermit erstelle:
Delphi-Quellcode:
FormAnmeldung := TFormAnmeldung.Create(Application);
FormAnmeldung.ShowModal; |
Re: Form zur Laufzeit neu erstellen
Ja und ? Wenn der User das so will ? Das caFree wird im FormClose tätig. Es ist nicht dafür zuständig, dass dieses ausgelöst wird ! Außerdem gibts auch FormCloseQuery um gezielt vorzugehen.
Edit : bezieht sich hierdrauf : Zitat:
|
Re: Form zur Laufzeit neu erstellen
Delphi-Quellcode:
procedure TFormAnmeldung.BitBtnOKClick(Sender: TObject);
begin //Kein Passwort if {FormAnmeldung.}CB_Anwender.text = '' then ... |
Re: Form zur Laufzeit neu erstellen
Ich hab auch mal Action := caFree ausprobiert, der Verweis ist aber noch da. Da muss man also := nil noch nachschieben.
Grüße, Messie |
Re: Form zur Laufzeit neu erstellen
Welcher Verweis ist noch da ? :shock: Habe hier zig Forms. Alle werden zum Anzeigen per create erzeugt und ohne Firlefanz mithilfe von cafree beim Close entfernt. Bei Bedarf werden sie also immer wieder neu erzeugt und das wars. Das gab noch nirgendwo einen Fehler.
|
Re: Form zur Laufzeit neu erstellen
Zitat:
Zitat:
Grüße, Messie |
Re: Form zur Laufzeit neu erstellen
Wenn ich die Form mit Form.Show anstatt Showmodal anzeige klappt es ... Warum ?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 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