Search  
Friday, February 10, 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  Form-uri si generatoare de form-uri  Cum blochez un ...
 Cum blochez un rand din grid
 
 11/15/2009 2:54:01 PM
User is offlinealemao
105 posts
5th


Cum blochez un rand din grid
 (N/A)
Am urmatoarea problema: - folosesc un grid pentru preluare date, - initial grid-ul este readonly, - cand incep preluarea dau comenzile grid.readonly=.F. append blank thisform.grid.column1.setfocus() care ma pozitioneaza pe prima coloana din rand. Problema e ca accidental am apasat tasta si m-am trezit in pe randul de deasupra, fapt care nu imi convine deloc. Intrebare: Cum pot bloca accesul doar la randul (din grid) pe care lucrez in acel moment?
 11/16/2009 10:51:40 AM
User is offlineaflorin
838 posts
1st


Re: Cum blochez un rand din grid
 (N/A)
Eu nu sunt un fan al editarii direct in grid, din mai multe motive - unele dintre ele sunt si cele enuntate de tine (in cele doua posturi). Daca ai de ales, eu te sfatuiesc sa renunti la editarea in grid.
Florin Aparaschivei - Iasi
 11/18/2009 8:24:39 PM
User is offlinealemao
105 posts
5th


Re: Cum blochez un rand din grid
 (N/A)
Nici eu nu prea eram fan al editarii grid-urilor insa am vazut un soft care functiona foarte bine cu grid-uri si ca sa fiu sincer cu tine, sau aprins putin beculetele.
Sper sa ma poata indruma cineva cat de cat.

 11/18/2009 9:27:35 PM
User is offlineedyshor
1450 posts
1st




Re: Cum blochez un rand din grid
 (N/A)
In metodele gridului .AfterRowColChange() si in .GotFocus() :

1. Verifici conditia (de ex daca un camp sau o expresie este .T.)
2. Setezi proprietatea gridului .AllowCellSelection = .T. / .F. in functie de rezultatul conditiei
3. Executi un refresh la grid (si daca .AllowCellSelection este .T. ai putea sa executi un SetFocus() pe o coloana)

Asta-mi vine acum in minte, ar trebui sa mearga, dar probabil o sa te joci un pic cu el pana vei obtine exact ce vrei.
 11/19/2009 12:57:52 AM
User is offlineEugen Gliga
1038 posts
1st




Re: Cum blochez un rand din grid
 (N/A)
Ma gandesc ca ai un buton cu care activezi editarea si unul ca care o blochezi. Daca in timpul editarii vrei sa nu parasesti linia curenta, ai putea pune in metoda BeforeRowColChange un If in care testezi Grid1.RowColChange. Daca acesta ia valoarea 1 sau 3, adica urmeaza sa se schimbe linia, faci un NoDefault si obligi focusul sa ramana la locul lui.




 11/19/2009 9:25:58 AM
User is offlineaflorin
838 posts
1st


Re: Cum blochez un rand din grid
 (N/A) Modified By aflorin  on 11/19/2009 9:26:38 AM)
 alemao wrote
Nici eu nu prea eram fan al editarii grid-urilor insa am vazut un soft care functiona foarte bine cu grid-uri si ca sa fiu sincer cu tine, sau aprins putin beculetele.
Sper sa ma poata indruma cineva cat de cat.



Cit de sigur esti ca acolo era editare in grid? :)
Cu putina imaginatie si oarece efort poti crea un custom control care sa simuleze o editare in grid, dar in fapt sa foloseasca textboxes. Think about it.
Edit: Ca sa fii sigur de ce controale este vorba, foloseste un Spy++

Florin Aparaschivei - Iasi
 11/19/2009 11:02:54 AM
User is offlineEugen Gliga
1038 posts
1st




Re: Cum blochez un rand din grid
 (N/A)
Adica sa-ti faci un custom grid. Probabil ca se poate creea cu putina munca un grid ideal, dar in multe situatii cred ca se poate customiza gridul existent. Sunt situatii cand editarea in grid se preteaza mai bine decat un form cu textboxuri.


 12/1/2009 11:18:09 PM
User is offlinealemao
105 posts
5th


Re: Cum blochez un rand din grid
 (N/A)
Nu te contrazic insa daca te-ai jucat putin cu Saga, probabil ca ma vei intelege de ce vreau grid.
 12/2/2009 10:01:22 AM
User is offlineGrigore Dolghin
3521 posts
www.class-software.eu
1st






Re: Cum blochez un rand din grid
 (N/A)
Si daca ai vedea ce cod are saga in spatele fiecarui textbox din gridul ala, ai intelege de ce NU vrei grid.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 12/2/2009 12:27:27 PM
User is offlineedyshor
1450 posts
1st




Re: Cum blochez un rand din grid
 (N/A)
O alternativa pe care am implementat-o in anumite grid-uri cu 2-3 coloane editabile (lista de inventar de ex) consta in binduirea cu BindEvents() a meotdei Lostfocus() pentru fiecare textbox din coloanele editabile la o metoda a formului. Works as advertised :) Si cu asta chestie treci peste obiectia lui Grig - nu mai e cod in textbox-uri e in form :D

Acum, sunt situatii cand o editarea unei liste este mai convenabila pentru utilizator cand o face intr-un grid decat atunci cand trebuie sa deschida un form modal pentru fiecare rand.
Oricum gridul in care editeaza user-ul tot ar trebui sa se afle pe un form cu Salaveaza / Renunta.
 12/2/2009 12:36:07 PM
User is offlineEugen Gliga
1038 posts
1st




Re: Cum blochez un rand din grid
 (N/A)
M-ai facut curios :)

Eu folosesc in anumite situatii, editarea in grid. Intradevar ca am scris ceva cod pt a controla comportamentul gridului, dar l-am scris in form si am incercat sa-l fac cat mai general.


 12/2/2009 7:35:40 PM
User is offlineedyshor
1450 posts
1st




Re: Cum blochez un rand din grid
 (N/A)
Textbox-urile coloanelor care nu trebuie sa fie editabile au "Return .F." in When()
Ai gasit vre-o metoda mai buna decat asta sau Readonly = .T. ?!
 12/3/2009 1:05:44 AM
User is offlineEugen Gliga
1038 posts
1st




Re: Cum blochez un rand din grid
 (N/A)
When (.F.) ar fi o solutie mai buna decat ReadOnly=.T., deorece nu permite primirea focusului. Totusi nu o folosesc  pt ca ar trebui sa pun pun codul  in TextBoxul respectiv si evit pe cat posibil sa bag cod in Grid. Gridul  vine cu ColumnCount=-1, iar numarul de coloane il stabilesc programatic. O idee care mi-a venit acum ar fi sa subclasez un TextBox cu When(.F) si sa-l inlocuiesc programatic in colonele care nu trebuie editate. Solutia pe care am folosit-o pana acum nu este prea eleganta dar functioneaza bine. Mai exact folosesc evenimentul AfterRowColChange() si in functie de coloana ( parametru nColindex )  folosesc comanda Keyboard cu Tab sau  BACKTAB in functie de LastKey(). Subclasa TextBox pe care o folosesc atat in Grid cat si in Form are in Valid codul  Return ThisForm.Valid(This), incat toate validarile se fac in form. Deasemeni mai fac BindEvant() pe toate evenimentele InteractiveChange din Grid, pt a stii cand s-au facut modificari.


 12/4/2009 11:52:30 AM
User is offlinenia
2 posts


Re: Cum blochez un rand din grid
 (N/A)
buton : append blank, filter pe ultima inregistrare adaugata cu append blank,grid.readonly=.F.,thisform.grid.column1.setfocus
sper sa te ajute
 8/30/2010 11:58:17 PM
User is offlinealemao
105 posts
5th


Re: Cum blochez un rand din grid
 (N/A)
 Grigore Dolghin wrote
Si daca ai vedea ce cod are saga in spatele fiecarui textbox din gridul ala, ai intelege de ce NU vrei grid.

Inteleg ca e complicat.
Daca era simplu nu ceream ajutorul.
Insa cu atat mai mult ma incita gasirea unei solutii.

PS.
1.Am asa un feeling ca un foarte bun cunoscator al VisualFox-ului (cum este maestrul Grig) si-a lasat "amprenta" prin zona acelor grid-uri! 
2.Oricum am o promisiune de onorare mai veche la maestrul Grig, dar nu am reusit sa o indeplinesc intrucat nu a fost chip pana acum sa ajung la dumnealui.
 8/31/2010 2:34:32 AM
User is offlineGrigore Dolghin
3521 posts
www.class-software.eu
1st






Re: Cum blochez un rand din grid
 (N/A)
hm. Nu stiu cine esti si nu-mi aduc aminte de nici o promisiune. :)

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/1/2010 12:40:55 AM
User is offlinealemao
105 posts
5th


Re: Cum blochez un rand din grid
 (N/A)
Pentru Grig.
Sunt doar un membru al comunitatii
Ok. Am glumit.
In primavara m-ai ajutat cu o problema legat de criptare/decriptare, si atunci am promis ca fac o cinste la vara, dar din pacate nu am reusit.
Promisiunea ramane in agenda mea la sectiunea <nerezolvate> (rusinica mie).

 9/1/2010 3:53:38 AM
User is offlineGrigore Dolghin
3521 posts
www.class-software.eu
1st






Re: Cum blochez un rand din grid
 (N/A)
Posibil, nu mai tin minte. :)

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 9/1/2010 4:16:10 AM
User is offlineadimorarasu
38 posts
morarasu-adrian.num.ro




Re: Cum blochez un rand din grid
 (N/A)
Ca si metoda eu am un flag care se seteaza in functie de necesitati (daca vreau sa editez sau nu). La tine te poti lega de proprietatea readonly a grid-ului. Daca e readonly=.f. salvezi intr-o variabila inregistrarea pe care esti (thisform.mrec de ex.). Apoi in metoda AfterRowColChange a grid-ului pui codul

if this.readonly=.t.
go thisform.mrec
endi

Si va ramane pe acea inregistrare, chiar daca dai cu ceva in acel grid.
 9/2/2010 1:45:03 PM
User is offlinevicos
137 posts
5th


Re: Cum blochez un rand din grid
 (N/A)
Se adauga o proprietate in FORM [EDITEZ].

In BeforeRowColChange:

IF ThisForm.Editez &&AND BITAND(This.RowColChange,1)=1
IF This.RowColChange <> 2 && 0-No Change;1-RowChange;2-ColChange;3-RowAndColChange
NODEFAULT
ENDI
ENDI
 9/4/2010 5:58:50 PM
User is offlinealemao
105 posts
5th


Re: Cum blochez un rand din grid
 (N/A)
Mersi, codul merge minunat pe VFP9 dar nu pe VFP5 !
Hhmmmm !!!
 9/4/2010 8:01:42 PM
User is offlinealemao
105 posts
5th


Re: Cum blochez un rand din grid
 (N/A)
Referitor la codul primit de la Vicos, cod care merge bine in VFP9
Am incercat sa adaptez codul pentru VFP5 astfel
Pe langa noua property <editez> creata in Form, am pus o variabila RandGrila (publica) care in momentul in care intru in editare grid ia valoarea ThisForm.Grid1.ActiveRow
In metoda BeforeRowCol Change am pastrat codul de de la Vicos cu urmatoarea modificare
IF ThisForm.Editez
    IF ThisForm.Grid1.ActiveRow # RandGrila
        NODEFAULT
    ENDIF
ENDIF

Din pacate imi scapa ceva, caci dupa ce intru in editare nu mai pot deplasa cursorul pe rows (ceea ce e bine), dar nici pe columns (ceea ce e nu e bine)
Are cineva vreo idee cum sa fac sa pot deplasa cursorul pe columns dar sa raman in continuare blocat pe row in care doresc sa fac editarea?

Multumesc anticipat!

 9/13/2010 8:20:36 PM
User is offlinealemao
105 posts
5th


Re: Cum blochez un rand din grid
 (N/A)
Multumesc adimorarasu. Solutia oferita de tine merge bine pe VFP5. Multumesc mult. PS La problema postata mai sus nu am gasit rezolvarea, asa ca solutia ta e perfecta.
  Visual FoxPro  Form-uri si generatoare de form-uri  Cum blochez un ...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement