Differenze tra le versioni di "Attivare un Componente dinamicamente da codice"

Da Gambas-it.org - Wikipedia.
Riga 40: Riga 40:
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
    
 
    
  Dim cm As Component
 
 
   Dim cl As Class
 
   Dim cl As Class
 
   Dim symb As String
 
   Dim symb As String
Riga 62: Riga 61:
 
  ' ''per richiamare il metodo ".Play()" della Classe "Sound", al fine di eseguire il file audio WAV caricato:''</font>
 
  ' ''per richiamare il metodo ".Play()" della Classe "Sound", al fine di eseguire il file audio WAV caricato:''</font>
 
   ob.play()
 
   ob.play()
 +
 
 +
'''End'''
 +
 +
oppure anche così:
 +
'''Public''' Sub Main()
 +
 
 +
  Dim cl As Class
 +
  Dim symb As String
 +
  Dim ob As Object
 +
 
 +
<FONT Color=gray>' ''Viene attivato, ad esempio, il Componente "gb.sdl2.audio":''</font>
 +
  Component.Load("gb.sdl2.audio")
 +
 
 +
<FONT Color=gray>' ''Viene presa in considerazione la Classe "Sound" del Componente "gb.sdl2.audio":''</font>
 +
  cl = Class.Load("Sound")
 +
 
 +
<FONT Color=gray>' ''Pro memoria vengono mostrate tutte le risorse appartenenti alla Classe "Sound" del Componente "gb.sdl2.audio":''</font> 
 +
  For Each symb In cl.Symbols
 +
    Print symb
 +
  Next
 +
 
 +
<FONT Color=gray>' ''Viene richiamato il metodo ".Load()" della Classe "Sound" per caricare un file audio di formato WAV:''</font>
 +
  Object.Call(cl, cl.Symbols[0], ["<FONT Color=gray>''/percorso/del/file.wav''</font>"])
 +
   
 +
<FONT Color=gray>' ''Viene ora invocato il Metodo ".Play()" per l'esecuzione del file audio WAV caricato:''</font>
 +
  Object.Call(cl, "Play", Null)
 
    
 
    
 
  '''End'''
 
  '''End'''

Versione delle 19:42, 6 dic 2016

Come è noto, un Componente di Gambas viene di norma attivato dall'IDE seguendo la seguente procedura:

Progetto-->Proprietà-->Componenti

e quindi nell'apposita finestra si attiva il Componente prescelto cliccando sul suo riferimento.


E' possibile, però, attivare un Componente anche successivamente, in modo dinamico, da codice. Per poter fare ciò, si dovrà fare uso del metodo .Load() della proprietà .Component:

  Component.Load("gb.nome_del_componente")


Si faccia, infatti, questo esempio, nel quale si dovrà far aprire un file con il suo programma di default mediante il metodo .Open() della Classe Desktop. L'applicativo nell'esempio non ha attivato il componente gb.desktop, indispensabile per poter utilizzare il predetto comando: Desktop.Open("/percorso/del/file/da/aprire") previsto dall'applicativo medesimo.

Si proverà a verificare cosa succede cliccando prima sul tasto Button1, e successivamente sul tasto Button2:

Public Sub Form_Open()

End


Public Sub Button1_Click()

' Si effettua il tentativo di apertura di un file qualsiasi senza alcun tipo di attivazione del componente "gb.desktop":
   Desktop.Open("/percorso/del/file/da/aprire")

End


Public Sub Button2_Click()

' Si procede ad attivare il componente Gambas "gb.desktop", per poter utilizzare la funzione "Desktop.Open()".
' Inoltre si verificherà il suo nome, e se esso è stato effettivamente caricato:
   Print "Componente \""; Component.Load("gb.desktop").Name; "\" caricato: "; Component.IsLoaded("gb.desktop")

' Quindi si effettua il tentativo di apertura di un file qualsiasi:
   Desktop.Open("/percorso/del/file/da/aprire")

End


In quest'altro caso, dopo aver attivato un Componente, sarannno utilizzati due suoi metodi:

Public Sub Main()
 
 Dim cl As Class
 Dim symb As String
 Dim ob As Object
 
' Viene attivato, ad esempio, il Componente "gb.sdl2.audio":
  Component.Load("gb.sdl2.audio")
 
' Viene presa in considerazione la Classe "Sound" del Componente "gb.sdl2.audio":
  cl = Class.Load("Sound")
  
' Pro memoria vengono mostrate tutte le risorse appartenenti alla Classe "Sound" del Componente "gb.sdl2.audio":   
  For Each symb In cl.Symbols
    Print symb
  Next
  
' Viene richiamato il metodo ".Load()" della Classe "Sound" per caricare un file audio di formato WAV:
  ob = Object.Call(cl, cl.Symbols[0], ["/percorso/del/file.wav"])
   
' Si usa la varibile di tipo "Oggetto", restituita dal precedente metodo "Object.Call()",
' per richiamare il metodo ".Play()" della Classe "Sound", al fine di eseguire il file audio WAV caricato:
  ob.play()
  
End

oppure anche così:

Public Sub Main()
 
 Dim cl As Class
 Dim symb As String
 Dim ob As Object
 
' Viene attivato, ad esempio, il Componente "gb.sdl2.audio":
  Component.Load("gb.sdl2.audio")
 
' Viene presa in considerazione la Classe "Sound" del Componente "gb.sdl2.audio":
  cl = Class.Load("Sound")
  
' Pro memoria vengono mostrate tutte le risorse appartenenti alla Classe "Sound" del Componente "gb.sdl2.audio":   
  For Each symb In cl.Symbols
    Print symb
  Next
  
' Viene richiamato il metodo ".Load()" della Classe "Sound" per caricare un file audio di formato WAV:
  Object.Call(cl, cl.Symbols[0], ["/percorso/del/file.wav"])
   
' Viene ora invocato il Metodo ".Play()" per l'esecuzione del file audio WAV caricato:
  Object.Call(cl, "Play", Null)
  
End