Uso della classe DesktopWindow: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(10 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:
  '''Public''' Sub Form_Open()
  Public Sub Form_Open()
   
   
   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, ossia si crea un'istanza, un Oggetto della Classe "DesktopWindow":</i></font>
   Dim dw As DesktopWindow
   Dim dw As DesktopWindow
   
   
   i = Desktop.FindWindow("<font color=gray>Nome_della_finestra</font>")
<FONT Color=gray>' ''Individuiamo il nome della finestra del programma, e lo passiamo al Metodo "Desktop.FindWindow()" per ottenere il numero identificativo della finestra da gestire successivamente mediante l'Oggetto di tipo della Classe "DesktopWindow":</font>
   i = Desktop.FindWindow("<font color=gray>Nome_della_finestra</font>")   <font color=gray>'</font> <SUP>&#091;[[#Note|'''nota 1''']]&#093;</sup>
   
   
   With dw = New DesktopWindow(i[0])
   With dw = New DesktopWindow(i[0])
  <font color=gray>' <i>Otteniamo informazioni dalla finestra individuata, e la gestiamo:</i></font>
  <font color=gray>' <i>Otteniamo informazioni dalla finestra individuata e la gestiamo:</i></font>
     Print Hex(.Id), .VisibleName, .Width, .Height
     Print Hex(.Id), .Name, .Width, .Height
     .Move(100, 200, 100, 300)
     .Move(100, 200, .Width + 200, .Height + 200)
   End With
   End With
    
    
  '''End'''
  End




Se la finestra è il ''Form'' principale dell'applicazione, allora il suo Id si individuerà facilmente:
Se la finestra è il ''Form'' principale dell'applicazione, allora il suo Id si individuerà facilmente:
  '''Public''' Sub Form_Open()
  Public Sub Form_Open()
   
   
   Dim dw As DesktopWindow
   Dim dw As DesktopWindow
Riga 31: Riga 31:
   
   
   With dw = New DesktopWindow(Me.Id)
   With dw = New DesktopWindow(Me.Id)
     Print Hex(.Id), .VisibleName, .Width, .Height
     Print Hex(.Id), .Name, .Width, .Height
     .Move(100, 200, 100, 300)
     .Move(100, 200, .Width + 200, .Height + 200)
   End With
   End With
   
   
  '''End'''
  End




E' possibile individuare tutte le finestre aperte sulla Scrivania:
E' possibile individuare tutte le finestre aperte sulla Scrivania:
  '''Public''' Sub Button1_Click()
  Public Sub Button1_Click()
    
    
   Dim dw As DesktopWindow
   Dim dw As DesktopWindow
Riga 47: Riga 47:
   Next  
   Next  
   
   
  '''End'''
  End




La Classe <i>DesktopWindow</i> può rappresentare anche una finestra creata virtualmente con una variabile di tipo "Window":
La Classe <i>DesktopWindow</i> può rappresentare anche una finestra creata virtualmente con una variabile di tipo "Window":
  '''Public''' Sub Form_Open()
  Public Sub Form_Open()
   
   
   Dim dw As DesktopWindow
   Dim dw As DesktopWindow
   Dim w As New Window
   Dim w As Window
    
    
   With w
   With w = New Window
  <font color=gray>' ''Assegna un nome di comodo alla finestra (non è indispensabile, e <span style="text-decoration:underline">non</span> modificherà il nome visibile in testa alla finestra):''</font>
  <font color=gray>' ''Assegna un nome di comodo alla finestra (non è indispensabile, e <span style="text-decoration:underline">non</span> modificherà il nome visibile in testa alla finestra):''</font>
     .Window.Name = "<i>Nome_finestra</i>"
     .Window.Name = "<i>Nome_finestra</i>"
Riga 71: Riga 71:
   PictureBox1.Picture = dw.Icon
   PictureBox1.Picture = dw.Icon
   
   
  '''End'''
  End
 


La Classe <i>DesktopWindow</i> può rappresentare anche la finestra "attiva" di un programma in quel momento:
La Classe <i>DesktopWindow</i> può rappresentare anche la finestra "attiva" di un programma in quel momento:
  '''Public''' Sub Form_Open()
  Public Sub Form_Open()
   
   
   Dim dw As DesktopWindow
   Dim dw As DesktopWindow
Riga 91: Riga 92:
   End With
   End With
   
   
  '''End'''
  End




Per assegnare un Form ad uno specifico schermo si userà la Proprietà ".Desktop":
==Assegnare un Form a una specifica Scrivania==
  '''Public''' Sub Button1_Click()
Per assegnare un Form a una specifica Scrivania (Desktop) si userà la Proprietà ".Desktop":
  Public Sub Button1_Click()
    
    
   Dim dw As DesktopWindow
   Dim dw As DesktopWindow
Riga 104: Riga 106:
   End With
   End With
      
      
  '''End'''
  End
----
 
 
 
=Note=
[1] Vedere al riguardo la seguente pagina: [[Individuare ID e nome delle finestre attive con le risorse del Componente gb.desktop]]

Versione attuale delle 15:27, 9 nov 2025

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, ossia si crea un'istanza, un Oggetto della Classe "DesktopWindow":
 Dim dw As DesktopWindow

' Individuiamo il nome della finestra del programma, e lo passiamo al Metodo "Desktop.FindWindow()" per ottenere il numero identificativo della finestra da gestire successivamente mediante l'Oggetto di tipo della Classe "DesktopWindow":
 i = Desktop.FindWindow("Nome_della_finestra")   ' [nota 1]

 With dw = New DesktopWindow(i[0])
' Otteniamo informazioni dalla finestra individuata e la gestiamo:
   Print Hex(.Id), .Name, .Width, .Height
   .Move(100, 200, .Width + 200, .Height + 200)
 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), .Name, .Width, .Height
   .Move(100, 200, .Width + 200, .Height + 200)
 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 Window
 
 With w = New Window
' 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


Assegnare un Form a una specifica Scrivania

Per assegnare un Form a una specifica Scrivania (Desktop) 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


Note

[1] Vedere al riguardo la seguente pagina: Individuare ID e nome delle finestre attive con le risorse del Componente gb.desktop