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  combobox.listco...
 combobox.listcount cu probleme
 
 12/13/2011 9:16:17 AM
User is offlineAlexM
58 posts


combobox.listcount cu probleme
 (Romania)

Salut,

Am o clasa combobox care primeste ca parametru tabelele pe care trebuie sa la deschida:

thisform.addobject('oCboxDbf','ControlBbf','articole,ret, liniiret')

in oCboxDbf.Init seteaza oCboxDbf.RowSource=ListDbf pe care a primit-o ca parametru si apeleaza oCboxDbf.OpenTables unde ar trebui sa verifice ce tabele sunt deschise deja din lista pe care a primit-o ca parametru si apoi sa le deschida pe restul. (iar pe Destroy inchide tabelele pe care le-a deschis, lasandu-le pe cele care erau deschise dinnainte).

Pentru a verifica si deschide lista de tabele folosesc un for i=1 to this.ListCount.

Si acum problema mea:

Cand am testat clasa, am pus intr-un form un buton si pe btn.click am pus thisform.addobject('oCboxDbf','ControlBbf','articole,ret, liniiret'). Functioneaza bine.

Daca pun thisform.addobject in Form.load asa cum am nevoie se executa oCboxDbf.create-> oCboxDbf.init-> oCboxDbf.OpenTables, dar cand trebuie sa parcurga For i=1 to this.ListCount

this.ListCount=0 si bineinteles ca nu exista nici un this.List(i) desi  this.Rowsource='articole,ret, liniiret'

Ce ar trebui sa mai fac ca sa puna efectiv elementele din RowSource in lista de elemente a combobox-ului?

Multumesc

 

 12/13/2011 10:03:20 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: combobox.listcount cu probleme
 (N/A)
Nu creezi obiectele formului in form.load, ci doar in form.init. Cand se declanseaza form.load, obiectul form inca nu e accesibil.
Nici dataenvironment nu este deschis in form.load, asa ca acel combo nu gaseste tabela.
Pe de alta parte, abordarea asta nu prea e OOP.
Fa o clasa combo, pune-i deja in rowsource ce trebuie, adu-l in form si pune-l acolo unde ai nevoie de el. Poti pune un select in rowsource, si nu mai ai nici grija tabelei, o deschide automat comanda select.

Daniel Buduru
 12/13/2011 10:16:35 AM
User is offlineAlexM
58 posts


Re: combobox.listcount cu probleme
 (Romania)

Obiectul nu imi trebuie decat ca sa gestioneze deschiderea si inchiderea tabelelor. El nici nu apare pe interfata. Daca nu-l pun in Load, ca sa-mi deschida tabelele inainte de init, gridurile de pe form nu-mi mai functioneaza. Si alesesem combo tocmai in ideea ca ii dau parametru o lista  (sir de caractere) si prin intermediul lui accesez item-uri (combo.list(i)) deci nu mai este nevoie sa parsez lista in elementele distincte.Altfel puteam face o clasa custom si legam o proprietate a ei de un array in care tineam elementele listei si treaba era rezolvata. Nu mai depindeam de load/init.

Altfel nu se poate?

 12/13/2011 10:42:45 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: combobox.listcount cu probleme
 (N/A)
Dupa cum spuneam, in form.load formul nu poate fi inca referit, deci nu poti instantia obiecte in el si nici referi obiecte care exista in el.
Daca tii la modul asta de lucru, pune form.Bindcontrols=.f., instantiaza obiectul si deschide tabelele in form.init, apoi pune thsiform.bindcontrols=.t.


Daniel Buduru
  Visual FoxPro  Clase - VCX si PRG  combobox.listco...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement