Ergo, pensavo di realizzarlo come un blocco a sè.
Ho provato a creare un modulo.... ma poi non sono riuscito ad usarlo (sono alle prime armi)
Altri, più esperti di me, potranno darti delucidazioni precise, migliori e più approfondite; io mi limiterò, perdonami, a darti qualche informazione semplice e basilare.
Da quello che mi pare di aver capito la impostazione del
modulo a sé stante l'hai già fatta. Provo
ad aggiungere solo qualche semplice notizia.
Poniamo il caso che il tuo modulo si chiami "
kikko.module" e che al suo interno vi sia una sola funzione... che magari (tanto per fare un esempio) effettui una semplice unione di due stringhe, una delle quali sarà passata dalla routine chiamante, per ottenerne alla fine una sola.
Dunque, nella
classe principale FMain.class avremo:
Public Sub Button1_Click()
Dim nome As String
' Chiamiamo la funzione "unisciStringhe" contenuta nel modulo "kikko.module",
' e le passiamo contemporaneamente la stringa "kik", affinché la elabori.
' Ci attendiamo il ritorno - dal Modulo - di un'altra stringa che sarà al suo "ritorno" inserita
' nella variabile di tipo Stringa che abbiamo chiamato "nome".
' Poiché la funzione "unisciStringhe" si trova nel modulo "kikko.module" dobbiamo specificarlo:
nome = kikko.unisciStringhe("kik")
' vedremo in console la stringa finale:
Print nome
End
nel
modulo kikko.module, invece, avremo la funzione vera e propria:
'Riceve una stringa che va ad inserire nella variabile "a",
' e restituirà una stringa (ecco perché As String)
' alla funzione chiamante nella routine della classe principale "FMain.class":
Public Function unisciStringhe(a As String) As String
Dim b As String
' svolge l'operazione precipua della funzione
' per la quale è stata chiamata, ossia unire
' la stringa ricevuta con "ko !" :
b = a & "ko !"
' restituisce alla funzione chiamante la stringa finale
Return b
End
In console avremo coerentemente la scritta:
kikko !
La definizione "
Function unisciStringhe(a As String) As String" può essere - per certi versi - così banalmente spiegata:
questa è una Funzione di nome "unisciStringhe", che ha la capacità di ricevere una stringa - che sarà inserita nella variabile "a" - , e che a sua volta restituirà una Stringa alla funzione principale chiamante.
Potremmo ovviamente avere anche situazioni più complesse:
Public Function complessa(a As String, by As Byte) As Integer
in tal caso, diremmo - ...lo dico sempre in termini banali, non tecnici - che la funzione ha sostanzialmente la capacità di ricevere sia un valore di tipo Stringa, sia un valore di tipo Byte.... e però restituisce alla funzione
chiamante un valore di tipo
Integer.
Poniamo il caso che tu voglia richiamare nel modulo un oggetto o una variabile presente in un'altra classe, ad esempio in quella principale. In tal caso dovrai rendere pubblici i simboli dei moduli ed in particolare i controlli dei Form, in questo modo:
1) nell'IDE di Gambas (dove programmi) in alto a sinistra clicca su "Progetto";
2) scegli "Proprietà";
3) nella finestra di dialogo che appare, clicca sulla scheda "Opzioni";
4) cambia in
SI i due campi afferenti alla "Compilazione".
Ovviamente le variabili che vuoi utilizzare devono essere
globali e dichiarate come
Public.
A questo punto, sempre restando nell'esempio di sopra mettiamo che dal modulo tu voglia cambiare il colore del Button1 presente sul Form (e che quindi sarebbe gestito normalmente in FMain.class). Avremo:
Public Function unisciStringhe(a As String) As String
Dim b As String
b = a & "ko !"
' Dopo aver effettuato l'operazione cambio da qui,
' ossia dal Modulo, il colore del Button1 sul Form principale.
' Poiché appartiene alla classe principale, lo specifico:
FMain.Button1.Background = Color.Red
Return b
End
Il colore di Button1 muta in rosso.
Se impari a fare le chiamate delle Funzioni, sarà un gioco da ragazzi poi per te effettuare in futuro anche le chiamate a funzioni esterne mediante
Extern.