Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: TImages verwalten

  Alt 11. Okt 2014, 09:57
Die Anwendung wird nicht aufgehalten, wenn die Aktionen in einem Thread erfolgen (speichern, laden, umrechnen)

Zum Schließen des Tabs musst du eigentlich rein gar nichts machen ... ok bis auf eins:
Delphi-Quellcode:
type
  TDockForm = clas( TForm )
  protected
    // Ich könnte auch den Event OnClose nehmen, da ich aber von dieser Form
    // weitere ableiten möchte, ist dieser Weg etwas robuster :o)
    procedure DoClose( var Action: TCloseAction ); override;
  end;

  TDockFormClass = class of TDockForm;

procedure TDockForm.DoClose( var Action: TCloseAction );
begin
  Action := caFree;
  inherited; // <- dort wird der Event OnClose gefeuert

end;
Wenn du jetzt das Formular schließt, dann wird es durch das Setzen von Action := caFree auch automatisch zerstört, was wiederum automatisch den Tab aus dem PageControl entfernt

Vorausgesetzt, die Form wird auch so dort eingedockt:
Delphi-Quellcode:
procedure TMyForm.DockNewForm( APageControl : TPageControl; ADockFormClass : TDockFormClass );
var
  LForm : TDockForm;
begin
  LForm := TDockFormClass.Create( APageControl );
  try
    LForm.ManualDock( APgeControl, nil, alClient );
    LForm.Visible := True;
    LForm := nil;
  finally
    LForm.Free;
  end;
end;
Wenn du diese TDockForm als Basis für deine weiteren DockFOrms nimmst, dann kannst du nach Belieben dort die unterschiedlichsten DockForms an dein PageControl hängen und diese werden dann beim Schließen automatisch aufgeräumt und der Tab geschlossen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (11. Okt 2014 um 10:00 Uhr)
  Mit Zitat antworten Zitat