Differenze tra le versioni di "Uso della classe DesktopWindow"

Da Gambas-it.org - Wikipedia.
(6 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
La classe <b>DesktopWindow</b> è usata per rappresentare una finestra di primo livello.
+
La classe <b>DesktopWindow</b> è usata, attivando i Componenti ''gb.desktop'' e ''gb.desktop.x11'', per rappresentare una finestra di primo livello.
  
 
In particolare, questa Classe può essere usata per ottenere e gestire la finestra attiva di un programma.
 
In particolare, questa Classe può essere usata per ottenere e gestire la finestra attiva di un programma.
 
  
 
Mostriamo qualche esempio pratico:
 
Mostriamo qualche esempio pratico:
Riga 9: Riga 8:
 
   Dim i As Integer[]
 
   Dim i As Integer[]
 
   
 
   
  <font color=gray>' <i>poiché DesktopWindow è una classe, gli si associa una variabile del tipo di quella Classe:</i></font>
+
  <font color=gray>' <i>Poiché DesktopWindow è una classe, gli si associa una variabile del tipo di quella Classe:</i></font>
 
   Dim dw As DesktopWindow
 
   Dim dw As DesktopWindow
 
   
 
   
   i = Desktop.FindWindow("<font color=gray>'<i>Nome_della_finestra</i></font>")
+
   i = Desktop.FindWindow("<font color=gray>Nome_della_finestra</font>")
 
   
 
   
 
   With dw = New DesktopWindow(i[0])
 
   With dw = New DesktopWindow(i[0])
Riga 34: Riga 33:
 
     .Move(100, 200, 100, 300)
 
     .Move(100, 200, 100, 300)
 
   End With
 
   End With
 +
 +
'''End'''
 +
 +
 +
E' possibile individuare tutte le finestre aperte sulla Scrivania:
 +
'''Public''' Sub Button1_Click()
 +
 
 +
  Dim dw As DesktopWindow
 +
 +
  For Each dw In Desktop.Windows
 +
    Print "Nome finestra: "; Quote(dw.Name), "X = "; Quote(dw.X), "Y = "; Quote(dw.Y)
 +
  Next
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 43: Riga 54:
 
   Dim dw As DesktopWindow
 
   Dim dw As DesktopWindow
 
   Dim w As New Window
 
   Dim w As New Window
  Dim i As Image
 
  Dim p As Picture
 
 
    
 
    
 
   With w
 
   With w
Riga 52: Riga 61:
 
   
 
   
 
  <font color=gray>' ''Carica un'immagine, che sarà poi mostrata appresso in dw:''</font>
 
  <font color=gray>' ''Carica un'immagine, che sarà poi mostrata appresso in dw:''</font>
     .Icon = Picture.Load("<i>percorso_immagine</i>")
+
     .Icon = Picture.Load("<FONT Color=gray>''/percorso/dell'immagine''</font>")
 
  <font color=gray>' ''Mostra nella "TextLabel" il nome fittizio precedentemente assegnato alla finestra:''</font>
 
  <font color=gray>' ''Mostra nella "TextLabel" il nome fittizio precedentemente assegnato alla finestra:''</font>
 
     TextLabel1.Text = .Name
 
     TextLabel1.Text = .Name
 
   End With
 
   End With
 
    
 
    
   dw = New DesktopWindow(w.Handle) <font color=gray>' ''"w.Handle" è il numero identificativo dell'handle della finestra''
+
   dw = New DesktopWindow(w.Handle) <font color=gray>' ''"w.Handle" è il numero identificativo dell'handle della finestra rappresentata dalla variabile "w"''</font>
                                  ' ''rappresentata dalla variabile "w"''
+
<font color=gray>' ''Mostra l'immagine assegnata alla Proprietà ".Icon" della finestra :''</font>
    
+
   PictureBox1.Picture = dw.Icon
  ' <i>invece:</i></font>
+
   With dw = New DesktopWindow(Desktop.ActiveWindow) <font color=gray>' <i>"Desktop.ActiveWindow" è la finestra attiva di un programma in quel momento</i></font>
+
  '''End'''
 +
 
 +
La Classe <i>DesktopWindow</i> può rappresentare anche la finestra "attiva" di un programma in quel momento:
 +
'''Public''' Sub Form_Open()
 +
 +
  Dim dw As DesktopWindow
 +
 +
   With dw = New DesktopWindow(Desktop.ActiveWindow) <font color=gray>' ''"Desktop.ActiveWindow" è la finestra "attiva" di un programma in quel momento:''</font>
 
     Print .Desktop
 
     Print .Desktop
 
     Print .FullScreen
 
     Print .FullScreen
<font color=gray>' <i>Assegna alla variabile "i" l'icona precedentemente assegnata alla variabile "w":</i></font>
 
    i = .Icon
 
 
     Print .Height
 
     Print .Height
 
     Print .Id
 
     Print .Id
Riga 72: Riga 86:
 
     Print .SkipTaskbar
 
     Print .SkipTaskbar
 
     Print .VisibleName
 
     Print .VisibleName
 +
<font color=gray>' ''Mostra l'eventuale icona della finestra del programma:''</font>
 +
    PictureBox1.Picture = .Icon
 
   End With
 
   End With
 
<font color=gray>' <i>andiamo a vedere l'eventuale icona della finestra del programma:</i></font>
 
  p = i.Picture
 
  PictureBox1.Picture = p
 
 
   
 
   
 
  '''End'''
 
  '''End'''
  
  
Per assegnare un Form ad uno specifico schermo si userà la Proprietà "''.Desktop''":
+
Per assegnare un Form ad uno specifico schermo si userà la Proprietà ".Desktop":
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
 
    
 
    

Versione delle 17:48, 25 mag 2023

La classe DesktopWindow è usata, attivando i Componenti gb.desktop e gb.desktop.x11, per rappresentare una finestra di primo livello.

In particolare, questa Classe può essere usata per ottenere e gestire la finestra attiva di un programma.

Mostriamo qualche esempio pratico:

Public Sub Form_Open()

 Dim i As Integer[]

' Poiché DesktopWindow è una classe, gli si associa una variabile del tipo di quella Classe:
 Dim dw As DesktopWindow

 i = Desktop.FindWindow("Nome_della_finestra")

 With dw = New DesktopWindow(i[0])
' Otteniamo informazioni dalla finestra individuata, e la gestiamo:
   Print Hex(.Id), .VisibleName, .Width, .Height
   .Move(100, 200, 100, 300)
 End With
 
End


Se la finestra è il Form principale dell'applicazione, allora il suo Id si individuerà facilmente:

Public Sub Form_Open()

 Dim dw As DesktopWindow

 Me.Show

 With dw = New DesktopWindow(Me.Id)
   Print Hex(.Id), .VisibleName, .Width, .Height
   .Move(100, 200, 100, 300)
 End With

End


E' possibile individuare tutte le finestre aperte sulla Scrivania:

Public Sub Button1_Click()
 
 Dim dw As DesktopWindow

 For Each dw In Desktop.Windows
   Print "Nome finestra: "; Quote(dw.Name), "X = "; Quote(dw.X), "Y = "; Quote(dw.Y)
 Next 

End


La Classe DesktopWindow può rappresentare anche una finestra creata virtualmente con una variabile di tipo "Window":

Public Sub Form_Open()

 Dim dw As DesktopWindow
 Dim w As New Window
 
 With w
' Assegna un nome di comodo alla finestra (non è indispensabile, e non modificherà il nome visibile in testa alla finestra):
   .Window.Name = "Nome_finestra"
' Se invece si pone solo: .Name senza assegnazione, allora il nome sarà quello della finestra del programma.

' Carica un'immagine, che sarà poi mostrata appresso in dw:
   .Icon = Picture.Load("/percorso/dell'immagine")
' Mostra nella "TextLabel" il nome fittizio precedentemente assegnato alla finestra:
   TextLabel1.Text = .Name
 End With
 
 dw = New DesktopWindow(w.Handle) ' "w.Handle" è il numero identificativo dell'handle della finestra rappresentata dalla variabile "w"
' Mostra l'immagine assegnata alla Proprietà ".Icon" della finestra :
 PictureBox1.Picture = dw.Icon

End

La Classe DesktopWindow può rappresentare anche la finestra "attiva" di un programma in quel momento:

Public Sub Form_Open()

 Dim dw As DesktopWindow

 With dw = New DesktopWindow(Desktop.ActiveWindow) ' "Desktop.ActiveWindow" è la finestra "attiva" di un programma in quel momento:
   Print .Desktop
   Print .FullScreen
   Print .Height
   Print .Id
   Print .Maximized
   Print .Name
   Print .SkipTaskbar
   Print .VisibleName
' Mostra l'eventuale icona della finestra del programma:
   PictureBox1.Picture = .Icon
 End With

End


Per assegnare un Form ad uno specifico schermo si userà la Proprietà ".Desktop":

Public Sub Button1_Click()
 
 Dim dw As DesktopWindow
  
 With dw = New DesktopWindow(Me.Id)
' Spostiamo il Form principale della nostra applicazione sul terzo desktop (indice 2):
   .Desktop = 2
 End With
   
End