Differenze tra le versioni di "Richiamare un Metodo di un oggetto con la Classe Object"
(2 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[]". |
− | Qualora tale | + | 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, ..., ...)'' | ''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 20: | 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] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | For j = 0 To l - 1 | + | 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 56: | 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 71: | 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