Newsgroup: it.comp.lang.visual-basic
Titolo: Problemi con le classi...

Salve a tutti! Ho il seguente problema con le classi:
Ho un'oggetto ItGrid che contiene un'altro oggetto columns (itgrid.columns)
Columns è un insieme di column (itgrid.columns(index).caption).
Fin quì, no problem.
All'interno della classe columns mi servivano alcune proprietà della classe
ItGrid ed ho risolto metendo dentro a Columns (come da voi giustamente
consigliato) ItGridParent che è un riferimento alla classe ItGrid, così la
posso vedere anche dentro Columns...
Fin quì, no problem.
i problem :)) arrivano quando ho bisogno di alcune proprietà di ItGrid anche
dentro Column...
Ho provato a creare un riferimento come per la classe contenitore Columns ma
non funziona (sarà perchè vi sono più oggetti Column?)... Ho cercato di
settare di volta in volta (quando faccio il columns.add anche il
columns(i).ItGridParent, ma non mi funziona, mi da il seguente errore:
"Chiamata di routine o argomento non valido..."
Ecco tutto il codice che ho utilizzato...
ItGrid.Cls-------------------------
Private Sub PopulateColumns()
    Dim i As Long
    ' Per ogni colonna...
    For i = 0 To GridName.Columns.Count - 1
        If BoundType = gmBoundType.iUnBound Then
            mvarColumns.Add i, "column_" & Str(i), "La colonna" & Str(i),
gmSort.iNoSort, True, 4, False
        Else
            'Set mvarColumns(i).ItGridParent = Me
            Set Columns(i).ItGridParent = Me
            mvarColumns.Add i, "column_" & Str(i), "La colonna" & Str(i),
gmSort.iNoSort, True, 4, False, GridName.Columns(i).Caption
        End If
    Next i
End Sub
Column.Cls------------------------------
Private mvarItGridParent As ItGrid
Public Property Set ItGridParent(ByVal vData As ItGrid)
    Set mvarItGridParent = vData
End Property
Public Property Get ItGridParent() As ItGrid
    Set ItGridParent = mvarItGridParent
End Property
---------------------------------------------------
Datemi una mano, per carità!
Grazie 10000000000
SebaMix

Scusate, ma OutLook Express mi aveva detto di non essere riuscito a postare
questo msg, cosě l'ho ripostato...
Non lo faccio piů! :(((
SebaMix

End Property
Non ho capito bene perchè ma è capitato anche a me.
Da una parte funziona e dall'altra no.
Probabilmente mi sfugge qualcosa.
Comunque, se azichè
    Private mvarItGridParent As ItGrid
fai
    Private mvarItGridParent As Object ' o As Control
Dovresti risolvere il problema.
L'unica cosa è che così perdi i vantaggi dell'intellisense sulle proprietà
specifiche della tua classe.
Ciao

Ho risolto così:
Nella classe che viene "replicata" nell'insieme (scusa i miei termini POCO
tecnici ma le classi me le sto imparando ora) ho messo questo:
Private mvarItGridParent As ItGrid
Public Property Set ItGridParent(ByVal vData As ItGrid)
    Set mvarItGridParent = vData
End Property
Public Property Get ItGridParent() As ItGrid
    Set ItGridParent = mvarItGridParent
End Property
Poi nella classe "contenitore", nel metodo ADD ho infilato questo codice:
Public Function Add(id As Long, Nome As String, Caption As String, Sort As
Byte, Visibile As Boolean, Formato As Integer, IsLocked As Boolean, Optional
DataField As String, Optional sKey As String) As Column
    'crea un nuovo oggetto
    Dim objNewMember As Column
    Set objNewMember = New Column
    ' Qui imposto l'oggetto parent per il nuovo "elemento" dell'insieme...
    Set objNewMember.ItGridParent = ItGridParent
    'imposta le proprietà passate al metodo
    objNewMember.id = id
    objNewMember.Nome = Nome
    objNewMember.Caption = Caption
    ...
    ...
    ...
End Function
Da me funziona benissimo (VB6.0proSP4+WIN2K)!
CiaoZ!
SebaMix