Il problema riscontrato dipende da come Gambas "costruisce" gli oggetti di tipo Class.
Per distinguere fra una classe di tipo statica ed una di tipo dinamica adotta un sistema al tempo stesso semplice e stupido.
Si tratta di inserire nella classe il metodo _New() e di fare un assegnamento di variabile qualsiasi all'interno di questo metodo in modo tale da far capire a Gambas che la classe può essere ineritata. Esempio di codice:
' Gambas class file
PRIVATE Variabile as Integer
PUBLIC SUB _new()
Variabile = 1
END SUB
Ovviamente l'assegnazione può interessare una variabile realmente usata: ad esempio azzerare un eventuale contatore utilizzato da qualche altra parte.
Se Gambas non trova il metodo _New() assume che la classe sia statica e non può quindi ineritare nuove classi, non si può cioè scrivere del codice come il seguente in un form:
PUBLIC SUB Metodo_qualsiasi()
DIM cMiaClasse AS New MiaClasse
....
END SUB
@leo
Non so quindi se ho fatto bene a costruire una funzione di classe in questo modo, ma a quanto pare funziona, e non mi sono posto altri problemi.
Ma siccome sono un po curioso per natura, mi piacerebbe sapere il tuo parere in merito.
Questa funzione inserita in una classe mi serve per popolare tutte le combo nei diversi form
STATIC PUBLIC FUNCTION popola_combo(cbx AS ComboBox, campo AS String, comando AS String)
'cbx=nomecombo - campo=nomedicampotabella - comando=comandoselect
DIM res_popola_combo AS Result
DIM totrecords AS Integer
DIM contatore AS Integer
DIM connessione AS NEW Connection
WITH connessione
.Name = Avvio.cartellaDB & Avvio.nomeDB
.Type = "sqlite3"
.Open
res_popola_combo = .Exec(comando)
END WITH
WITH res_popola_combo
totrecords = .Count - 1
FOR contatore = 0 TO totrecords
.MoveTo(contatore)
cbx.Add(res_popola_combo[campo])
NEXT
END WITH
CATCH
Message.Error(Error.Text)
connessione.Close
END