Differenze tra le versioni di "Richiamare un Metodo di un oggetto con la Classe Object"
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 13: | Riga 13: | ||
===Esempi pratici=== | ===Esempi pratici=== | ||
Vediamo di seguito un esempio in cui viene richiamato il Metodo ".Read()" della Classe Byte[]: | Vediamo di seguito un esempio in cui viene richiamato il Metodo ".Read()" della Classe Byte[]: | ||
− | + | Public Sub Button1_Click() | |
Dim s As String | Dim s As String | ||
Riga 21: | Riga 21: | ||
Dim j As Byte | Dim j As Byte | ||
− | s = "<FONT color= | + | s = "<FONT color=darkgreen>''/percorso/di/un/file''</font>" |
l = Stat(s).Size | l = Stat(s).Size | ||
Riga 39: | Riga 39: | ||
Next | 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'': | 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 | Private lb As Label | ||
− | + | Public Sub Form_Open() | |
With lb = New Label(Me) | With lb = New Label(Me) | ||
Riga 52: | Riga 52: | ||
End With | End With | ||
− | + | End | |
− | + | ||
+ | Public Sub Button1_Click() | ||
<FONT color=#B22222>Object.Call(lb, "Delete")</font> | <FONT color=#B22222>Object.Call(lb, "Delete")</font> | ||
− | + | 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 Metodo ".Load()" della Classe ''File'': | ||
− | + | Public Sub Button1_Click() | |
Dim percorsoFile, s As String | Dim percorsoFile, s As String | ||
Dim ss As New String[] | Dim ss As New String[] | ||
− | percorsoFile = "<FONT color= | + | percorsoFile = "<FONT color=darkgreen>''/percorso/di/un/file/di/testo''</font>" |
ss.Add(percosoFile) | ss.Add(percosoFile) | ||
Riga 73: | Riga 74: | ||
Print s | Print s | ||
− | + | End |
Versione attuale delle 13:03, 20 giu 2024
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