procedure Tdmbspiel.showformular(caption:String);
begin
frmNormal := TfrmNormal.Create(Self,caption);
frmNormal.Show;
end;
ich hoffe ich habe ausführlich erklärt auf was ich hinausmöchte. Ich habe also ein instanziertes formular und möchte quasi das formular, wenn es mit den bedinungen schon offen ist, nicht nochmal öffnen können.
Das klingt für mich nach einem hausgemachten Design Problem. frmNormal wird duch erneuten Aufruf dieser Routine überschrieben, besser wäre es diesen Zeiger zu speichern - dann hast du später noch Zugriff auf dein Form. Du könntest so z.B. die erzeugten Formulare in einer TList speichern. Dann könntest du beim nächsten mal nachschauen, ob es bereits existiert. Wenn es statisch sein soll, kannst du dir auch einfach 3 Variablen anlegen und prüfen ob sie nil sind (natürlich die Forms dann mit FreeAndNil() zerstören).
Folgender Schnipsel erzeugt das Form wenn es nicht existiert und löscht es, wenn es existiert. Kannst du ja entsprechend abändern.
Delphi-Quellcode:
if frmNormal = nil then
begin
frmNormal := TfrmNormal.Create(Self,caption);
frmNormal.Show;
end
else
begin
frmNormal.Hide;
FreeAndNil(frmNormal);
end;