[ popmilan76 @ 21.05.2018. 22:54 ] @
POtrebno mi je ,kako da ispitam da li mi je neka forma otvorena,tj da se vidi na ekranu ili ne...Nesto tipa if form1.visible = true then....Mada tako nesto meni nece,a sve forme su otvorene kao modal?
[ savkic @ 21.05.2018. 23:17 ] @
Ako je forma Visible onda se vidi na ekranu osim ako je neka druga forma ne prekrije skroz.
Sa Screen.ActiveForm ces dobiti aktivnu formu, nije jasno da li to trazis ili nesto drugo.
[ popmilan76 @ 22.05.2018. 14:22 ] @
Meni je bitno da li je aktivna ili ne,i nasao sam na netu proceduru if assign(form2) then....i ona radi.Hvala..
[ savkic @ 22.05.2018. 15:11 ] @
if Assigned(form2) samo proverava da li je pointer form2 validna (razlicita od nil), da li je vidljiva, aktivna, unistena ti ne kaze.
[ FranjoZG @ 25.05.2018. 12:43 ] @
if Assigned(form2) je malo problematičan... radi dobor samo prvi put. Ako jednom kreiraš formu i nakon toga napraviš free, if Assigned(form2) će ti uvijek vraćati true mada forma nije kreirana.
Ako nekon treba procedura...
Code:

function tMyClass.IsMDIChildOpen(const Forma: TForm; const AMDIChildName: string): Boolean;
var
  i: Integer;
begin
  Result := False;
  for i := Pred(Forma.MDIChildCount) DownTo 0 do
    if (UpperCase(Forma.MDIChildren[i].Name) = UpperCase(AMDIChildName)) then
    begin
      Result := True;
      Break;
    end;
end;
[ popmilan76 @ 25.05.2018. 20:16 ] @
A jel ovo samo za child forme ili bilo koje...
[ popmilan76 @ 25.05.2018. 21:48 ] @
Ovo bi trebalo biti za forme,ali isto ako se otvori jednom,radi,posle nece.....

function IsFormOpen(const FormName : string): Boolean;
var
i: Integer;
begin
Result := False;
for i := Screen.FormCount - 1 DownTo 0 do
if (Screen.Forms.Name = FormName) then
begin
Result := True;
Break;
end;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
if not IsFormOpen('Form2') then
Form2 := TForm2.Create(Self);

Form2.Show
end;
[ Milan Milosevic @ 26.05.2018. 05:35 ] @
Kako misli da je aktivna?
U principu preko Vislible možes da odrediš da li je vidljiva.
Sve možeš i da kontrolišeš tako što ćeš napraviti promenjivu recimo Forma_vidljiva ili Forma_aktivna u glavnom junitu
Kad formu kreiras ili je prikazuješ podesiš vrednost na true, a kada je zatvoriš ili uništiš podesiš vrednost na false.

[Ovu poruku je menjao Milan Milosevic dana 26.05.2018. u 18:48 GMT+1]
[ popmilan76 @ 26.05.2018. 18:20 ] @
Imam formu 1,i treba da prenesem neke podatke u formu 2 ,ali da proverim da li je ta forma otvorena ili ne,tj da li je aktivna ili ne...
[ Milan Milosevic @ 26.05.2018. 21:13 ] @
Code:
If Form2.visible then

Mada mislim da su aktivne iako forma nije vidljiva.

sad ako kreiras forme dinamicki

Code:
 if Form2 = nil then

medutim treba formu nilovati kod zatvaranja da bi mogao ponovo da koristis isti pristup

Code:
procedure Form2.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin

  Action := caFree;
  Form2 := nil;
end;


Kao sto sam i napisao u predhodnom postu mozes da napravis promenjivu u glavnom junitu i da podesis na true kad kreiras formu i na false kad je unistavas.


[Ovu poruku je menjao Milan Milosevic dana 27.05.2018. u 18:22 GMT+1]