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

Da Gambas-it.org - Wikipedia.
Riga 4: Riga 4:
 
  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 contenerli e passarli, è possibile utilizzare un vettore di tipo ''Object[]''.
 
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[]''.
 +
 +
La funzione ''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''":
 
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, ..., ...)''
 
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[].

La funzione 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