Differenze tra le versioni di "Porre la finestra di un programma esterno in primo piano"

Da Gambas-it.org - Wikipedia.
 
Riga 1: Riga 1:
 
Per porre in primo piano la finestra di un programma esterno, ossia diverso dal nostro programma Gambas principale, è possibile adottare almeno due soluzioni.
 
Per porre in primo piano la finestra di un programma esterno, ossia diverso dal nostro programma Gambas principale, è possibile adottare almeno due soluzioni.
  
==Uso della proprietà ''.ActiveWindow'' della Classe ''Desktop''==
+
==Uso della Proprietà ".ActiveWindow" della Classe ''Desktop''==
Di seguito un esempio di codice che utilizza la proprietà ''.ActiveWindow'' della Classe ''Desktop'', supponendo che si conosca il numero identificativo della finestra del programma da porre in primo piano.
+
Di seguito un esempio di codice che utilizza la Proprietà ".ActiveWindow" della Classe ''Desktop'', supponendo che si conosca il numero identificativo della finestra del programma da porre in primo piano.
 
<BR>E' necessario attivare il Componente "gb.desktop".
 
<BR>E' necessario attivare il Componente "gb.desktop".
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
   
 
   
  Desktop.ActiveWindow = ''numero_identificativo_della_finestra''
+
  Desktop.ActiveWindow = <FONT Color=gray>'''''numero_identificativo_della_finestra_del_programma_esterno'''''</font>
 
   
 
   
  '''End'''
+
  End
  
==Uso del metodo ''.Activate()'' della Classe ''DesktopWindow''==
+
==Uso del Metodo ".Activate()" della Classe ''DesktopWindow''==
Di seguito un esempio di codice che utilizza il metodo ''.Activate()'' della Classe ''DesktopWindow'', supponendo anche in questo caso che si conosca il numero identificativo della finestra del programma da porre in primo piano.
+
Di seguito un esempio di codice che utilizza il Metodo ".Activate()" della Classe ''DesktopWindow'', supponendo anche in questo caso che si conosca il numero identificativo della finestra del programma da porre in primo piano.
 
<BR>In quest'altro caso è necessario attivare il Componente "gb.desktop.x11".
 
<BR>In quest'altro caso è necessario attivare il Componente "gb.desktop.x11".
  '''Private''' dw As DesktopWindow
+
  Private" dw As DesktopWindow
 
   
 
   
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
   
 
   
  With dw = New DesktopWindow(''numero_identificativo_della_finestra'')
+
  With dw = New DesktopWindow(''numero_identificativo_della_finestra_del_programma_esterno'')
    .Activate()
+
    .Activate()
  End With
+
  End With
 
   
 
   
  '''End'''
+
  End
 
 
==Mantenere la finestra del proprio programma sempre attiva e sopra tutte le altre finestre==
 
Per mantenere la finestra del proprio programma sempre attiva e sopra tutte le finestre di altri eventuali programmi aperti, si può assegnare alla Proprietà ".Stacking" dell'Oggetto "Form" del programma il valore costante 1 ("Window.Above").
 
<BR>Anche usando tale Proprietà, però la finestra del proprio programma perde il ''focus'', se viene aperta la finestra di un altro qualsiasi programma. Pertanto si dovrà provvedere a far riassegnare il ''focus'' al "Form" del programma, rilevando la perdita del ''focus'' con lo specifico Evento "_LostFocus()".
 
 
 
Mostriamo un esempio:
 
'''Public''' Sub Form_Activate()
 
 
 
<FONT Color=gray>' ''Impone la posizione del proprio "Form" al di sopra di tutte le altre finestre:''</font>
 
  Me.Stacking = Window.Above
 
 
 
'''End'''
 
 
'''Public''' Sub Form_LostFocus()  <FONT Color=gray>' ''Se la finestra del programma perde il focus, viene sollevato questo Evento''</font>
 
 
<FONT Color=gray>' ''Riattiva il proprio "Form" garantendogli anche il focus:''</font>
 
  Desktop.ActiveWindow = Me.Id
 
 
 
'''End'''
 

Versione attuale delle 08:49, 2 ago 2023

Per porre in primo piano la finestra di un programma esterno, ossia diverso dal nostro programma Gambas principale, è possibile adottare almeno due soluzioni.

Uso della Proprietà ".ActiveWindow" della Classe Desktop

Di seguito un esempio di codice che utilizza la Proprietà ".ActiveWindow" della Classe Desktop, supponendo che si conosca il numero identificativo della finestra del programma da porre in primo piano.
E' necessario attivare il Componente "gb.desktop".

Public Sub Button1_Click()

 Desktop.ActiveWindow = numero_identificativo_della_finestra_del_programma_esterno

End

Uso del Metodo ".Activate()" della Classe DesktopWindow

Di seguito un esempio di codice che utilizza il Metodo ".Activate()" della Classe DesktopWindow, supponendo anche in questo caso che si conosca il numero identificativo della finestra del programma da porre in primo piano.
In quest'altro caso è necessario attivare il Componente "gb.desktop.x11".

Private" dw As DesktopWindow


Public Sub Button1_Click()

 With dw = New DesktopWindow(numero_identificativo_della_finestra_del_programma_esterno)
   .Activate()
 End With

End