Richiamare un Metodo di un oggetto con la Classe Object

Da Gambas-it.org - Wikipedia.
Versione del 7 dic 2013 alle 18:39 di Vuott (Discussione | contributi) (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...')

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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.

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