AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Freigabe eines verfügbaren Formulars nach Show
Thema durchsuchen
Ansicht
Themen-Optionen

Freigabe eines verfügbaren Formulars nach Show

Ein Thema von RaSoWa1 · begonnen am 11. Aug 2008 · letzter Beitrag vom 11. Aug 2008
Antwort Antwort
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#1

Freigabe eines verfügbaren Formulars nach Show

  Alt 11. Aug 2008, 18:48
Hallo erstmal, ich hab da mal einen Frage.

Ich würde gern im nachfolgendem Code Show statt ShowModal verwenden. Wie wird das erzeugte Formular wieder ordnungsgemäß freigegeben?
Reicht es im FormClose-Ereignis des Formulars Action auf caFree zu setzen?
Was passiert wenn das Hauptformular geschlossen wird? Dann wird ja OnClose des untergeordneten nicht aufgerufen?
Delphi-Quellcode:
procedure Suchen(aAlb: TAlbum);
begin
  with TFmDlgSuchen.Create(Application) do
    try
      Alb := aAlb;
      ShowModal;
// Show;
    finally
      Free;
      end;
end;
Danke schon mal für eure Hilfe.

Gruß Klaus.
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Freigabe eines verfügbaren Formulars nach Show

  Alt 11. Aug 2008, 19:18
Hi,

nein, der Code gibt es nicht ordnungsgemäß frei. Bei Formularen musst du Delphi-Referenz durchsuchenRelease statt Free verwenden. Dann arbeitet das ganze nämlich noch alle Messages ordentlich ab.

Im OnClose auf caFree zu setzen sollte ausreichen. Bei ShowModal sollte es nicht möglich sein, das Hauptformular zu schließen, während deines offen ist (und selbst wenn doch, das OnClose müsste dann ausgeführt werden). Ansonsten wäre die CloseAction ziemlich sinnlos, wenn deren Nutzung zu eventuellen Speicherlecks führt.

Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: Freigabe eines verfügbaren Formulars nach Show

  Alt 11. Aug 2008, 19:24
[quote="RaSoWa1"]
Was passiert wenn das Hauptformular geschlossen wird? Dann wird ja OnClose des untergeordneten nicht aufgerufen?
[delphi]

Hallo Klaus

Application ist ja der Owner von TFmDlgSuchen. Wenn die Anwendung beendet wird, wird das Application Objekt die Form TFmDlgSuchen freigeben.
Thomas
  Mit Zitat antworten Zitat
RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Freigabe eines verfügbaren Formulars nach Show

  Alt 11. Aug 2008, 20:01
Ich Danke euch beiden für die schnelle Antwort.

Wenn ich euch richtig verstanden habe müßte folgender Code ausreichen:
Delphi-Quellcode:
procedure Suchen(aAlb: TAlbum);
begin
  with TFmDlgSuchen.Create(FmAlben.ActiveMDIChild) do begin
    Alb := aAlb;
    Show;
    end;
end;
Delphi-Quellcode:
procedure TFmDlgSuchen.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
  inherited;
end;
Erste Tests waren erfolgreich.

Gruß Klaus.
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:13 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