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  Tema pentru acasa  Nevoie de ajuto...
 Nevoie de ajutor urgent ... un Form + Grid
 
 5/12/2010 7:32:32 PM
User is offlinet_george1991
4 posts


Nevoie de ajutor urgent ... un Form + Grid
 (N/A)
As avea si eu nevoie de putn ajutor ...

Deci vreau sa fac un Form, si un Grid in el legat de o tabela.... Tabela are: (NUME , COST ) pana aici totul a mers. Problema este alta: Eu doresc sa adaug mai multe butoane de cautare care sa functioneze in felul urmator:

un buton de exemplu "Aranjare crescatoare dupa cost"... sa imi aranjeze in Grid-ul din acel Form ,o lista in ordine crescatoare dupa campul Cost al tebelei .......

Si as mai vrea un buton care sa se lege de o caseta text ... adica in caseta sa scriu NUMEle si cand apas pe acel buton, sa imi arate in Grid toate campurile care au la NUME numele scris de mine in caseta text (cu diferite costuri , bineinteles)....


Si ultima problema ar fi sa am o casuta "Check Box" care cand este selectata , sa pot modifica Gridul (adica ReadOnly al Grid-ului sa fie .F.) ... codul ar fi ceva de genul """"""""IF ThisForm.Check1.Value=0 THEN ThisForm.Grid1.ReadOnly=.T. ELSE ThisForm.Grid1.ReadOnly=.F. ENDIF """"""""""""" dar nu stiu unde trebuie bagat ...

Apreciez mult ajutorul, chiar am nevoie rapid ....
 6/17/2010 10:12:37 AM
User is offlinevaly.m
221 posts
4th


Re: Nevoie de ajutor urgent ... un Form + Grid
 (United Kingdom)
Salut...
Stiu ca sunt unii care vad altfel problema, dar eu o vad iin felul urmator...
Creezi un form, sa-i spunem Main... In formul acesta adaugi un grid, faci setarile de rigoare la grid (dimensiuni coloane,header, rows, deletemark, highlightbackcolor, etc... Atentie, daca refaci recordsource-ul gridului vei pierde toate setarile gridului, daca le faci manual... asa ca iti recomand sa adaugi o metoda noua in form,sa-i spunem griddef, unde vei pune with thisform.grid1 && faci setarile, recordsource, columns controlsource,etc endwith , pe care o vei apela dupa ce refaci recordsource-ul si vei asa avea mereu setarile tale la grid...). Dupa parerea mea nu iti trebuie un buton cu care sa faci ordonarea in grid... Eu as adauga o proprietate in form de tip logic, sa-i spunem sortare, care initial o faci .F. , adaugi .cdx la tabela, cu index pe fiecare din cele 2 coloane, pe coloana nume cu tag name nume si pe coloana cost cu tag name cost, iar pe headerul coloanei 2, acolo unde vei avea controlsource-ul COST, in metoda click vei pune:
select (thisform.grid1.recordsource)
thisform.sortare=!thisform.sortare
if thisform.sortare=.t.
   set order to cost
  ** aici poti schimba si culoarea headerului, sa-i arati utilizatorului ca e ordonat dupa coloana pe care dai click
  ** this.BackColor=rgb(255,0,0)
else
   set order to nume
   **this.BackColor= &&culoarea initiala a headerului
endif
thisform.grid1.refresh

Pana aici am facut sortarea, fara a avea nevoie de un buton care sa faca lucrul asta...
Filtrul care vrei sa il faci se paote face in felul urmator:
Adaugi un textbox in form. In metoda valid pui codul urmator: (poti pune codul in metoda InteractivChange ca sa faca filtrul dupa fiecare litera introdusa in textbox, dar pe o tabela destul de mare poate ingreuna filtrarea...)
select (thisform.grid1.recordsource)
set filter to  && Intai trebuie luat orice filtru
set filter to nume=alltrim(this.value)
thisform.grid1.refresh

In KeyPress mai poti pune un cod micut...
LPARAMETERS nKeyCode, nShiftAltCtrl
if nKeyCode=127 and this.SelStart=0 and this.SelLengh=0
   nodefault
endif
Acest cod il pui ca sa nu iti sara focusul la un alt obiect din form in momentul in care apesi tasta backspace si esti la inceputul textboxului.. Chiar daca tii apasat incontinuu pe Backspace el nu va sari din acest textbox...

La problema cu checkbox... faci in felul urmator
Adaugi un checkbox in form... Pui initial gridul pe readonly=.t.(poti pune lucrul asta in metodele form.init sau in grid1.init) In initul checkboxului pui :
this.value=.f.
this.caption="Lista in mod citire" &&(sau cum vrei tu sa iti dai seama ca e readonly gridul )

In metoda interactivchange pui urmatorul cod.
thisform.grid1.readonly=!thisform.grid1.readonly
if this.value=.t.
   this.caption="Lista in mod scriere"
else
   this.caption="Lista in mod citire"
endif

Si cam asta e....

Valy Maties - Beginner programmer
 6/17/2010 1:19:16 PM
User is offlineOvidiu Dobie
90 posts


Re: Nevoie de ajutor urgent ... un Form + Grid
 (N/A)
 valy.maties wrote
... Dupa parerea mea nu iti trebuie un buton cu care sa faci ordonarea in grid... Eu as adauga o proprietate in form de tip logic, sa-i spunem sortare, care initial o faci .F. , adaugi .cdx la tabela, cu index pe fiecare din cele 2 coloane, pe coloana nume cu tag name nume si pe coloana cost cu tag name cost, iar pe headerul coloanei 2, acolo unde vei avea controlsource-ul COST, in metoda click vei pune:
select (thisform.grid1.recordsource)
thisform.sortare=!thisform.sortare
if thisform.sortare=.t.
   set order to cost
  ** aici poti schimba si culoarea headerului, sa-i arati utilizatorului ca e ordonat dupa coloana pe care dai click
  ** this.BackColor=rgb(255,0,0)
else
   set order to nume
   **this.BackColor= &&culoarea initiala a headerului
endif
thisform.grid1.refresh

In cazul in care recordsource-ul nu este o tabela dbf ci este un view (o vedere parametrizata) SET ORDER TO trebuie inlocuit cumva cu ORDER BY-ul din View Designer ...
Se poate face acest lucru?
Se poate face sortarea coloanei respective apasand pe Header daca recordsource-ul este un view ???

Ovidiu Dobie
 6/17/2010 6:17:47 PM
User is offlinevaly.m
221 posts
4th


Re: Nevoie de ajutor urgent ... un Form + Grid
 (United Kingdom)
Nu cred ca va face, pentru ca order by este o clauza care se pune la un select (view)... Asa ca in cazul asta, pentru ca tot am creat metoda de parametrizare a gridului, nu pot face altceva decat un select  intr-un cursor, pe care il pun ca recordsource... Iar in parametrizare schimb recordsource-ul conform parametrului thisform.sortare... Cred ca exista si solutii mai bune...Dar eu de exemplu nu am folosit niciodata view-uri, ci mai degraba selecturi in cursoare readwrite... Ar fi cam acelasi lucru...

Valy Maties - Beginner programmer
  Visual FoxPro  Tema pentru acasa  Nevoie de ajuto...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement