Einzelnen Beitrag anzeigen

Benutzerbild von arc
arc

Registriert seit: 6. Nov 2009
Ort: Elbflorenz
62 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Instanzierte Formulare ermitteln

  Alt 12. Feb 2011, 22:03
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;

Geändert von arc (12. Feb 2011 um 22:09 Uhr)
  Mit Zitat antworten Zitat