Search  
Tuesday, May 22, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Meniuri si generatoare de meniuri  Accesare meniu ...
 Accesare meniu dintr-un form
 
 6/25/2006 4:19:17 PM
User is offlineEugen Gliga
1052 posts
1st




Accesare meniu dintr-un form
 (N/A)
In Initul unui form apelez un MPR care adauga un pad la meniul system, iar in popup-ul pad-ului apelez diverse metode ale formului.
Aceasta solutie functioneaza doar in cazul in care Formul este apelat din meniul principal cu comanda do Form. In cazul in care formul este apelat din meniul principal  printr-o procedura, chiar daca procedura contine doar Do Form, atunci meniul din Form nu mai functioneaza, mai exact apare o eroare cum ca obiectul, adica formul nu exista. N-am inteles de ce apare aceasta eroare. Poate imi explica cineva cum decurg lucrurile.

 6/26/2006 8:07:18 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Accesare meniu dintr-un form
 (Romania) Modified By Grigore Dolghin  on 6/26/2006 8:10:46 AM)

Salut, Eugen

In cinci cuvinte: domeniul de vizibiltate al variabilei.

In mai multe cuvinte: Cand o lansezi cu comanda DO form din meniul principal, variabila asociata form-ului respectiv este automat publica. Daca o lansezi dintr-o procedura a meniului respectiv este automat locala in procedura respectiva. Cand procedura se termina de executat variabila dispare si nu mai poti apela form-ul programatic, folosind numele lui. Ca sa vezi exact cum e treaba, lanseaza formul si in command window da-i un ? Vartype(nume_form). In primul caz o sa intoarca "O", in al doilea caz o sa intoarca "U".

Pentru a putea accesa form-ul va trebui sa apelezi la una din aceste doua variante:

#1. Procedezi in asa fel incat variabila sa nu dispara la terminarea procedurii (de exemplu, PUBLIC MyForm / DO FORM MyForm)

#2.a. _Screen.Forms e un array care contine referinte catre toate form-urile existente la un moment dat, indiferent daca variabilele lor mai exista sau nu. Scanezi array-ul respectiv, gasesti formul tau dupa nume/caption/whatever, si apelezi metodele lui sub forma _Screen.Forms[3].MyMethod() sau MyForm = _Screen.Forms[3] / MyForm.MyMethod()

#2.b _Screen.ActiveForm contine o referinta catre formul activ de pe ecran, indiferent daca variabila lui mai exista sau nu. Daca esti 100% sigur ca form-ul tau este activ in clipa in care se executa pad-urile din meniu, poti apela metodele form-ului prin metodele descrise la #2.a, fara sa fie necesar sa stii cum il cheama pe form-ul respectiv.

 

Edit: la #2.a: Numarul total de formuri definite la un moment dat este returnat de proprietatea _Screen.FormCount. Scanarea se face cu o bucla FOR lnI = 1 To _Screen.FormCount / oForm = _Screen.Forms[lnI] / *** codul care verifica formul / ENDFOR sau cu o bucla For ... Each: FOR EACH oForm IN _Screen.Forms / *** Codul care verifica form-ul / ENDFOR.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 6/26/2006 11:16:53 AM
User is offlineEugen Gliga
1052 posts
1st




Re: Accesare meniu dintr-un form
 (Romania)
Multumesc, Grig

Solutia 2.b mi se potriveste cel mai bine. Banuiam ca vizibilitatea este cauza, dar imi trebuia o solutie simpla, fara sa folosesc variabile publice. Pad-ul se dezactiveaza automat odata cu forma, asa ca nu sunt alte probleme.


  Visual FoxPro  Meniuri si generatoare de meniuri  Accesare meniu ...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement