Einzelnen Beitrag anzeigen

Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

Re: Ist Fenster schon geschlossen?! (speziell: MDI-Fenster)

  Alt 7. Jan 2008, 19:29
Zitat von shmia:
Zunächst mal wird mit folgendem Code ein MDI korrekt geschlossen:
Delphi-Quellcode:
procedure TMDI_Form.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   if FormStyle = fsMDIChild then
     Action := caFree;
end;
Durch die If-Abfrage kann das MDI-Form auch leicht wieder in ein normales Form geändert werden, ohne dass man am Source viel ändern muss.
Das ist mir klar und stellt auch nicht das Problem dar.

Zitat von shmia:
Beim Zugriff auf das Property MDIChildCount muss man schwer aufpassen !!
Folgender Code funktioniert nicht:
Delphi-Quellcode:
 // alle MDIs schliesen
 while MDIChildCount > 0 do
   MDIChildren[0].Close;
Dagegen funktioniert Folgendes:
Delphi-Quellcode:
var
  i : Integer;
begin
  for i := MDIChildCount -1 downto 0 do
    MDIChildren[i].Close;
Genau hier steckt ja mehr oder weniger das Problem. Ich greife, nachdem ich eine Form geschlossen habe auf diesen Counter zu, wobei dieser eben noch die Form "enthält". Warum ist das allerdings so!? Ich denke, wenn ich ein OnClose einer Form aufrufe, danach dann den Counter abfrage, er doch eigentlich um 1 niedriger sein sollte als zuvor!?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat