Moin Capa,
hier mal ein anderer Ansatz:
Delphi-Quellcode:
var
i : Integer;
begin
for i := 0 to Application.ComponentCount-1 do begin
if Application.Components[i] is TForm then begin
if (Application.Components[i] as TForm).Visible and
((Application.Components[i] as TForm).Tag = 1) then begin
CanClose := False;
break;
end;;
end;
end;
if not CanClose then MessageBox(self.Handle,'Erst alle anderen Formulare schliessen','Fehler',MB_ICONERROR);
end;
Alle Unterformulare bekommen, entweder manuell im Objektinspektor, oder per Programm im OnCreate die Eigenschaft Tag auf 1 gesetzt (Tag ist ein beliebig verwendbarer Integerwert).
Sobald eines sichbar ist, und Tag=1 ist darf das Hauptformular nicht geschlossen werden.