AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi MDI Fenster schließt nicht richtig
Thema durchsuchen
Ansicht
Themen-Optionen

MDI Fenster schließt nicht richtig

Ein Thema von Eppos · begonnen am 19. Okt 2016 · letzter Beitrag vom 2. Nov 2016
Antwort Antwort
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
524 Beiträge
 
Delphi 11 Alexandria
 
#1

MDI Fenster schließt nicht richtig

  Alt 19. Okt 2016, 12:43
Hallo zusammen,

ich erstelle mehrere MDI Fenster innerhalb meiner Anwendung.
Code:
  Form1 := TForm1.Create(self)
Soweit so gut, es gibt nun MDI Forms, die durch Klicken von Buttons, die Form1 aufrufen sollen, jedoch zuvor geschlossen werden.
Bevor die Form aufgerufen wird, prüfe ich auf...
Code:
  If Form1 <> nil then begin
    Form1.Close;
    Form1 := nil;
  end;
und anschließend soll das Fenster so angezeigt werden...

Code:
  Form1 := TForm1.Create(self);
  Form1.FormStyle := fsNormal;
  Form1.Visible := False;
  Form1.ShowModal;
Funktioniert auch tadellos, jedoch heißt die Form "Form1_1"...
Ich vermute das das erste Fenster nicht richtig geschlossen wird.

Hat jemand eine Idee wie ich das "_1" unterbinden kann?

Gruß
Eppos
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#2

AW: MDI Fenster schließt nicht richtig

  Alt 19. Okt 2016, 13:23
Ein Close schließt in der Regel lediglich das Form. Soll es gleichzeitig freigegeben werden, dann kann man im OnClose -Event die TCloseAction auf caFree setzen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
524 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: MDI Fenster schließt nicht richtig

  Alt 19. Okt 2016, 14:19
hm...

So steht es bereits drin
Code:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  Form1 := nil;
end;
Noch ne Idee?
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.368 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: MDI Fenster schließt nicht richtig

  Alt 19. Okt 2016, 14:32
Meinst du das?
Form1.Caption := 'Form1';
Peter
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
524 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: MDI Fenster schließt nicht richtig

  Alt 19. Okt 2016, 14:35
korrekt, also es steht dann
Code:
  Form1.Caption := 'Form1_1';
drin...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#6

AW: MDI Fenster schließt nicht richtig

  Alt 19. Okt 2016, 20:08
Der Code, der das Form1.Close aufruft und der das neue TForm1.Create macht, werden die direkt hintereinander ausgeführt? In dem Fall wird durch das Close selbst bei caFree das Form nicht sofort freigegeben. Vielmehr wird über Release eine Message in die Queue gestellt, die dann bei nächster Gelegenheit das Form freigibt.

Wenn das obige also der Fall ist, dann existiert während des erneuten TForm1.Create die alte Instanz noch und das führt zur Vergabe des neuen Namens.

Abhilfe: das caFree im FormClose-Event entfernen, ebenso wie das nil setzen. Dann noch das Form1.Close in ein Form1.Free abändern.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 01:32 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