Purtroppo non ho ottenuto effetti.
Ieri, ho fatto delle prove su un
MessageBox creato da applicativo Gambas, ed è l'
unico tipo di
finestra che non riuscivo a spostare e/o a ridimensionare.
Questo, nonostante anche le finestrine di
qualunque MessageBox siano - appunto - normali finestre che posseggono un proprio ID !
Sono riuscito ad ottenere il suo spostamento soltanto insieme con il form del programmino principale che aveva generata.
Dagli esperimenti attualmente compiuti, è risultato che un MessageBox
in talune circostanze - probabilmente legate al tipo di ambiente desktop grafico e/o al tema - 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 prevede che venga mostrato ad esempio un
Message.Info, sarà impossibile spostarlo o modificarne le dimensioni.
Potrebbe questa fattispecie astratta essere il tuo caso. Lo spostamento con il codice, che ti ho comunicato sopra, molto probabilmente ha avuto problemi nell'individuare con precisione il PID della finestra del
MessageBox, in quanto - come hai potuto notare - la procedura, usando "
xprop" è un po' complessa: ho visto che con i
Message.Box la linea di comando in "
xprop"' deve essere un po' diversa (vedi Nota in fondo).
Ma proviamo diversamente.
Il seguente codice prevede che i desktop attivi non abbiano altre finestre aperte. In questo modo il
MessageBox che ti appare dovrebbe essere la 3
a finestra (quindi la num. 2) attiva (qui si presuppone che il programma principale, ove è contenuto la
TextBox, sia un programma eseguibile, non lanciato dall'IDE di gambas):
Public Sub Button1_Click()
Dim dw As DesktopWindow
Dim i As Integer
With Desktop
i = .Windows[2].Id
End With
dw = New DesktopWindow(i)
With dw
.Move(10, 500)
' .Resize(100, 500)
' .Close
End With
End
Lancerai questo applicativo solo
dopo la comparsa del
MessageBox che dà fastidio.
Prova una per volta tutte e tre le opzioni (
Move - Resize - Close).
Nota:
In tal caso il codice per ottenere - ancora mediante "
xprop" - il PID di un
MessageBox sarà il seguente:
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