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
)