Sprawdzanie czy forumlarz istnieje

0

Tworze formularz dynamicznie przez TCreate.
Jak sprawdzić czy formularz został już utworzony ??

Robię tak:
if MainMenu <> nil then
tutaj kod

No i jak nie ma formularza utworzonego to mi wywala błąd.

Nie chcę tego robić na FindWindow ani na try except end; czy istnieje inna metoda ??

0

Spróbuj tak:

if MainMenu=nil then begin
Utwórz formólarz
end else begin
coś tam
end;
end;
0

Można sprawdzić wskazanie na formularz:

if Form1 = nil then
  // formularz nie istneje, tworzymy go
  Form1 := TForm.Create(Application);
// a tutaj już prawie na pewno istnieje
// (chyba że window$ nam wyrzucił że mu pamięci mało) :)

A oto funkcja sprawdzająca, czy forma istnieje (zgodnie z Twoim życzeniem, chyba że źle po polsku rozumiem)

function FormExists(var Form: TForm): Boolean;
begin
  Result := Form <> nil;
end;

Mam nadzieję, że wyraziłem się jasno :)

0

dla pewności przy OnClose oprócz zFREEowania zasobów formularza zrób jeszcze

FormDynamic:=nil;

bo może formularz tworzony za drugim razem wcale nie będzie miał wartości nil

0
begin
 if not Assigned(Form1)then Form1:=TForm1.Create(Application);
 Form1.Show;
end;

Czyli jeżeli nie ma to stwórz tylko potem w OnClose Form1 trzeba dać

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action:=caFree; 
 Form1:=Nil;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1