Search  
Thursday, October 22, 2020 ..:: 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  Tema pentru acasa  2. Form-uri mod...
 2. Form-uri modeless pentru data entry.
 
 7/3/2008 1:30:16 PM
User is offlineGrigore Dolghin
4001 posts
www.class-software.ro
1st






2. Form-uri modeless pentru data entry.
 (Romania) Modified By Grigore Dolghin  on 7/21/2008 11:20:23 AM)
Se da urmatorul scenariu: Un form (numit FORM1) care are un grid pe el, dedesubt butoane de adaugare/modificare/stergere/iesire. Butoanele de adaugare/modificare lanseaza in executie un form (numit FORM2) care permite adaugarea/modificarea inregistrarii selectate. Dupa salvarea inregistrarii in FORM2, FORM1 trebuie sa faca refresh la grid, astfel incat sa se vada inregistrarea adaugata/modificata. Pentru a face asta, de obicei FORM1 apeleaza FORM2 cu un cod de genul urmator:

cmdAdaugare.Click:
Do Form FORM2 To llResult
If llResult
    *-- Codul care descarca inregistrarile din grid si face refresh-ul
EndIf

Pentru ca acest cod sa se opreasca din executie si sa astepte pana cand se inchide FORM2, acesta (FORM2) trebuie sa fie modal.

Intrebare: Cum se poate face acelasi lucru folosind form-uri nemodale?

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/3/2008 2:27:39 PM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Re: Form-uri modeless pentru data entry.
 (Romania)
Eu as face asa:

cmdAdaugare.Click:
Do Form FORM2 WITH Thisform // trimit catre FORM2 o referinta catre FORM1

FORM2.Init
LPARAMETERS toParentForm

Thisform.oParent = toParentForm // o proprietate care memoreaza referinta la formularul parinte transmis prin parametru

pe formularul FORM2 un un buton cmdSave
cmdSave.Click:

llResult = Thisform.Dosave() // DoSave = o metoda ce se ocupa de salvarea datelor
IF llResult
*-- Codul care descarca inregistrarile din grid si face refresh-ul stiind ca gridul se afla pe formularul referit de Thisform.oParent
EndIf
 7/3/2008 2:49:08 PM
User is offlineGrigore Dolghin
4001 posts
www.class-software.ro
1st






Re: Form-uri modeless pentru data entry.
 (Romania)
Gentlemen, we have a winner. :)

Se pare ca tre'sa cresc nivelul de dificultate al intrebarilor, ca se raspunde prea repede :))

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 7/3/2008 3:02:31 PM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Re: Form-uri modeless pentru data entry.
 (Romania)
Mai lasa-le vreo saptamana doua la nivelul asta ... :)
 7/3/2008 6:14:58 PM
User is offlineanonymous
0 posts


Re: Form-uri modeless pentru data entry.
 (N/A)
Solutia e buna, dar exista o capcana in acest cod. Daca utilizatorul inchide Form1 inainte sa inchida Form2, Form1 nu va fi eliberat din memorie pana Form2 nu elibereaza referinta care o tine catre Form1.
 7/3/2008 9:43:13 PM
User is offlineoviciandrus
762 posts
www.comptech.ro
1st




Re: Form-uri modeless pentru data entry.
 (N/A)
Este adevarat. Trebuie implementat un mecanism care sa inchida toate formularele DataEntry apelate de un formular atunci cand acesta din urma este inchis de utilizator.
 7/3/2008 10:01:52 PM
User is offlinetenache
67 posts


Re: Form-uri modeless pentru data entry.
 (N/A)
Intrebarea era urmatoarea :
Cum se poate face "ca acest cod sa se opreasca din executie si sa astepte pana cand se inchide FORM2" , folosind form-uri nemodale? Solutia de mai sus nu opreste executia codului pana cand se inchide form2 . Cred ca ar fi trebuit sa formulezi intrebarea cam asa: cum se poate simula ....... , in loc de:  "face acelasi lucru" . Eu chiar m-am gandit la o alta solutie de a opri executia codului pana se inchide form2. Daca am fost singurul care a inteles asa , nu este nici o problema, dar ma tem sa nu mai fi fost si altii.
 7/4/2008 10:59:51 AM
User is offlineGrigore Dolghin
4001 posts
www.class-software.ro
1st






Re: Form-uri modeless pentru data entry.
 (Romania)
Din pacate executia codului nu se poate opri daca formul este nemodal. Intrebarea era cum fac refresh-ul grid-ului din FORM1 _dupa_ save sau cancel in FORM2. Solutii sunt mai multe. Una a fost pusa ca raspuns, alta ar fi fost folosirea lui BindEvent(), a treia (desi nu-mi place, dar e functionala) ar fi fost un timer in FORM1.

Cat despre exprimare, ai perfecta dreptate - ar fi trebuit sa ma exprim mai ingrijit. Imi cer scuze. :|

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
  Visual FoxPro  Tema pentru acasa  2. Form-uri mod...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2013 Profox   Terms Of Use  Privacy Statement