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  Clase - VCX si PRG  Adaugare cod in...
 Adaugare cod in metoda click...
 
 8/28/2009 3:02:14 PM
User is offlinevaly.m
221 posts
4th


Adaugare cod in metoda click...
 (United Kingdom)
Salut. Am si eu o problema.... Am creat programatic in initul formului meu un grid in care adaug pe coloana 5 un checkbox. Ca sa imi functioneze acest checkbox trebuie sa creez un cod in metoda click care sa verifice valoarea checkbox-ului in acel moment si sa o schimbe. Cum modific metoda click intr-un checkbox dintr-un grid creat programatic?

Valy Maties - Beginner programmer
 8/28/2009 3:27:58 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Adaugare cod in metoda click...
 (N/A)
Nu poti scrie cod in metode in runtime.
Dar nici nu ai nevoie de asa ceva
CheckBox-ul isi schimba valoarea la click.
Fiind in coloana grid-ului, are in mod automat in ControlSource campul din Column.ControlSource. Orice obiect VFP care are controlsource modifica in mod automat continutul campului ( sau variabilei,  sau proprietatii) din controlsource.




Daniel Buduru
 8/28/2009 4:15:56 PM
User is offlinevaly.m
221 posts
4th


Re: Adaugare cod in metoda click...
 (United Kingdom)
Pai e nasol, ca daca il pun manual in grid, cand rulez gridul nu imi apare checkbox-ul ci "0"...

Valy Maties - Beginner programmer
 8/28/2009 4:29:13 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Adaugare cod in metoda click...
 (N/A) Modified By Daniel Buduru  on 8/28/2009 3:33:00 PM)
Presupun ca ai un camp logic in controlsource, altfel nu are sens checkbox-ul ...
Local loCol
loCol=thisform.grid1.columnX
loCol.AddObject('Check1','checkbox')
loCol.Check1.Caption=''
loCol.CurrentControl='check1'
loCol.Sparse=.F.

Daca vrei sa executi ceva intr-un eveniment al unui control adaugat in runtime, poti utiliza BINDEVENT, intre evenimentul obiectului si o metoda definita intr-un obiect creat in design time.

Daniel Buduru
 8/28/2009 4:54:34 PM
User is offlinevaly.m
221 posts
4th


Re: Adaugare cod in metoda click...
 (United Kingdom)
Ok, am facut cum ai spus tu... si a aparut checkboxul... Dau clcik pe el si ... nimic. Nu face nimic (ar fi trebuit sa isi schimbe vaoarea in .f. sau .t., sau in 0 sau 1), nu?
Si mai am o chestie... Evenimentul din click-ul textboxului cu denumirea text1 din form sa fie rulat cand acest checkbox isi schimba valoarea. M-am uitat la BINDEVENT in help dar nu inteleg nimic. Imi pare rau daca te enervez

Valy Maties - Beginner programmer
 8/28/2009 5:06:34 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Adaugare cod in metoda click...
 (N/A) Modified By Daniel Buduru  on 8/29/2009 12:10:03 AM)
N-am cum sa stiu ce ai tu in grid.recordsource si in column.controlsource ...
Daca nu isi schimba valoarea, e ceva in neregula pe undeva. Daca nu dai mai mu;te informatii, ramane doar de dat cu presupusul ...

La problema 2 - desi nu mi se pare ca apelarea text1.click din columnX.check1.click e cea mai buna metoda pentru orice ai vrea sa faci acolo -:
Dupa ce instantiezi checkbox-ul in coloana:
BINDEVENT(thisform.grid1.ColumnX.Check1,'Click',thisform.text1,'Click',1)  && 1 din coada zice ca text1.click e apelat dupa ce se executa check1.click



Daniel Buduru
 8/28/2009 5:15:13 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Adaugare cod in metoda click...
 (N/A)
Referitor la actualizare camp logic:
Daca in Grid.recordsource ai un cursor obtinut cu SELECT .... INTO CURSOR, cursorul obtinut e read-only.
Ca sa-l faci read-write, pune in coada  selectului readwrite.
SELECT * FROM tabela INTO CURSOR crs NOFILTER READWRITE


Daniel Buduru
 8/28/2009 11:29:54 PM
User is offlinevaly.m
221 posts
4th


Re: Adaugare cod in metoda click...
 (N/A)
Daniel, pare a fi o chestie simpla pentru voi cei mai profi, pentru mine e putin mai complicat... Si-anume, deschid reteta mea intr-un grid pentru modificare, iar pe ultima coloana pun cate un checkbox pe fiecare materie prima pentru a o sterge din retetar. Pana acum aveam un "brow fiel" si puneam eu ceva, gen un "S"- de la Stergere, pe unul din campuri verificam care dintre materii aveau acel S si le stergeam din reteta. Dar am trecut la o abordare mai profesionala sa-i spun asa, sa nu mai deschid acel browse ci sa fac aceasta chestie intr-un grid unde sa bifez un checkbox pentru acele randuri pe care vreau sa le sterg.

Valy Maties - Beginner programmer
 8/29/2009 10:13:05 AM
User is offlineDaniel Buduru
2141 posts
1st




Re: Adaugare cod in metoda click...
 (N/A) Modified By Daniel Buduru  on 8/29/2009 9:13:55 AM)
Trebuie sa ai un camp de tip logic (sau numeric)  in coloana gridului in care pui checkbox. Adauga tabelei acest camp, sau schimba-i celui folosit acum tipul in logic.
Pe de alta parte, ca a sterge o matrie prima din retetar ar trebui sa fie suficient sa i se puna cantitatea=0, apoi, la salvare, sa fie eliminate pozitiile cu cantitate 0. E mai sigur pentru utilizator.
Ca sa nu mai vorbim de DeleteMark in grid ...

Daniel Buduru
 8/29/2009 2:28:58 PM
User is offlinevaly.m
221 posts
4th


Re: Adaugare cod in metoda click...
 (N/A)
Despre campul logic, la inceput cand m-am gandit sa fac cu acel browse, deschideam campurile din tabela care ma interesau pe mine printre care era si  un camp de tip caracter in care puneau un "S" pentru a sterge. Verificam daca acel camp continea acel caracter si il stergeam. Acum, la baza gridului meu de fapt sta un SELECT din tabela mama (unde sunt mai multe campuri) doar a campurilor care ma intereseaza pe mine plus un camp de tip caracter, am ales eu, pentru ca stiam ca checkbox-ul are in spate valorile 0 si 1, nu stiam ca se poate si cu true sau false. In fine. Ca sa nu schimb in tabelele mele tipul acelui camp "desters" din caracter in numeric la finalizare pe click-ul unui buton vroiam sa fac cu un scan o inlocuire in tabela mama a campului desters cu un "S" pentru acele materii prime care in tabela selectie au 1, in urma bifarii checkboxului. In ceea ce priveste cantitate 0, ai dreptate, nu prea au ce cauta materii prime cu cantitate 0, dar in ceea ce priveste asta o sa fac altfel, o sa pun la introducerea materiei prime aceasta conditie.

Valy Maties - Beginner programmer
 8/29/2009 6:41:02 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Adaugare cod in metoda click...
 (N/A) Modified By Daniel Buduru  on 8/29/2009 6:44:19 PM)
Asemanarile dintre gridul VFP si excel se opresc la aspect ...
In vfp nu exista notiunea de "a accesa continutul unei celule", problema des pusa pe forum. Daca ai un checkbox intr-o coloana, intr-un grid cu 10 linii, te astepti sa poti itera prin cele 10 checkbox-uri pe care le vezi. Fals. Exista numai un checkbox, care se muta mereu pe linia curenta. Restul sunt doar poze .... Prin urmare, daca nu legi un control din grid de un camp din recordsource, controlul nu pastreaza valoare atunci cand te misti in grid.
Sa ziceam ca ai botezat "sters" campul in care pui acel "S". Creezi un camp logic lSters:
SELECT *, !EMPTY(sters) as lSters FROM retete_linii INTO CURSOR crsRetete_linii READWRITE
Coloana cu checkbox-ul trebuie sa aiba lSters in controlsource.
Conditia cu cantitate >0 se pune la salvarea retetei, orice modificare se face in ea, nu la introducere ... Si anume, pozitiile cu cantitate 0 se sterg, fara a mai intreba utilizatorul si fara a-i cere sa le stearga el. Asta face parte din validarea inregistrarii.





Daniel Buduru
 8/31/2009 11:36:00 AM
User is offlinevaly.m
221 posts
4th


Re: Adaugare cod in metoda click...
 (United Kingdom)
Ok, pana la urma am reusit, functioneaza. In schimb nu stiu cum sa fac o chestie... Am incercat cu LockScreen, dar nu merge, sau cred ca nu stiu eu sa folosesc. Toata chestia asta cu modificarea retetei este folosita intr-un form care se lanseaza in urma apasarii pe un buton. Numai ca dupa ce lansez formul, in butonul respectiv mai am cod, care ma gandesc ca ar trebui sa ruleze in momentul cand formul meu de modificare se inchide. Chestia e ca formul meu se lanseaza, dar imediat ce apare se ruleaza si codul de dupa "do form...". I-am pus un thisform.lockscreen.t. inainte de a rula formul si pare sa-l blocheze numai ca dupa ce ies din formul modificare formul "mama" ramane blocat. Ce trebuie sa fac mai exact?

Valy Maties - Beginner programmer
 8/31/2009 11:48:42 AM
User is offlineDaniel Buduru
2141 posts
1st




Re: Adaugare cod in metoda click...
 (N/A)
Si uite asa ai ajuns sa sesizezi diferenta dintre programarea procedurala si OOP :). Odata ce a fost creat un obiect, acesta isi vede de viata lui, iar creatorul la fel ...
Pentru ca metoda din care ai lansat formul sa astepte inchiderea lui inainte de a continua, formul lansat trebuie sa fie modal (form.WindowType=1).
Sau regandesti partea aia de interfata, astfel incat sa-si faca treaba fara sa astepti inchiderea formului - depinde de ce anume se face in acel form.

Daniel Buduru
  Visual FoxPro  Clase - VCX si PRG  Adaugare cod in...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement