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

Da Gambas-it.org - Wikipedia.
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()
+
  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=gray>''/percorso/di/un/file''</font>"
+
   s = "<FONT color=darkgreen>''/percorso/di/un/file''</font>"
 
   
 
   
 
   l = Stat(s).Size
 
   l = Stat(s).Size
Riga 39: Riga 39:
 
   Next
 
   Next
 
   
 
   
  '''End'''
+
  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()
+
  Public Sub Form_Open()
 
    
 
    
 
   With lb = New Label(Me)
 
   With lb = New Label(Me)
Riga 52: Riga 52:
 
   End With
 
   End With
 
      
 
      
  '''End'''
+
  End
 
   
 
   
  '''Public''' Sub Button1_Click()
+
   
 +
Public Sub Button1_Click()
 
   
 
   
 
   <FONT color=#B22222>Object.Call(lb, "Delete")</font>
 
   <FONT color=#B22222>Object.Call(lb, "Delete")</font>
 
   
 
   
  '''End'''
+
  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()
+
  Public Sub Button1_Click()
 
   
 
   
 
   Dim percorsoFile, s As String
 
   Dim percorsoFile, s As String
Riga 73: Riga 74:
 
   Print s
 
   Print s
 
   
 
   
  '''End'''
+
  End

Versione delle 12:59, 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