Differenze tra le versioni di "Richiamare un Metodo di un oggetto con la Classe Object"

Da Gambas-it.org - Wikipedia.
(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...')
 
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.
+
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, è possibile utilizzare un vettore di tipo ''Object[]''.
  
 
Tale funzione ''Object.Call()'' ritorna il valore previsto per quel Metodo.
 
Tale funzione ''Object.Call()'' ritorna il valore previsto per quel Metodo.

Versione delle 18:40, 7 dic 2013

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, è possibile utilizzare un vettore di tipo Object[].

Tale 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