Differenze tra le versioni di "Richiamare un Metodo di un oggetto con la Classe Object"
Riga 3: | Riga 3: | ||
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. ''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 | + | Laddove ''Oggetto'' è l'oggetto di cui viene richiamato il ''Metodo'' che verrà indicato come stringa. ''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 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, ..., ...)'' | ||
+ | |||
+ | La funzione ''Object.Call()'' ritorna il valore previsto per quel Metodo. | ||
Versione delle 13:13, 14 mag 2014
E' possibile richiamare dinamicamente ed utilizzare un Metodo di un oggetto mediante la funzione .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. 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 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, ..., ...)
La funzione Object.Call() ritorna il valore previsto per quel Metodo.
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