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  Variabile obiec...
 Variabile obiect si nume de obiecte
 
 11/5/2005 8:37:48 PM
User is offlineEugen Gliga
1052 posts
1st




Variabile obiect si nume de obiecte
 (Romania)
Am o mica nelamurire legata de varibilele obiect si numele obiectelor. De ce pentru obiectele incluse in alte obiecte numele prin care referim obiectul, corespunde cu numele din proprietatea name, iar pt obiectele create cu CreateObject, nu.  De exemplu :

o1=CREATEOBJECT("form")
? o1.Name   ---->  Form
? Form.Name ---->  Eroare

o1.AddObject("o2","container")
? o1.o2.name    ----->   o2
o1.o2.Name="xxx"
? o1.o2.name  ----->  Eroare
? o1.xxx.Name  ----->  xxx



 11/5/2005 10:53:10 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Variabile obiect si nume de obiecte
 (Romania)

Hai sa lamurim nelamurirea. De fapt cele doua sintaxe sunt echivalente, numai ca numele obiectului este amplasat in locuri diferite.

Sintaxa lui CreateObject e asa:

NumeObiectCreat = CreateObject("definitia_clasei")

Este evident faptul ca dupa ce creez obiectul pot sa-l adresez numai cu numele lui de obiect, nu cu numele clasei din care a fost instantiat, care este un text intr-o inregistrare dintr-un dbf.

La AddObject, in schimb, e asa:

container_care_nu_conteaza_ce_e.AddObject("NumeObiectCreat","DefinitiaClasei")

In codul pe care l-ai scris tu mai sus, ? o1.o2.Name functioneaza, dar nu este acelasi lucru cu ? Form.Name. Ca sa fie acelasi lucru, ar fi trebuit sa scrii ? o1.container.Name, si ar fi dat erori.

Cu alte cuvinte: CreateObject creeaza obiectul si il stocheaza in variabila din stanga egalului, si dupa aia folosesti variabila aia, in timp ce la AddObject, variabila creata este cea care e specificata ca prim parametru.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 11/5/2005 11:01:27 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Variabile obiect si nume de obiecte
 (Romania)

Uff... n-am terminat mesajul, sorry. Continui:

Dupa cum am vazut mai devreme, CreateObject iti da voie sa instantiezi obiecte din clase si sa le atribui in ce variabile doresti. AddObject creeaza variabila automat. Pentru ca nu exista o metoda sa o specifici (nici nu vad cum ar putea fi sintaxa. AddObject("nume_variabila","nume_obiect","nume_clasa", poate, da' arata nashpa), este folosit ca nume de variabila chiar textul din proprietatea .Name. La CreateObject nu e nevoie, pentru ca, datorita sintaxei, esti obligat sa specifici tu numele variabilei.

Abia acum am terminat :)


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 11/6/2005 12:05:25 AM
User is offlineEugen Gliga
1052 posts
1st




Re: Variabile obiect si nume de obiecte
 (Romania)
Totul este foarte clar si nu deranjeaza pe nimeni faptul ca foloseste ca nume de variabila chiar textul din proprietatea Name. Ceea ce nu mi se pare in regula, este faptul ca odata creata variabila obiect, daca schimb textul din proprietatea name, se schimba automat si numele variabilei, lucru care in primul caz nu se intampla.
 11/7/2005 12:16:51 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: Variabile obiect si nume de obiecte
 (N/A)
Functiile CREATEOBJECT() , NEWOBJECT() si metodele object.ADDOBJECT(), object.NEWOBJECT()  sunt oarecum echivalente, in sensul ca toate patru creeaza obiecte. Exista insa o diferenta inte ele, aceea ca functiile CREATEOBJECT() si NEWOBJECT() creeaza variabile obiect, pe cand metodele object.ADDOBJECT() si object.NEWOBJECT() creeaza obiecte intr-o ierarhie.
Faptul ca proprietatile unui obiect sunt utilizabile in aceleasi conditii ca si variabilele poate duce la concluzia ca sunt acelasi lucru. VFP insa le trateaza intern in mod diferit.
 

clear
clear all

oForm=Createobject("form")
oForm.
Show
oForm.Move(300,1)

ACTIVATE SCREEN BOTTOM

? "_VFP.Objects.count ", _VFP.Objects.count
? "_VFP.Objects(1).Name ",_VFP.Objects(1).Name

oTextBox=CREATEOBJECT("textbox")
oTextbox.
visible=.t.
oTextbox.
BackColor=RGB(255,255,128)

? "_VFP.Objects.Count ",_VFP.Objects.Count
? "_VFP.Objects(1).Name ",_VFP.Objects(1).Name
? "_VFP.Objects(2).Name ",_VFP.Objects(2).Name

oForm.AddProperty('oLabel')
oForm.oLabel=
CREATEOBJECT("Label")
oForm.oLabel.
Visible=.t.

? "_VFP.Objects.Count ",_VFP.Objects.Count
? "_VFP.Objects(1).Name ",_VFP.Objects(1).Name
? "_VFP.Objects(2).Name ",_VFP.Objects(2).Name
? "_VFP.Objects(3).Name ",_VFP.Objects(3).Name

*!* oForm este vizibil, oTextbox si oLabel nu sunt vizibile

? "oForm.oLabel.Name ",oForm.oLabel.Name
oForm.oLabel.Name="Label_Not_In_Form"
? "oForm.oLabel.Name ",oForm.oLabel.
Name
? "oForm.Objects.Count ",oForm.Objects.Count
? "sys(1272,oForm) ",sys(1272,oForm)
? "sys(1272,oTextBox) ",
sys(1272,oTextBox)
? "sys(1272,oForm.oLabel) ",
sys(1272,oForm.oLabel)

*!* Aparent, oForm.oLabel defineste un obiect oLabel instantiat in obiectul oForm. Totusi, nu este asa ...

oForm.AddObject('oCombo','Combobox')
oForm.oCombo.
visible=.t.
? "_VFP.Objects.count ",
_VFP.Objects.count
? "sys(1272,oForm.oCombo) ",sys(1272,oForm.oCombo)

oForm.oCombo.name='ComboBox_In_Form'
? "type('oForm.oCombo.Name') ",type("oForm.oCombo.Name")
? "oForm.Objects.Count ",oForm.
Objects.Count
? "oForm.Objects(1).Name ",oForm.Objects(1).Name
? "sys(1272,oForm.Objects(1)) ",sys(1272,oForm.Objects(1))

DISP MEMO LIKE o*

1. - CREATEOBJECT() si NEWOBJECT() creeaza variabile obiect
   
- object.AddObject() si object.NewObject() creeaza obiecte in ierarhie
2. Obiectele create intr-o ierarhie nu sunt create ca variabile obiect - cel putin, nu sunt vizibile astfel
3. Obiectele instantiate ca variabile sunt referite prin numele variabilei
4. Obiectele instantiate intr-o ierarhie sunt referite prin numele obiectului.
5. Numai obiectele vizuale instantiate intr-un form (sau in _screen) sunt randate (formul este un _screen, sau _screen-ul este un form - in aceeasi ordine ca si oul si gaina)
6. Nu orice obiect instantiat ca o proprietate a altui obiect face parte din ierarhie ...

 
 Acest comportament nu este evident atunci cand se lucreaza cu obiecte non-vizuale.
 
Evident, nu s-a considerat necesar ca aceste lucruri sa fie mentionate in documentatie. Desigur, se poate sa-mi fi scapat mie ...

Daniel Buduru
 11/7/2005 12:46:28 AM
User is offlineEugen Gliga
1052 posts
1st




Re: Variabile obiect si nume de obiecte
 (Romania)
E o mica lipsa de consecventa, care nu s-a considerat necesar sa fie mentionata in documentatie. Si apoi, dupa ce te lovesti o data, de o astfel de problema, a doua oara ti se pare evidenta:)

Oricum, multumesc pt explicatii.


 11/7/2005 1:39:29 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: Variabile obiect si nume de obiecte
 (N/A)

Si eu i-am dat "update" inainte de a reciti formularea .... Prin lipsa mentiunii in documentatie nu m-am gandit variabile si proprietati, ci la punctul 6 - instantierea unui obiect ca proprietate a altui obiect - problema care mi-a dat ceva bataie de cap atunci cand m-am confruntat cu ea pentru prima data. Restul exista in documentatie.


Daniel Buduru
 11/7/2005 1:46:13 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: Variabile obiect si nume de obiecte
 (N/A)

Cum lucreaza intern VFP (cu variabilele):

http://www.foxpert.com/docs/howfoxproworks.en.htm

 


Daniel Buduru
 11/7/2005 10:18:36 PM
User is offlineEugen Gliga
1052 posts
1st




Re: Variabile obiect si nume de obiecte
 (Romania)
Foarte intersant articolul. Acum inteleg de ce nu exista in VFP, un Obiect Cursor. By design, numarul de proprietati sau metode ale unei clase este limitat la 65000.


 11/7/2005 10:43:30 PM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Variabile obiect si nume de obiecte
 (Romania)
Nu sunt sigur ca am inteles mesajul. oObj = CreateObject("cursor") creeaza un obiect cursor. Ce-ai vrut sa spui?
Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 11/7/2005 11:03:47 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Variabile obiect si nume de obiecte
 (N/A)

Cursor ADO, Recordset, cel pe care il transformam in cursor dbf cu rs2dbf


Daniel Buduru
 11/7/2005 11:48:00 PM
User is offlineEugen Gliga
1052 posts
1st




Re: Variabile obiect si nume de obiecte
 (Romania)
In primul moment am crezut ca a aparut asa ceva la versiunea 9 si nu stiu eu.
Nu la tipul asta de obiect m-am referit, ci la ala din ADO la care s-a referit Dan si care nu prea cred ca o sa existe in VFP.


  Visual FoxPro  Clase - VCX si PRG  Variabile obiec...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement