Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#24

Re: Problem mit 2. Formular

  Alt 25. Jan 2006, 23:33
Du willst also die globale Variable des d32 Designers simulieren?
Der Trick wäre eine class property, die beim Zugriff eine Instanz anlegt und dieser AllowDisposing false über gibt.
Delphi-Quellcode:
class property Instance : Form1 read get_Instance;
property AllowDisposing : Boolean := true;
Delphi-Quellcode:
class function Form1.get_Instance: Form1;
begin
   if not assigned(fInstance) then
   begin
      fInstance := new Form1();
      fInstance.AllowDisposing := false;
   end;
   
   result := fInstance;
end;
Im FormClosing event noch das hier:
Delphi-Quellcode:
procedure Form1.Form1_FormClosing(sender: Object; e: FormClosingEventArgs);
begin
   if not AllowDisposing then
   begin
      e.Cancel := true;
      Hide();
   end;
end;
Damit ein Disosed fInstance auch wieder neu angelegt wird, müsste Dipose angepasst werden:
Delphi-Quellcode:
method Form1.Dispose(disposing: boolean);
begin
   if disposing then
   begin
      if assigned(components) then
         components.Dispose();
      if self = fInstance then
         fInstance := nil;
   end;
   inherited Dispose(disposing);
end;
Im HauptForm sowas:Form1.Instance.Show();
Das hätte auch den Vorteil, dass man weiter hin neue Instanzen von Form1 anlegen könnte, die sich beim Close zertören.

Edit, bin etwas handicapped, da ich eine andere Tastatur benutze... (Zu oft Alt + S statt Alt + D getippt )
Robert Giesecke
  Mit Zitat antworten Zitat