Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Form zur Laufzeit neu erstellen (https://www.delphipraxis.net/111365-form-zur-laufzeit-neu-erstellen.html)

HolgerCW 2. Apr 2008 10:38


Form zur Laufzeit neu erstellen
 
Hallo zusammen,

ich erstelle am Anfang eine Anmeldemaske. Nachdem das Passwort richtig eingegeben wurde mache ich folgendes:

Delphi-Quellcode:
FormAnmeldung.Free;
Wenn ich diese Form dann zur Laufzeit des Programmes wieder neu erstellen möchte, wollte ich das so machen:

Delphi-Quellcode:
Application.CreateForm(TFormAnmeldung, FormAnmeldung);
FormAnmeldung.Show;
Da tritt aber eine Zugriffsverletzung auf.

Was mache ich falsch ?

Gruss

Holger

DeddyH 2. Apr 2008 10:39

Re: Form zur Laufzeit neu erstellen
 
Versuch es mal mit
Delphi-Quellcode:
FormAnmeldung := TFormAnmeldung.Create(Application);

Sharky 2. Apr 2008 10:41

Re: Form zur Laufzeit neu erstellen
 
Ich mach das immer so:

Delphi-Quellcode:
implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  myForm2 : TForm2;
begin
  myForm2 := TForm2.Create(self);
  try
    myForm2.ShowModal;
  finally
    myForm2.Free;
  end;
end;

mkinzler 2. Apr 2008 10:43

Re: Form zur Laufzeit neu erstellen
 
Dann könntest du die Form auch ohne Owner erzeugen

Sharky 2. Apr 2008 10:46

Re: Form zur Laufzeit neu erstellen
 
Zitat:

Zitat von mkinzler
Dann könntest du die Form auch ohne Owner erzeugen

Meinst Du mich?
Ja, ich weiss. Ist mehr so "die Macht der Gewohnheit".

mkinzler 2. Apr 2008 10:47

Re: Form zur Laufzeit neu erstellen
 
Zitat:

Meinst Du mich?
Ja meinte ich.
ist ja nicht falsch aber unnötig.

HolgerCW 2. Apr 2008 10:53

Re: Form zur Laufzeit neu erstellen
 
Vielen dank an euch.

Wenn ich nun

Delphi-Quellcode:
FormAnmeldung.Free;
gemacht habe, müsste ich doch mit

Delphi-Quellcode:
if FormAnmeldung <> nil then ...
abfragen können ob die Form da ist oder nicht ?

-> Weil bei mir sagt er Sie wäre da obwohl ich ja vorher Free gemacht habe ?

Gruss

Holger

DeddyH 2. Apr 2008 10:54

Re: Form zur Laufzeit neu erstellen
 
Nein, Du musst entweder FreeAndNil verwenden oder den Objektzeiger selbst entwerten.

HolgerCW 2. Apr 2008 10:56

Re: Form zur Laufzeit neu erstellen
 
So ???

Delphi-Quellcode:
FormAnmeldung <> FreeAndNil;

DeddyH 2. Apr 2008 10:58

Re: Form zur Laufzeit neu erstellen
 
Entweder
Delphi-Quellcode:
FormAnmeldung.Free;
FormAnmeldung := nil;
oder
Delphi-Quellcode:
FreeAndNil(FormAnmeldung);


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:02 Uhr.
Seite 1 von 3  1 23      

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