AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Forms zur Laufzeit

Ein Thema von Hansa · begonnen am 24. Feb 2004 · letzter Beitrag vom 26. Feb 2004
Antwort Antwort
Seite 1 von 2  1 2      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

Forms zur Laufzeit

  Alt 24. Feb 2004, 23:49
Hi,

ich soll zur Laufzeit einen Haufen Forms erzeugen. Jetzt fällt mir auf, daß ich dann jeden Button auch neu erzeugen muß. Kann ich nicht eine Form erzeugen und bestücken und sie trotzdem erst zur Laufzeit erzeugen ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: Forms zur Laufzeit

  Alt 25. Feb 2004, 00:20
Wenn du eine Form im Designer erzeugst und nicht in die AutoCreate-Liste nimmst (das meintest du doch oder?) wird sie doch bei...

TFormIrgendWas.Create(Self);

... mit allem Drumrum erzeugt oder ist es gerade zu spät für mein gemartertes Hirn?
  Mit Zitat antworten Zitat
Bit Juggler
(Gast)

n/a Beiträge
 
#3

Re: Forms zur Laufzeit

  Alt 25. Feb 2004, 00:23
Hi,
wenn ich Dich nicht falsch verstanden habe dann meinst Du wohl das:

Delphi-Quellcode:
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
  Form1:= TForm1.Create(Self);
  try
    Form1.ShowModal //ShowModal weil sich die Form sonst sofort wieder schließt
  finally
    FreeAndNil(Form1)
  end
end;
Vorher musst Du aber noch unter Projekt -> Optionen -> Formulare die Formulade die Du wie oben beschrieben erzeugen willst von der Sparte "Automatisch erzeugen" zur Sparte "Verfügbare Formulare" verschieben!

Gruß Bit
  Mit Zitat antworten Zitat
grayfox

Registriert seit: 22. Jan 2003
Ort: Litschau
173 Beiträge
 
Delphi 4 Standard
 
#4

Re: Forms zur Laufzeit

  Alt 25. Feb 2004, 00:34
hallo bit!

Zitat:
ShowModal weil sich die Form sonst sofort wieder schließt
es funktioniert trotzdem mit form.show, sofern du formstyle auf fsStayOnTop setzt

mfg, stefan
  Mit Zitat antworten Zitat
Benutzerbild von bundy
bundy

Registriert seit: 24. Mai 2003
Ort: Eisenstadt
438 Beiträge
 
Delphi 2007 Architect
 
#5

Re: Forms zur Laufzeit

  Alt 25. Feb 2004, 00:35
Delphi-Quellcode:
uses unit2; {form2}


procedure TForm1.Button1Click(Sender: TObject);
begin
with TForm2.Create(self) do
begin
Show;
end;
end;


funtioniert so
Kannst nun soviele Forms aufrufen (erzeugen) wie du willst.
Angehängte Dateien
Dateityp: zip form.zip (200,6 KB, 24x aufgerufen)
+++Glaube keiner Statistik, die du nicht selbst getürkthast.++++
********************
Ein anonymer Statistiker. *
********************
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: Forms zur Laufzeit

  Alt 25. Feb 2004, 19:11
Habe jetzt alle im Moment vorhandenen Forms dynamisch erzeugt. Allerdings habe ich sie nicht verschoben oder sonst etwas an den Optionen geändert, sondern sie in der DPR einfach gelöscht.

Das funktioniert insofern auch. Aber wie lange ? Wenn ich eine Form mit MyForm.create (self); erzeuge und sie dann schließe, was ist dann damit ? Klicke ich auf einen Button und habe diesen Code im OnClick-Ereignis drin stehen, so wird die Form neu erzeugt. Jetzt schließe ich die Form und klicke wieder auf den Button, dann lande ich ja wieder bei dem Code. Ist Delphi so schlau, das Formular selber freizugeben, wenn es geschlossen wird ?

Laut OH soll man am besten try...finally benutzen, sofern in dem Formular eine Exception ausgelöst wird. Schön und gut, aber was wenn nicht ? Also: wodurch und wann wird der reservierte Speicher aus dem create wieder freigegeben ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: Forms zur Laufzeit

  Alt 25. Feb 2004, 19:40
In den meisten meiner Anwendungen nutze ich MDI. Da werden ständig Formulare erzeugt und freigegeben.
Da ich eigentlich auch User dieser Programme bin, kann ich dir als Erfahrungbericht sagen:
Hast du im OnClose-Event "Action:= caFree;" dann ist das Ding weg.
Eine App habe ich den ganzen Tag nebenher offen und da werden täglich hunderte von Forms erzeugt und freigegeben. Die Speichernutzung steigt aber nicht mit der Zeit
-> Ich denke also, dass da auch alles mit weggeputzt wird!
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: Forms zur Laufzeit

  Alt 25. Feb 2004, 20:25
Das OnClose ist im Moment aber noch leer. Mir kommt es so vor, daß die Forms automatisch freigegeben werden. Wie ermittele ich für solch einen Fall eigentlich den Speicher ? 8) Kleiner Test würde ja schon genügen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#9

Re: Forms zur Laufzeit

  Alt 25. Feb 2004, 20:41
Wenn OnClose leer ist, werden sie beim Schließen nicht freigegeben.
Wenn der Owner freigegeben wird gibt der auch das Form mit frei. Vermutlich ist der Owner das Hauptformular.
Insofern du nicht
  TEinForm.Create(nil); sagst musst du dich auch nicht selbst um die Freigabe kümmern.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: Forms zur Laufzeit

  Alt 25. Feb 2004, 20:55
So ungefähr sieht das jetzt aus:

[/delphi]
var
MyForm: TMyForm;

implementation

procedure TMyForm.lblAusgClick(Sender: TObject);
begin
inherited;
MyForm:= TMyForm.Create(self);
MyForm.Show;
end;[delphi]
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:28 Uhr.
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