Newsgroup: it.comp.lang.visual-basic
Titolo: ItemData o ListIndex?

Little Problem!
Ho una classe CImpiegato:
Private PosizioneAziendale as String
---------------------------------------
Public Property Get PosizioneAziendale() As String
PosizioneAziendale= frmProfilo.cboPosizioneAziendale.ListIndex
End Property
---------------------------------------
Public Property Let PosizioneAziendale(ByVal vNewValue As String)
mstrPosizioneAziendale = PosizioneAziendale
End Property
---------------------------------------
Il mio problema è che la PropertyGet mi da come risultato dei numeri
anzichè la PosizioneAziendale che l'utente scelgie nel profilo.
Come devo fare per far si che la PropertyGet mi dia il risultato giusto
(nella cboPosizioneAziendale.ListIndex ci sono 3 scelte ossia:
Segretario; Turnista o CapoUfficio)
Debby ----)@

 anzichč la PosizioneAziendale che l'utente scelgie nel profilo.
Come da guida, la property ListIndex di un Combo(List)Box restituisce
l'indice dell'elemento selezionato, mentre la property Text restituisce il
testo; per avere il testo anche degli altri elementi puoi invece usare
.List(i)
Piuttosto, se mi permetti, sono un po' perplesso su come hai definito questa
property, dato che apparentemente memorizzi il valore in una stringa privata
quando fai la Let, ma lo rileggi sempre direttamente dalla form quando fai
la Get; il che vuol dire che la variabile strPosizioneAziendale e'
disallineata rispetto al valore della proprieta', o quanto meno che devi
allineare sempre entrambi esternamente alla classe.
Se la classe e' solo un wrapper per la form, allora e' poco utile salvare il
valore a parte, se invece deve poter rappresentare n istanze di un oggetto
Impegato allora non e' corretto utilizzare i campi della form come origine
dei dati.
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 dei dati.
Praticamente in una form che ho chiamato frmProfilo l'utente compila il
proprio
profilo aziendale. In una combobox ho inserito le 3 figure dell'impiegato
[cboPosizioneAziendale.ListIndex]
0 - CapoUffico
1 - Turnista
2 - Segretaria
Queste scelte, che fa l'utente, sono fondamentali per trovare il valore di
altri
oggetti nella classe CUtente
La prima cosa che mi è venuta in mente è di farla cosi, non sono pratica con
la programmazione ad oggetti anzi sono alle prime armi ma ho già avuto delle
belle sorprese
Debby -------)@

 ---------------------------------------
Allora quello che ti avevo scritto l'altro giorno non l'avevi capito.... :(
ciaociao

No.... non lo avevo e probabilmente non l'ho capito ancora
Alcune volte mi trattengo dal commentare le vostre risposte perchè mi sento
scema e mi chiedo; ma è mai possibile che non riesca a capire quello che per
altri è semplice, quindi mi rituffo a leggere e rileggere quei capitoli che
ormai conosco a memoria.
Comunque stacco la spina per un pò che sono fusa rientro Lunedi
Marg... non mi prendere per matta!
Debby  -----)@

------------------------------------------
Marg mi ha scritto:
Allora:
La Property Let serve per impostare il valore della proprietà nella tua
classe; infatti come vedi ha un parametro in ingresso (vNewValue) che
'contiene' il valore che tu imposti quando vuoi settare la proprietà. Quindi
se vuoi impostare una proprietà della tua classe scrivi una cosa del tipo:
Impiegato.Nome="Pippo". In questo caso vNewValue contiene "Pippo" e la
variabile Private mstrNome sarà valorizzata con "Pippo". Di conseguenza
quando vuoi leggere il valore della proprietà scrivi:
NomeImpiegato=Impiegato.Nome e a questo punto ti viene restituito il valore
della variabile mstrNome.
Lo so che non sono stato molto chiaro, ma spero tu abbia capito lo stesso!
;-)
--------------------------------------
Concettualmente penso di aver capito ma evidentemente mi perdo qualcosa:
PosizioneAziendale = Scelta nella ComboBox
NewValue contiene la scelta fatta
di consegenza quando voglio leggere
il valore  di questa variabile dichiaro la classe
nella funzione
Dim Impiegato as new CImpiegato
e poi scrivo
Qualifica=Impiegato.PosizioneAziendale
no?

 no?
Questo è corretto, ma il valore che ti viene restituito è sbagliato, perchè
in pratica nella property Let della classe non assegni alla variabile il
valore di NewValue!
provo a descrivere passo-passo:
Dim Impiegato as new CImpiegato
'qui assegni il valore alla property (poniamo che Scelta contenga
"DIRIGENTE")
Impiegato.PosizioneAziendale=Scelta
'a questo punto vediamo cosa succede nella classe
Public Property Let PosizioneAziendale (NewValue as String)
'qui NewValue contiene "DIRIGENTE", quindi alla variabile privata della
classe devi assegnare NewValue!
'altrimenti poi quando anrdai a leggere la property ti verrà restituita una
stringa vuota!
s_posizioneaziendale=NewValue
End Property
'torniamo alla funzione e leggiamo il valore della property
PosizioneAziendale
s_DimmiLaTuaPosizioneAziendale = Impiegato.PosizioneAziendale
'ora vediamo cosa succede nella classe
Public Property Get PosizioneAziendale () as String
'qui noi dobbiamo restituire il valore salvato in precedenza nella variabile
privata s_posizioneaziendale (che contiene "DIRIGENTE")
PosizioneAziendale = s_posizioneaziendale
End Property
a questo punto nella nostra funzione abbiamo il valore desiderato.
il tuo errore sta nel fatto che nelle Property Let non assegni mai il valore
di NewValue alle variabili private, ed è per questo che non hai di ritorno i
valori che vorresti! :)
capito ora?
ciaociao