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)