Differenze tra le versioni di "Spostare o ridimensionare una finestra di un MessageBox"

Da Gambas-it.org - Wikipedia.
Riga 3: Riga 3:
 
Bisogna premettere che anche le finestrine di un qualunque ''MessageBox'' sono normali finestre, e che, pertanto, anch'esse posseggono un proprio PID.
 
Bisogna premettere che anche le finestrine di un qualunque ''MessageBox'' sono normali finestre, e che, pertanto, anch'esse posseggono un proprio PID.
  
Dagli esperimenti attualmente compiuti, un ''MessageBox'' può essere spostato individualmente solo se <SPAN style="text-decoration:underline">non</span> è generato dal codice del nostro applicativo Gambas. Se per esempio creiamo un programmino che compie un errore - ad esempio una divisione per zero -, quando la procedura incontra tale richiesta di divisione, essa solleverà un errore facendo apparire un ''MessageBox''. In questo caso sarà possibile effettuare lo spostamento. Se, invece, il nostro programma prevede che venga mostrato ad esempio un ''Message.Info'', sarà impossibile spostarlo o modificarne le dimensioni.
+
Dagli esperimenti attualmente compiuti, un ''MessageBox'' può essere spostato individualmente solo se <SPAN style="text-decoration:underline">non</span> è generato dal codice del nostro applicativo Gambas. Se per esempio creiamo un programmino che compie un errore - ad esempio una divisione per zero -, quando la procedura incontra tale richiesta di divisione, essa solleverà un errore facendo apparire un ''MessageBox''. In questo caso sarà possibile effettuare lo spostamento.
<BR>sarà, invece, possibile ''chiudere'' con il codice Gambas anche una finestra di un ''MessageBox'' generato dal codice del nostro applicativo Gambas.
+
 
 +
Se, invece, il nostro programma Gambas prevede che venga mostrato ad esempio un ''Message.Info'', sarà impossibile spostare tale ''MessageBox'' o modificarne le dimensioni.
 +
 
 +
sarà, invece, possibile ''chiudere'' con il codice Gambas anche una finestra di un ''MessageBox'' generato dal codice del nostro applicativo Gambas.
  
 
Prenderemo in considerazione, dunque, solo il caso di ''MessageBox'' generati da programmi esterni. Per ridimensionare e spostare tali finestrine, si potranno adoperare sia funzioni di Gambas, sia comandi ''bash''.
 
Prenderemo in considerazione, dunque, solo il caso di ''MessageBox'' generati da programmi esterni. Per ridimensionare e spostare tali finestrine, si potranno adoperare sia funzioni di Gambas, sia comandi ''bash''.

Versione delle 10:20, 6 ott 2012

Prenderemo in considerazione sia il caso di un MessageBox generato dal codice di un programma Gambas (come ad esempio un Message.Info() ), sia il caso di quello generato da un programma esterno.

Bisogna premettere che anche le finestrine di un qualunque MessageBox sono normali finestre, e che, pertanto, anch'esse posseggono un proprio PID.

Dagli esperimenti attualmente compiuti, un MessageBox può essere spostato individualmente solo se non è generato dal codice del nostro applicativo Gambas. Se per esempio creiamo un programmino che compie un errore - ad esempio una divisione per zero -, quando la procedura incontra tale richiesta di divisione, essa solleverà un errore facendo apparire un MessageBox. In questo caso sarà possibile effettuare lo spostamento.

Se, invece, il nostro programma Gambas prevede che venga mostrato ad esempio un Message.Info, sarà impossibile spostare tale MessageBox o modificarne le dimensioni.

sarà, invece, possibile chiudere con il codice Gambas anche una finestra di un MessageBox generato dal codice del nostro applicativo Gambas.

Prenderemo in considerazione, dunque, solo il caso di MessageBox generati da programmi esterni. Per ridimensionare e spostare tali finestrine, si potranno adoperare sia funzioni di Gambas, sia comandi bash.


Uso delle sole funzioni di Gambas

Faremo uso della Classe DesktopWindow e dei suoi metodi: potremo in modo particolare spostare e/o ridimensionare oppure chiudere la finestra del MessageBox.


Public Sub Button1_Click()  
 
 Dim dw As DesktopWindow  
 Dim i As Integer  
 
  With Desktop
' Si porrà il numero di "indice" della finestra del "MessageBox",
' per poter individuare il suo PID:
    i = .Windows[n].Id  
  End With  
 
  dw = New DesktopWindow(i)  
 
  With dw  
    .Move(x, y, w, h)
' ...ma si potranno anche usare:
  ' .Resize(w, h)  
  ' .Close
  End With  
 
End


Uso del comando xprop

Si potrà anche usare il comando bash "xprop" per individuare, in particolare, il PID della finestra del "MessageBox":

Private i As Integer


Public Sub Form_Open()    
  
 Dim pr As Process    
 Dim x As New String[]    
 Dim s As String  
 
 pr = Shell "xprop | grep XKLAVIER_STATE" For Read  
 
 While Not Eof(pr)      
   Input #pr, s  
' Individua il valore decimale della finestra del "MessageBox":
   If Eof(pr) Then i = CInt(s)  
 Wend  
 
End


Public Sub Button1_Click()  
 
 Dim dw As DesktopWindow  
 
 
 dw = New DesktopWindow(i)  
 
  With dw  
    .Move(x, y, w, h)
' ...ma si potranno anche usare:
  ' .Resize(w, h)  
  ' .Close
  End With
 
End