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...')
 
 
(5 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
E' possibile richiamare dinamicamente ed utilizzare un Metodo di un oggetto mediante la funzione ''.Call()'' della Classe ''Object''.
+
E' possibile richiamare dinamicamente ed utilizzare il Metodo di un oggetto mediante il Metodo "<B>.Call()</b>" della Classe ''Object''.
  
 
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, 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[]".
  
Tale funzione ''Object.Call()'' ritorna il valore previsto per quel Metodo.
+
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===
 
===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()
 
   
 
   
Riga 17: Riga 20:
 
   Dim ff As New File[]
 
   Dim ff As New File[]
 
   Dim j As Byte
 
   Dim j As Byte
 
 
 
   
 
   
  s = "''/percorso/di/un/file''"
+
  s = "<FONT color=gray>''/percorso/di/un/file''</font>"
 +
 +
  l = Stat(s).Size
 
   
 
   
  l = Stat(s).Size
+
   bb = New Byte[Stat(s).Size]
    
 
  bb = New Byte[Stat(s).Size]
 
   
 
  fl = Open s For Read
 
 
      
 
      
   ff.Add(fl)
+
  fl = Open s For Read
   
+
    
  <FONT color=#B22222>Object.Call(bb, "Read", ff)</font>
+
  ff.Add(fl)
   
+
 
  Print bb.Count
+
  <FONT color=#B22222>Object.Call(bb, "Read", ff)</font>
   
+
 
  For j = 0 To l - 1
+
  Print bb.Count
    Print bb[j]
+
 
  Next
+
  For j = 0 To l - 1
 +
    Print bb[j]
 +
  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'':
 
+
  Private lb As Label
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
 
 
   
 
   
 
   
 
   
Riga 53: Riga 53:
 
      
 
      
 
  '''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()
 
   
 
   
Riga 68: Riga 65:
 
   Dim ss As New String[]
 
   Dim ss As New String[]
 
   
 
   
+
  percorsoFile = "<FONT color=gray>''/percorso/di/un/file/di/testo''</font>"
  percorsoFile = "''/percorso/di/un/file/di/testo''"
 
 
    
 
    
  ss.Add(percosoFile)
+
  ss.Add(percosoFile)
 
    
 
    
  s = Object.Call(File, "Load", ss)
+
  s = <FONT color=#B22222>Object.Call(File, "Load", ss)</font>
 
   
 
   
  Print s
+
  Print s
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione attuale delle 09:53, 25 dic 2021

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