Ridimensionare la finestra del Dialog da codice

Da Gambas-it.org - Wikipedia.

Per ridimensionare la finestra del "Dialog" da codice al momento della sua apertura, utilizzeremo le risorse delle Classi "DesktopWatcher" e "DesktopWindows". A tal fine dovranno essere attivati i Componenti gb.desktop e gb.desktop.x11.

Vediamo di seguito un codice commentato, nel quale la finestra del "Dialog" sarà massimizzata a pieno schermo:

Private wa As DesktopWatcher
Private dw As DesktopWindow


Public Sub Form_Open()

' Osserva tutte le finestre, presenti e future, sulla Scrivania:
 wa = New DesktopWatcher As "DWatch"

End


Public Sub Button1_Click()

 With Dialog
' Il "Titolo" della finestra del "Dialog" deve essere certo e univoco.
' In questo esempio daremo alla finestra di Dialogo il titolo: "Titolo_della_finestra_del_Dialog".; e sarà quello che apparirà sul bordo superiore della finestra del "Dialog" alla sua apertura.
   .Title = "Titolo_della_finestra_del_Dialog"
   If .OpenFile() Then Return
 End With
  
End


Public Sub DWatch_Windows()  ' Se la lista delle finestre sulla Scrivania è cambiata...
  
' ...allora controlla se la finestra, avente Titolo "Titolo_della_finestra_del_Dialog", si è aperta:
 If Desktop.FindWindow("Titolo_della_finestra_del_Dialog", Null, Null).Count > 0 Then 
' In caso affermativo, la finestra del "Dialog" viene ridimensionata (in questo caso a schermo pieno):
   With dw = New DesktopWindow(Desktop.FindWindow("Titolo_della_finestra_del_Dialog", Null, Null)[0])
     .Resize(Screen.AvailableWidth, Screen.AvailableHeight)
   End With
 Endif 
  
End

Oppure usando un Timer per individuare con la Proprietà ".ActiveWindow" della Classe Desktop il numero identificatore della finestra Dialog, da passare successivamente a un Oggetto di tipo DesktopWindow, per ridimensionare mediante il Metodo ".Resize()" la predetta finestra Dialog.

Private Timer1 As Timer


Public Sub Button1_Click()

' Crea e avvia il "Timer":
 With Timer1 = New Timer As "Timer1"
   .Delay = 300
   .Start
 End With
 With Dialog
   If .OpenFile() Then Return 
 End With

End


Public Sub Timer1_Timer()

 Timer1.Stop

 Dim dw As DesktopWindow

' Quando sarà stata aperta la finestra del "Dialog", il Metodo "Desktop.ActiveWindow" ne individuerà la finestra e quindi il suo ID:
 With dw = New DesktopWindow(Desktop.ActiveWindow)
' Procede al ridimensionamento della finestra del "Dialog":
   .Resize(Screen.AvailableWidth, Screen.AvailableHeight)
 End With

End