Ich würde von vorn herein davon ausgehen, dass die
MDI-Childs nichts über das Parent wissen, sondern lediglich eine Schnittstelle anbieten, um "anderen" die Möglichkeit zu bieten, zu erfahren, ob Änderungen im
MDI-Child vorgenommen wurden -- eine Property bietet sich hier wunderbar an. Daraus folgt, dass ich alle "Wollen Sie die Änderungen speichern?"-Dialoge in das Parent-Window legen würde. Du kannst beim Erzeugen eines
MDI-Childs ja folgendes machen:
Delphi-Quellcode:
procedure TParentForm.CreateChild();
var
mdi : TMdiChild;
begin
// Self = ParentWindow
mdi := TMdiChild.Create(Self);
mdi.OnCloseQuery := Self.OnMdiChildCloseQuery;
end;
procedure TParentForm.OnMdiChildCloseQuery(Sender: TObject);
begin
if (TMdiChild(Sender).Changed)
then
begin
{ Abfrage, ob Änderungen des MDI-Childs gespeichert werden sollen }
end;
end;
procedure TParentForm.OnCloseQuery();
var
i : Integer;
Changed : Boolean;
begin
{ Prüfen, ob irgendein MDI-Child geändert würde }
Changed := False;
for i := 0
to Self.MDIChildCount - 1
do
begin
if (TMdiChild(Self.MDIChildren[i]).Changed)
then
begin
Changed := True;
break;
end;
end;
if (Changed)
then
begin
// ...
end;
end;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)