Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: alle Formulare bis auf Form1 schließen, aber wie?

  Alt 19. Jan 2006, 19:45
Das Problem war eigentlich, dass die MainForm der Owner der Forms war, die du löschen wolltest. So hätte es sicher funktioniert - und durch Release() anstelle Close() werden auch ausstehende Ereignisse noch bearbeitet. Ist bei deinem Test wohl nicht so wichtig, aber in echten Situationen schon:

Delphi-Quellcode:
procedure TMainForm.CloseAll;
var
  i: Integer;
begin
  for i := Pred(ComponentCount) downto 0 do
    if Components[i] is TForm then
      TForm(Components[i]).Release();
end;

procedure TMainForm.ShowButtonClick(Sender: TObject);
var
  i: Integer;
begin
  for i := 1 to 5 do
    with TDemoForm.Create(self) do
      Show;
end;

procedure TDemoForm.CloseButtonClick(Sender: TObject);
begin
  MainForm.CloseAll;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat