Search  
Saturday, February 11, 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  Cod, sintaxa si comenzi  deplasare in gr...
 deplasare in grid
 
 3/19/2010 10:50:28 AM
User is offlinemarcelmuresan
15 posts


deplasare in grid
 (N/A)
Ziua buna tuturor.
Am un grid, care la AfterRowColChange cauta o inregistrare intr-un tabel si populeaza cu datele respective niste controale din form.
Daca merg pe grid cu sagetile e ok, insa daca schimb randul din grid cu click trebuie sa fac click de 2 ori ca sa se modifice datele din form, altfel ramane populat cu datele corespunzatoare rindului pe care a fost click-ul precedent.
Daca bag acelasi cod si la onClick pe grid, se inverseaza problema... adica se intimpla chestia de mai sus la deplasarea cu sagetile.
Stiu ca e ceva banal dar nu-mi pica fisa..
Multumesc.
 3/19/2010 11:00:42 AM
User is offlineaflorin
838 posts
1st


Re: deplasare in grid
 (N/A)
ThisForm.Refresh() ?
Florin Aparaschivei - Iasi
 3/19/2010 11:07:51 AM
User is offlinemarcelmuresan
15 posts


Re: deplasare in grid
 (N/A)
Are ThisForm.Refresh ca altfel nu s-ar modifica formul
 3/19/2010 12:33:15 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: deplasare in grid
 (N/A)
Pune un breakpoint in afterrowcolchange si traseaza in debugger.
Sau pune un WAIT WINDOW "Click" in afterrowcolchange si vezi daca evenimentul se declanseaza normal, deci daca apare la primul click.


Daniel Buduru
 3/19/2010 1:30:25 PM
User is offlinemarcelmuresan
15 posts


Re: deplasare in grid
 (N/A)
Apare waitwindow-ul la primul click. Doar de la al doilea click datele din form se schimba cu un click intirziere.
Am asa:
SELECT cm
LOCATE FOR cm.nrcontr=THISform.container1.grdcnp.column2.text1.VALUE
THISFORM.text4.VALUE=cm.codf
etc...
SELECT fisier
LOCATE FOR fisier.codf=THISFORM.text4.VALUE
THISFORM.text5.VALUE=fisier.denumire
etc...
THISFORM.container1.grdcnp.column2.text1.SETFOCUS
THISFORM.REFRESH()

culmea e ca la click-uri pe coloana 2 din grid, functioneaza ok

 3/19/2010 2:13:38 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: deplasare in grid
 (N/A)
Asta inseamna ca la click-urile urmatoare WAIT WINDOW nu apare decat din doua in doua?
Daca e o coloana pe care merge corect,, vezi prin ce difera o coloana in care nu merge de cea in care merge - ce currentcontrol, ce are acesta in metoda click si daca nu cumva este capturat cu un bindevent.

Codul acesta e in AfterRowColChange?
THISFORM.container1.grdcnp.column2.text1.SETFOCUS
THISFORM.REFRESH()


Daniel Buduru
 3/19/2010 3:54:29 PM
User is offlinemarcelmuresan
15 posts


Re: deplasare in grid
 (N/A)
Deci cind apar datele in grid, e selectata prima linie din grid.
La click1 pe linia a 2-a - totul e ok, am in form datele corespunzatoare liniei a 2-a, + wait window
apas o tasta pentru a iesi din wait
click2 pe linia a 3-a - nu se schimba nimic in form, dar am wait window
apas o tasta, iese din wait,
click3 pe linia a 4-a - in form apar datele corespunzatoare liniei a 3-a + wait window
tasta,
click4 pe linia a 5-a - in form apar datele corespunzatoare liniei a 4-a + wait window
cu alte cuvinte, daca sa zicem cobor cu click in grid cu cite o linie, in form am datele corespunzatoare liniei de deasupra celei selectate.
In schimb daca fac click-uri pe coloana 2 merge ok, desi coloana 2 e absolut identica cu celelalte, m-am uitat cred ca de 10 ori, si tot asa, daca ma deplasez in grid cu sagetile totul este ok.

THISFORM.container1.grdcnp.column2.text1.SETFOCUS
THISFORM.REFRESH()
este in AfterRowColChange
 3/19/2010 4:59:18 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: deplasare in grid
 (N/A)
1. Pune o conditie ca acest cod sa se execute doar cand se schimba linia
IF BITAND(this.RowColChange,1)<>1
    return
endif

2. Comenteaza linia asta
* THISFORM.container1.grdcnp.column2.text1.SETFOCUS

Daniel Buduru
 3/19/2010 5:24:48 PM
User is offlineaflorin
838 posts
1st


Re: deplasare in grid
 (N/A)
Eu am folosit de multe ori ceva asemanator cu ce incerci tu sa faci si nu am avut probleme. Doar ca:

- intotdeauna foloseam valoarea din tabela care este sursa de date pentru grid (bazandu-ma pe faptul ca se misca cursorul in tabela odata cu miscarea mea in grid).
Crezi ca poti inlocui:
LOCATE FOR cm.nrcontr=THISform.container1.grdcnp.column2.text1.VALUE
cu ceva de genul
LOCATE FOR cm.nrcontr=tabela_sursa_de_date_la_grid.campul_de_pe_coloana2

- uneori, cind bagam gridul intr-un container, pe linga
ThisForm.refresh()
faceam si
ThisForm.Container.Refresh()

Florin Aparaschivei - Iasi
 3/19/2010 10:21:06 PM
User is offlinemarcelmuresan
15 posts


Re: deplasare in grid
 (N/A)
multumesc pentru raspunsuri, deocamdata nu am acces la calculatorul cu pricina. Va anunt luni cum am rezolvat - daca am rezolvat-o - si o sa va mai cer ajutorul. Daniel, linia aia am bagat-o vazind ca nu se schimba valorile in forma; ca sa fiu sigur ca focusul e acolo in grid. Asa a inceput sa mearga... asa cum merge. Fara linia aia nu merge nicicum.
 3/19/2010 11:31:30 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: deplasare in grid
 (N/A)
Daca numai asa a mers, Florin a indicat deja solutia.

Nu folosi grid.Column.Text.value, ci valoare campului din grid.column.controlsource.
Fara linia cu grid.column2.text1.setfocus, iti apare mereu valoarea de pe prima linie afisata in grid.
Cu grid.column2.text1.SetFocus, apare la o linie diferenta.

Daca pui

this.Column2.text1.setfocus
this.refresh

chiar la inceputul metodei, inainte de preluarea valorii, iar va merge.

Daca folosesti comanda

LOCATE FOR cm.nrcontr=EVAL(THIS.column2.controlsource)
sau
LOCATE FOR cm.nrcontr=tabela_sursa_de_date_la_grid.campul_de_pe_coloana2 &&asa cum a indicat Florin

nu mai ai nevoie de setfocus si nici nu mai apare vreun decalaj.

Regula e sa nu se faca referire la proprietatile unui control din grid din afara acelui control, ci numai la campurile din inregistrarea curenta din grid.

Daniel Buduru
 3/22/2010 9:27:28 AM
User is offlinemarcelmuresan
15 posts


a
 (N/A)
Da domnilor! Deci pina la urma merge si asa, si asa, si oricum, numai cum am vrut eu nu mergea. Mersi fain inca o data
  Visual FoxPro  Cod, sintaxa si comenzi  deplasare in gr...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement