Search  
Friday, May 25, 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  IncrementalSear...
 IncrementalSearch pentru textbox in grid
 
 4/12/2011 10:03:42 AM
User is offlineAlexM
58 posts


IncrementalSearch pentru textbox in grid
 (Romania)
VFP9. Intr-un grid in care adaug linii noi (sa zicem Denumire, Cantitate, Pret), vreau sa pot completa in coloana denumire valorile folosind incrementalsearch. Pentru asta am creat o clasa derivata din textbox si pe InteractiveChange execut o metoda i_locate a textboxului. Un obiect al acestei clase l-am pus ca si currentcontrol pentru coloana denumire din grid. Metoda i_locate trebuie sa caute in tabela nomenclator "nom" si sa-mi aduca de acolo in caz ca gaseste denumirea si pretul pentru articolul cautat. De asemenea in campul txtbox din grid cursorul trebuie sa-mi fie pozitionat dupa ultimul caracter tastat. ex: Tastez: , gaseste in nomenclator, pozitioneaza cursorul in txtbox dupa litera A din Tastez: , gaseste in nomenclator, pozitioneaza cursorul dupa caracterul al doilea din Tastez: , nu gaseste numic in "nom", pune in textbox (fiindca n-a gasit nimic cu care sa -l completeze) si cursorul este pozitionat pe pozitia 4 dupa ultimul caracter. Am folosit pentru asta proprietatea ".SelStart" a txtbox-ului, dar nu se comporta totdeauna la fel. Dupa ce am adaugat primul articol in document si incep sa tastez in "denumire", metoda "i_locate" imi aduce din nomenclator informatiile dar pozitioneaza totdeauna cursorul la inceputul cuvantului, asa incat cautarea se face doar dupa primul caracter(tastez A, gaseste Adeziv, apoi pune cursorul inainte de A, tastez R si in loc sa caute dupa AR, cauta dupa R si gaseste Rigips). Acest lucru se intampla doar la prima inregistrare din grid. Daca raman in cadrul gridului (inregistrarile urmatoare le adaug cu grid.allowaddnew atunci cand este apasata KeyDownArrow) pentru inregistrarile urmatoare, cautarea se face corect, pozitia cursorului incrementandu-se dupa fiecare caracter tastat. Imi poate spune cineva unde gresesc va rog? Adaug mai jos metoda i_locate:
i_locate.txt 
 4/12/2011 10:07:34 AM
User is offlineAlexM
58 posts


Re: IncrementalSearch pentru textbox in grid
 (Romania)
Scuze pentru modul greoi de formatare al textului dar nu mi-am dat seama cum l-as putea formata in asa fel incat sa poata fi afisat decent. De asemenea va rog sa-mi spuneti cum pot insera cod in continutul post-ului in asa fel incat sa fie afisat cu formatarea din VFP. Eu n-am gasit ca solutie decat sa-l salvez txt si sa-l pun ca atasament. Multumesc
 4/12/2011 10:14:31 AM
User is offlineAlexM
58 posts


Re: IncrementalSearch pentru textbox in grid
 (Romania)
Trebuie sa vin cu o nou precizare. Am folosit caracterele "mai mic" si "mai mare" pentru a evidentia ce anume tastez si am vazut ca tot ce era scris intre ele nu-mi apare in textul post-ului. Asa ca mai pun inca o data explicatiile. Intr-un grid in care adaug linii noi (sa zicem Denumire, Cantitate, Pret), vreau sa pot completa in coloana denumire valorile folosind incrementalsearch. Pentru asta am creat o clasa derivata din textbox si pe InteractiveChange execut o metoda i_locate a textboxului. Un obiect al acestei clase l-am pus ca si currentcontrol pentru coloana denumire din grid. Metoda i_locate trebuie sa caute in tabela nomenclator "nom" si sa-mi aduca de acolo in caz ca gaseste denumirea si pretul pentru articolul cautat. De asemenea in campul txtbox din grid cursorul trebuie sa-mi fie pozitionat dupa ultimul caracter tastat. ex: Tastez: "A", gaseste "Adeziv" in nomenclator, pozitioneaza cursorul in txtbox dupa litera A din "Adeziv" Tastez: "R", gaseste "Aracet" in nomenclator, pozitioneaza cursorul dupa caracterul al doilea din "aracet" Tastez: "I", nu gaseste numic in "nom", pune in textbox "ARI" (fiindca n-a gasit nimic cu care sa -l completeze) si cursorul este pozitionat pe pozitia 4 dupa ultimul caracter. Am folosit pentru asta proprietatea ".SelStart" a txtbox-ului, dar nu se comporta totdeauna la fel. Dupa ce am adaugat primul articol in document si incep sa tastez in "denumire", metoda "i_locate" imi aduce din nomenclator informatiile dar pozitioneaza totdeauna cursorul la inceputul cuvantului, asa incat cautarea se face doar dupa primul caracter(tastez A, gaseste Adeziv, apoi pune cursorul inainte de A, tastez R si in loc sa caute dupa AR, cauta dupa R si gaseste Rigips). Acest lucru se intampla doar la prima inregistrare din grid. Daca raman in cadrul gridului (inregistrarile urmatoare le adaug cu grid.allowaddnew atunci cand este apasata KeyDownArrow) pentru inregistrarile urmatoare, cautarea se face corect, pozitia cursorului incrementandu-se dupa fiecare caracter tastat.
 4/12/2011 10:49:47 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: IncrementalSearch pentru textbox in grid
 (N/A)
Declanseaza actiunea din metoda keypress si tine intr-o proprietate a textboxului sirul tastat, adaugand la el ultimul caracter tastat. Daca se tasteaza backspace, scurtezi sirul cu un caracter.
Dupa cautare / inlocuire in textbox.value refaci selstart la lungimea sirului.


Daniel Buduru
 4/12/2011 11:52:39 AM
User is offlineAlexM
58 posts


Re: IncrementalSearch pentru textbox in grid
 (Romania)
Nu mi-a mers. De proba am pus chiar .Selstart=iif(.Selstart=1,2,.Selstart). Se comporta la fel pentru prima inregistrare din grid. La celelalte merge.
 4/12/2011 12:10:30 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: IncrementalSearch pentru textbox in grid
 (N/A) Modified By Daniel Buduru  on 4/12/2011 12:14:46 PM)
SelStart se altereaza. Memoreaza valoarea lui SelStart inainte de cautare si restabileste-o dupa cautare.
Sau restabileste dupa lunginea sirului tastat, pe care trebuie sa-l ai memorat intr-o proprietate.
Uite aici un exemplu:
http://support.microsoft.com/kb/166378

Daniel Buduru
 4/12/2011 4:49:00 PM
User is offlineAlexM
58 posts


Re: IncrementalSearch pentru textbox in grid
 (Romania)
E tare ciudat. Desi aveam inainte si dupa cautare aceeasi valoare pentru .selstart, am facut asa cum m-ai sfatuit: this.cursorposition=this.selstart, apoi cautare, apoi this.selstart=this.cursorposition si vad ca functioneaza. Nu inteleg de ce. Wait 'inainte de cautare'+str(this.selstart) window, cautare si apoi wait 'dupa cautare'+str(this.selstart) window afisaza acelasi lucru. Oricum, multumesc de ajutor.
  Visual FoxPro  Clase - VCX si PRG  IncrementalSear...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement