Oder du erzeugst mit jedem Aufruf ein neues Formular, anstatt das bestehende anzuzeigen. Wenn du das willst, dann brauchst du ja gar keine Formularvariable:
Dazu überprüfe ich das Anwendungsobjekt, ob bereits irgendeine Instanz des Fensters erzeugt wurde:
Delphi-Quellcode:
function ShowFormOnce(AFormClass: TComponentClass): TForm;
var
liZ1: Integer;
begin
Result := nil;
for liZ1 := 0 to Application.ComponentCount-1 do
begin
if (Application.Components[liZ1] is AFormClass) then
begin
Result := TForm(Application.Components[liZ1]);
end;
end;
if (Result = nil) then
begin
Result := TForm(AFormClass.Create(Application));
end;
Result.Show;
end;
wobei "AFormClass" die Klasse des entsprechenden Fensters ist.
Existiert eine Instanz, dann wird diese angezeigt anderenfalls wird eine Instanz erzeugt und danach angezeigt.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.