+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Gestione Textbox tramite una classe

  1. #1
    L'avatar di mrk88
    mrk88 non è in linea Novello
    Luogo
    Toscana
    Post
    33

    Gestione Textbox tramite una classe

    Premetto che il code è scritto in VBA per Access 2007.
    Ho necessita di gestire le caselle di testo tramite una classe, però quando richiamo una funzione pubblica della classe mi si genera il seguete errore:
    codice:
    Errore di Rutin-Time '438'
    Proprietà o metodo non supportato dall'oggetto
    il codice della classe è il seguente:
    codice:
    Option Compare Database
    Option Explicit
    
    Private WithEvents my_txt As Access.TextBox
    
    Dim valore As String
        
    Private Sub class_initialize()
        Set my_txt = Nothing
        valore = ""
    End Sub
    
    Private Sub class_unload()
        Set my_txt = Nothing
    End Sub
    
    Public Property Get testo() As String
        If valore = "" Then
            testo = my_txt
        Else
            testo = valore
        End If
    End Property
    
    Public Property Let testo(value As String)
        my_txt = testo
    End Property
    
    Public Property Get blocco() As Boolean
        blocco = my_txt.Locked
    End Property
    
    Public Property Let blocco(loock As Boolean)
        my_txt.Locked = loock
    End Property
    
    Public Property Let assegna(ByRef ctxt As Access.TextBox)
        Set my_txt = ctxt
    End Property
    
    Private Sub my_txt_BeforeUpdate(Cancel As Integer)
        errore_state False
    End Sub
    
    Public Function errore_state(stato As Boolean)
        
        Select Case stato
            Case True
                my_txt = ""
                my_txt.BorderColor = RGB(255, 140, 0)
                my_txt.BorderStyle = 1
                my_txt.BorderWidth = 2
                'my_txt.SetFocus
            Case False
                my_txt.BorderStyle = 1
        End Select
    End Function
    Tramite il debug, ho visto che l'errore si genera quando chiamo la funzione 'errrore_state' con argomento uguale a True, e più precisamente sulla proprietà:
    codice:
    my_txt.BorderColor = RGB(255, 140, 0)
    Come mai? cosa ho sbagliato?
    M.R.K.


  2. #2
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,456
    Mi pare tu non abbia dato le infomrazioni necessarie, e che ci sia un pò di confusione...!
    Tratti in modo anomalo l'oggetto [my_txt] senza assegnarlo...

    Gli oggetti si assegnano usando Property SET tu invece fai questo
    codice:
    Public Property Let testo(value As String)
        my_txt = testo
    End Property
    ma l'oggetto [my_txt] non è una stringa è un Controllo... quindi si fa così
    codice:
    Public Property Set Testo(Oggetto as Acces.TextBox)
        SET my_txt = Oggetto
    End Property
    La dichiarazione poi di eredità degli EVENTI non serve a nulla se non definisci "Event Procedure"...

    Riassumendo la classe è sbagliata e mi pare tu abbia molta confusione.

    Ci sono miei esempi specifici per l'uso delle Classi ti suggerisco di dare un'occhiata alla sezione HOW...TO....
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  3. #3
    L'avatar di mrk88
    mrk88 non è in linea Novello
    Luogo
    Toscana
    Post
    33
    Grazie mille

    ho corretto quella proprietà da let a Set e adesso funziona

    M.R.K.


+ Rispondi al Thread

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi