Da tempo cerco di disegnare le mie Form e, naturalmente, gli oggetti in esse contenuti con riferimenti ai valori X, Y, Width e Height del Desktop. Lo faccio, anche se, per la verità non sempre; infatti è un lavoro assai certosino e faticoso, perchè è tutto scritto sotto forma di istruzioni, però quando ho necessità di non incappare in alterazioni provocate dalle successive release di Gambas, cerco di attenermi al suddetto metodo.
Dopo il dovuto preambolo, vengo al dunque. Sto disegnando una nuova Form che dovrebbe occupare quasi tutta l'area del Desktop, sovrapponendosi per circa il 90% alla Form Parent.
A prescindere da come ho dimensionato le proprietà della Form nell'ide di Gambas, ho scritto le seguenti istruzioni:
' ----> Siamo nella FormRiep00.Class
Public Sub _new($Periodo As String)
'------------------------------------------------------
Select Case $Periodo
Case "01"
Case "02"
Case Else ' "03" = Sintesi occasionale
CompRiep03
End Select
End
Private Sub CompRiep03()
Dim $SfoFFFFBF As String = "&HFFFFBF&" 'colore di fondo della Form
Dim iSfondoForm As Integer = Val($SfoFFFFBF)
'----------------------------------------------
With Me
.X = Desktop.X + 5
.Y = Desktop.Y + 10
.Width = Desktop.Width - 20
.Height = Desktop.Height - 150
End With
Print "Desktop.Width = '" & Desktop.Width & "'"
Print "Desktop.Height = '" & Desktop.Height & "'"
Print "CompRiep03.Form.X = '" & Me.X & "'"
Print "CompRiep03.Form.Y = '" & Me.Y & "'"
Print "CompRiep03.Form.Width = '" & Me.Width & "'"
Print "CompRiep03.Form.Height = '" & Me.Height & "'"
End
Ed ecco le stampe prodotte dalle istruzioni
PrintDesktop.Width = '1366'
Desktop.Height = '741'
CompRiep03.Form.X = '5'
CompRiep03.Form.Y = '37'
CompRiep03.Form.Width = '1346'
CompRiep03.Form.Height = '711'
Con frontando l'output delle Print con le mi impostazioni si rileva:
CompRiep03.Form.X = '5' <---> e la mia istruzione era
Me.X = Desktop.X + 5 (
OK)
CompRiep03.Form.Y = '37' <---> e la mia istruzione era
Me.Y = Desktop.X + 10 CompRiep03.Form.Width = '1346' <---> e la mia istruzione era
Me.Width = Desktop.Width - 20 (
OK)
CompRiep03.Form.Height = '711' <---> e la mia istruzione era
Me..Height = Desktop.Height - 150 É lampante che le mie impostazioni non sono state tutte accettate da Gambas. La posizione di partenza della coordinata Y della Form è più in basso rispetto a quella desiderata, mentre l'altezza è enormemente più alta e la finestra è praticamente a schermata piena, come si può vedere nell'allegato.
Però se riduco congruamente l'altezza, il dimensionamento diventa corretto, con l'eccezione della coordinata Y che rimane a '37', quando dovrebbe diventare '10'.
Potrebbe trattarsi di un bug?