Newsgroup: it.comp.lang.visual-basic
Titolo: Problemi con Property Let

La seguente è una semplice classe:
Option Explicit
Private firstName As String
Private lastName As String
Private Sub Class_Initialize()
    firstName = ""
    lastName = ""
End Sub
Public Property Let Let_firstName(ByVal nome As String)
    If nome = "" Then MsgBox ("Inserire Nome") Else firstName = nome
End Property
Public Property Let Let_lastName(ByVal cognome As String)
    If cognome = "" Then MsgBox ("Inserire Cognome") Else lastName = nome
End Property
Public Property Get Get_firstName() As String
    Get_firstName = firstName
End Property
Public Property Get Get_lastName() As String
    Get_lastName = lastName
End Property
Il seguente è un altrettanto semplice Form:
Option Explicit
Dim pers As New clsPersona
Private Sub cmdRead_Click()
    txtNome = pers.Get_firstName
    txtCognome = pers.Get_lastName
End Sub
Private Sub cmdWrite_Click()
    pers.Let_firstName (CStr(txtNome.Text)) '(*)
    pers.Let_lastName (CStr(txtCognome.Text))
End Sub
Se richiamo la Sub cmdRead_Click() è tutto OK, ma se richiamo la Sub
cmdWrite_Click()
mi genera un errore di compilazione: "Utilizzo non valido di Propery" (*)
Non capisco!!!!!
Grazie.

Non so penso che hai fatto un po si confuzione.. da una okkiata alle
MSDN.... se non ce l'hai ecco gli esempi:
Dim CurrentColor As Integer
Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3
' Imposta la proprietą di colore della penna per
' un'applicazione di disegno.
' La variabile a livello di modulo CurrentColor viene
' impostata su un valore numerico che identifica il
' colore usato per disegnare.
Property Let PenColor(ColorName As String)
   Select Case ColorName      ' Controlla la stringa del nome del colore.
      Case "Rosso"
         CurrentColor = RED   ' Assegna un valore per Rosso.
      Case "Verde"
         CurrentColor = GREEN' Assegna un valore per Verde.
      Case "Blu"
         CurrentColor = BLUE   ' Assegna un valore per Blu.
      Case Else
         CurrentColor = BLACK' Assegna il valore predefinito.
   End Select
End Property
' La riga di codice seguente consente di impostare
' la proprietą PenColor per un'applicazione
' di disegno chiamando la routine Property Let.
PenColor = "Rosso"
<<<Mentre per il Get:>>>>
Dim CurrentColor As Integer
Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3
' Restituisce il colore corrente della penna in
' forma di stringa
Property Get PenColor() As String
   Select Case CurrentColor
      Case RED
         PenColor = "Rosso"
      Case GREEN
         PenColor = "Verde"
      Case BLUE
         PenColor = "Blu"
   End Select
End Property
' La riga di codice seguente consente di ottenere il
' colore della penna chiamando la routine Property Get.
ColorName = PenColor
Cmq ti consiglio di dare una okkiata alle MSDN prima di postare qui.. anche
se spesso sono un po ingarbugliate .. basta cercare!!!

A parte il fatto che c'è qualche errore di sintassi, credo tu debba dare un
occhio a come si utilizzano le properties
Private Sub cmdWrite_Click()
    pers.Let_firstName=txtNome.Text
    pers.Let_lastName=txtCognome.Text
End Sub
La proprietà text è gia una string quindi il casting è superfluo...
Ciao
Corrado

 End Sub
 L'errore è semplice: ricorda che stai impostando una proprietà e non
richiamando un metodo!!!!
Se let_first name fosse un metodo allora quello che hai scritto andrebbe
bene me essendo stato dichiarato come property
la sintassi è la seguente:
pers.let_firstname=cstr(txtnome.text)
prova e non dovrebbe darti errori!!!
Ciao, Peppe