Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    [VB6] Problema con una classe

    Salve, ho il seguente problema. Vi posto il codice:

    1) La classe si chiama "MainClass.cls" e c'è questo codice:

    codice:
    Option Explicit
    Private fieldUser() As TipoDati
    
    Private Type TipoDati
        Type As String
        Desc As String
        Enabled As Boolean
    End Type
    
    Private Sub Class_Initialize()
        ReDim fieldUser(6)
        
        fieldUser(0).Type = "cod"
        fieldUser(0).Desc = "Codice"
        fieldUser(0).Enabled = False
       
        fieldUser(1).Type = "text"
        fieldUser(1).Desc = "Nome"
        fieldUser(1).Enabled = True
       
        fieldUser(2).Type = "text"
        fieldUser(2).Desc = "Cognome"
        fieldUser(2).Enabled = True
       
        fieldUser(3).Type = "date"
        fieldUser(3).Desc = "Data di nascita"
        fieldUser(3).Enabled = True
       
        fieldUser(4).Type = "num"
        fieldUser(4).Desc = "Età"
        fieldUser(4).Enabled = False
        
        fieldUser(5).Type = "text"
        fieldUser(5).Desc = "Sesso"
        fieldUser(5).Enabled = True
        
        fieldUser(6).Type = "text"
        fieldUser(6).Desc = "Comune di nascita"
        fieldUser(6).Enabled = True
    End Sub
    
    Property Get getFieldUser() As Variant
        getFieldUser = fieldUser
    End Property
    2) Poi ho un form chiamato "FrmMain.frm" e dentro c'è:

    codice:
    Private mClass As MainClass
    
    Private Sub Form_Load()  
        '// Richiama la classe principale
        Set mClass = New MainClass
        c = mClass.getFieldUser
    End Sub
    Ecco appena esegue il codice:

    c = mClass.getFieldUser

    entra nella classe e nel metodo "getFieldUser()".
    Appena ci entra VB6 va in debug e mi dice il seguente errore:

    Errore di compilazione:

    Solo i tipi definiti dall'utente in moduli di oggetto pubblici possono essere assegnati a o da una variabile Variant oppure passati a funzioni per cui è prevista l'associazione tardiva.
    A questo punto non so che fare.

    Grazie per un eventuale aiuto

  2. #2
    prova a dichiarare la variabile 'c' come tipo restituito dal metodo di classe che richiami...
    mic

  3. #3
    Graziieeeeee

    Ho dichiarato "c" come:

    codice:
    Dim c As Object

  4. #4
    beh.... cosi' hai utilizzato la dichiarazione più generica...

    prova se funziona dichiarandolo di tipo TipoDati cioè quello che è in realtà
    mic

  5. #5
    Ho provato a mettere dopo il form_load:
    codice:
    Dim c() As TipoDati
    Però sono stato costretto a ricopiare il TYPE anke nel form, altrimenti l'AS non me lo vedeva perchè è privato nella classe. E mettendo pubblico nella classe da errore:
    codice:
    Private Type TipoDati
        Type As String
        Desc As String
        Enabled As Boolean
    End Type
    Mo però rigenera l'errore iniziale su:
    codice:
    Property Get getFieldUser() As Variant
        getFieldUser = fieldUser
    End Property

  6. #6
    così no ---> Dim c() As TipoDati


    così si ---> Dim c As TipoDati
    mic

  7. #7
    ok mo però lerrore iniziale capita su:

    c = mClass.getFieldUser


  8. #8
    che errore ti da?
    Forse protesta perchè vuole che la variabile 'c' sia un' array di TipoDati?
    mic

  9. #9
    L'errore che si era presentato all'inizio.

    Bè penso di si, perchè "c" dovrebbe essere in teoria un array, visto che la funziona gli passa un array oggetto. O sbaglio?

  10. #10
    Niente non riesco proprio ad uscirne fuori!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.