fsMDIForm - mały problem

0

Witajcie !!

Mam stworzonego tak jakby rodzica do formy którą uruchamiam w głównym programie (fsMDIChild);

Żeby pokazać Forme (fsMDIChild) pisze
Form1:=TForm1.Create(Self);
Form1.Show;

Forma sie pokazuje ale kiedy klikne jeszcze raz na Button to włącza sie drugi raz ta sama forma.

Czy ktoś wie jak zrobić żeby poprzednia forma znikała a pokazywala sie tylko nowo otwarta. Głównie chodzi o to żeby była widoczna tylko jedna forma w fsMDIForm.

Troche nagmatwałem ale chyba rozumiecie o co chodzi

Z góry dzięki [browar]

0

sprawdz czy te okno istnieje jak tak to je zniszcz i otworz nowe

0

A możesz powiedzieć jak sprawdzić czy Forma1 istnieje czy nie.??

Kombinowałem troche i w buttonie zrobiłem:
var
i:integer;
begin
for i:=0 to MDIChildCount -1 do MDIChildren[i].Close;
Form1:=TForm1.Create(Self);
Form1.Show;
end;

troche z tego zadowolony nie jestem bo po pierwsze jest zmienna a po drugie ta procedura zamyka wszystkie okna a nie tylko Form1.

Please okażcie jeszcze troche cierpliwości

0

if Form1 = nil then //formy nie ma

0

if Form1 = nil then //formy nie ma

Jeśli forme child zwolnisz standardowo czyli przez Action:=caFree w OnClose, wtedy forma się zwolni, ale nie będzie równa nil. Podobnie przy zwalnianiu form przez Free lub Release. Istnieje procedura FreeAndNil zwalniająca dowolny obijet i przypisująca mu nil, ale da się ją zastosować tylko zamiast metody Free, nie zamiast Release lub Action:=caFree. Dlatego sprawdzanie nil nie zawsze wystarcza imho.

0

Co racja to racja

W OnClose Formy mam

Action:=caFree;

ale dopisałem jeszcze Form1:=nil

I Wszystko gra wielkie dzięki [browar]

a KOD wygląda tak:

procedure TParentForm.ButtonClick(Sender: TObject);
begin
if Form1=nil then begin
Form1:=TForm1.Create(Self);
Form1.Show;
end else Form1.Show;
end;

0

To ja sie jeszcze zapytam:
W jaki sposob znaleŹĆ forme dynamiczna o formstyle:= fschildform , ale za pomoca funkcji z wndows API. W SDI dalo sie zrobic FindWindow(nil,caption okna) i wszystko gralo. Jak to zrobic z ChildWindow w MDI?

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