Uso della classe DesktopWindow: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| (5 versioni intermedie di uno stesso utente non sono mostrate) | |||
| Riga 8: | Riga 8: | ||
Dim i As Integer[] | Dim i As Integer[] | ||
<font color=gray>' <i>Poiché DesktopWindow è una | <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 | ||
<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>[[[#Note|'''nota 1''']]]</sup> | i = Desktop.FindWindow("<font color=gray>Nome_della_finestra</font>") <font color=gray>'</font> <SUP>[[[#Note|'''nota 1''']]]</sup> | ||
With dw = New DesktopWindow(i[0]) | With dw = New DesktopWindow(i[0]) | ||
<font color=gray>' <i>Otteniamo informazioni dalla finestra individuata | <font color=gray>' <i>Otteniamo informazioni dalla finestra individuata e la gestiamo:</i></font> | ||
Print Hex(.Id), . | Print Hex(.Id), .Name, .Width, .Height | ||
.Move(100, 200, | .Move(100, 200, .Width + 200, .Height + 200) | ||
End With | End With | ||
| Riga 30: | Riga 31: | ||
With dw = New DesktopWindow(Me.Id) | With dw = New DesktopWindow(Me.Id) | ||
Print Hex(.Id), . | Print Hex(.Id), .Name, .Width, .Height | ||
.Move(100, 200, | .Move(100, 200, .Width + 200, .Height + 200) | ||
End With | End With | ||
| Riga 53: | Riga 54: | ||
Dim dw As DesktopWindow | Dim dw As DesktopWindow | ||
Dim w As | 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 94: | Riga 95: | ||
==Assegnare un Form | ==Assegnare un Form a una specifica Scrivania== | ||
Per assegnare un Form | Per assegnare un Form a una specifica Scrivania (Desktop) si userà la Proprietà ".Desktop": | ||
Public Sub Button1_Click() | Public Sub Button1_Click() | ||
| Riga 111: | Riga 112: | ||
=Note= | =Note= | ||
[1] Vedere al riguardo la seguente pagina: | [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