Differenze tra le versioni di "Richiamare un Metodo di un oggetto con la Classe Object"
(Creata pagina con 'E' possibile richiamare dinamicamente ed utilizzare un Metodo di un oggetto mediante la funzione ''.Call()'' della Classe ''Object''. La sintassi è la seguente: Object.Call...') |
|||
(5 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
− | E' possibile richiamare dinamicamente ed utilizzare | + | E' possibile richiamare dinamicamente ed utilizzare il Metodo di un oggetto mediante il Metodo "<B>.Call()</b>" della Classe ''Object''. |
La sintassi è la seguente: | La sintassi è la seguente: | ||
Object.Call ( Oggetto As Object, Metodo As String [ , Argomenti As Array ] ) As Variant | Object.Call ( Oggetto As Object, Metodo As String [ , Argomenti As Array ] ) As Variant | ||
− | Laddove ''Oggetto'' è l'oggetto di cui viene richiamato il ''Metodo'' che verrà indicato come stringa | + | Laddove: ''Oggetto'' è l'oggetto di cui viene richiamato il ''Metodo'' che verrà indicato come stringa, e ''Argomenti'' è un array (vettore) degli argomenti previsti e passati al ''Metodo'' dell'oggetto. Se il Metodo non prevede argomenti, questo terzo parametro può essere omesso. Se gli argomenti sono più di uno e di diverso tipo, per contenerli e passarli, è possibile utilizzare un vettore di tipo "Object[]". |
− | + | Il Metodo "Object.Call()" ritorna il valore previsto per quel Metodo. | |
+ | |||
+ | Qualora tale Metodo "Object.Call()" venga utilizzato in un'applicazione ''a riga di comando'', per richiamare le funzioni presenti nel Modulo principale il primo parametro "''Object As Object'' " sarà la parola "Me": | ||
+ | ''Object.Call(Me, ..., ...)'' | ||
===Esempi pratici=== | ===Esempi pratici=== | ||
− | Vediamo di seguito un esempio in cui viene richiamato il Metodo | + | Vediamo di seguito un esempio in cui viene richiamato il Metodo ".Read()" della Classe Byte[]: |
'''Public''' Sub Button1_Click() | '''Public''' Sub Button1_Click() | ||
Riga 17: | Riga 20: | ||
Dim ff As New File[] | Dim ff As New File[] | ||
Dim j As Byte | Dim j As Byte | ||
− | |||
− | + | s = "<FONT color=gray>''/percorso/di/un/file''</font>" | |
+ | |||
+ | l = Stat(s).Size | ||
− | + | bb = New Byte[Stat(s).Size] | |
− | |||
− | |||
− | |||
− | |||
− | ff.Add(fl) | + | fl = Open s For Read |
− | + | ||
− | + | ff.Add(fl) | |
− | + | ||
− | + | <FONT color=#B22222>Object.Call(bb, "Read", ff)</font> | |
− | + | ||
− | + | Print bb.Count | |
− | + | ||
− | + | For j = 0 To l - 1 | |
+ | Print bb[j] | ||
+ | Next | ||
'''End''' | '''End''' | ||
− | + | In quest'altro esempio, invece, l'oggetto è una ''Label'', e verrà richiamato il suo Metodo ".Delete". Inoltre, sul ''Form'' è posto sin dall'inizio un ''Button'': | |
− | + | Private lb As Label | |
− | In quest'altro esempio, invece, l'oggetto è una ''Label'', e verrà richiamato il suo Metodo | ||
− | |||
Riga 53: | Riga 53: | ||
'''End''' | '''End''' | ||
− | |||
'''Public''' Sub Button1_Click() | '''Public''' Sub Button1_Click() | ||
− | + | <FONT color=#B22222>Object.Call(lb, "Delete")</font> | |
'''End''' | '''End''' | ||
− | + | In questo terzo esempio viene caricato un file di testo mediante il solito Metodo ".Load()" della Classe ''File'': | |
− | |||
− | In questo terzo esempio viene caricato un file di testo mediante il solito | ||
'''Public''' Sub Button1_Click() | '''Public''' Sub Button1_Click() | ||
Riga 68: | Riga 65: | ||
Dim ss As New String[] | Dim ss As New String[] | ||
− | + | percorsoFile = "<FONT color=gray>''/percorso/di/un/file/di/testo''</font>" | |
− | |||
− | + | ss.Add(percosoFile) | |
− | + | s = <FONT color=#B22222>Object.Call(File, "Load", ss)</font> | |
− | + | Print s | |
'''End''' | '''End''' |
Versione attuale delle 09:53, 25 dic 2021
E' possibile richiamare dinamicamente ed utilizzare il Metodo di un oggetto mediante il Metodo ".Call()" della Classe Object.
La sintassi è la seguente:
Object.Call ( Oggetto As Object, Metodo As String [ , Argomenti As Array ] ) As Variant
Laddove: Oggetto è l'oggetto di cui viene richiamato il Metodo che verrà indicato come stringa, e Argomenti è un array (vettore) degli argomenti previsti e passati al Metodo dell'oggetto. Se il Metodo non prevede argomenti, questo terzo parametro può essere omesso. Se gli argomenti sono più di uno e di diverso tipo, per contenerli e passarli, è possibile utilizzare un vettore di tipo "Object[]".
Il Metodo "Object.Call()" ritorna il valore previsto per quel Metodo.
Qualora tale Metodo "Object.Call()" venga utilizzato in un'applicazione a riga di comando, per richiamare le funzioni presenti nel Modulo principale il primo parametro "Object As Object " sarà la parola "Me":
Object.Call(Me, ..., ...)
Esempi pratici
Vediamo di seguito un esempio in cui viene richiamato il Metodo ".Read()" della Classe Byte[]:
Public Sub Button1_Click() Dim s As String Dim l As Long Dim fl As File Dim ff As New File[] Dim j As Byte s = "/percorso/di/un/file" l = Stat(s).Size bb = New Byte[Stat(s).Size] fl = Open s For Read ff.Add(fl) Object.Call(bb, "Read", ff) Print bb.Count For j = 0 To l - 1 Print bb[j] Next End
In quest'altro esempio, invece, l'oggetto è una Label, e verrà richiamato il suo Metodo ".Delete". Inoltre, sul Form è posto sin dall'inizio un Button:
Private lb As Label Public Sub Form_Open() With lb = New Label(Me) .W = 100 .H = 50 .Background = Color.Yellow End With End Public Sub Button1_Click() Object.Call(lb, "Delete") End
In questo terzo esempio viene caricato un file di testo mediante il solito Metodo ".Load()" della Classe File:
Public Sub Button1_Click() Dim percorsoFile, s As String Dim ss As New String[] percorsoFile = "/percorso/di/un/file/di/testo" ss.Add(percosoFile) s = Object.Call(File, "Load", ss) Print s End