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?
Forme i kako znati da li je otvorena ili ne
Zaključano
Zakačeno
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.
Sa Screen.ActiveForm ces dobiti aktivnu formu, nije jasno da li to trazis ili nesto drugo.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.
How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Meni je bitno da li je aktivna ili ne,i nasao sam na netu proceduru if assign(form2) then....i ona radi.Hvala..
if Assigned(form2) samo proverava da li je pointer form2 validna (razlicita od nil), da li je vidljiva, aktivna, unistena ti ne kaze.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.
How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
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...
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;
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;
A jel ovo samo za child forme ili bilo koje...
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;
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;
izmenjeno 1 put, poslednji put Milan Milosevic 26.05.2018. u 18:48
Izmene poruke
- Milan Milosevic26.05.2018. u 18:48zapis iz teksta poruke
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.
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.
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...
izmenjeno 1 put, poslednji put Milan Milosevic 27.05.2018. u 18:22
Izmene poruke
- Milan Milosevic27.05.2018. u 18:22zapis iz teksta poruke
Code:
If Form2.visible then
If Form2.visible then
Mada mislim da su aktivne iako forma nije vidljiva.
sad ako kreiras forme dinamicki
Code:
if Form2 = nil then
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;
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.