Autore Topic: Impostazioni indirette di una Form  (Letto 380 volte)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Impostazioni indirette di una Form
« il: 06 Luglio 2014, 17:31:41 »
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:
Codice: gambas [Seleziona]
' ----> 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 Print
Citazione
Desktop.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?
 :rolleyes:
:ciao:

Offline pastrank

  • Maestro Gambero
  • ****
  • Post: 266
    • Mostra profilo
Re: Impostazioni indirette di una Form
« Risposta #1 il: 06 Luglio 2014, 18:28:35 »
Potrebbe trattarsi di un bug?

Diro' una cazzata, visto che frequento poco le applicazioni grafiche, ma non e' invece che il wm tenta di dimensionare finestre e controlli secondo linee di snap che servono a non lasciare pezzi "mozzi" a giro nelle finestre, e che quindi tendono a essere modificati rispetto ai tuoi valori?

In ogni caso, a me le misure tornano (lxde, schermo 1680x1050)...

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: Impostazioni indirette di una Form
« Risposta #2 il: 06 Luglio 2014, 20:46:20 »
Prova a sostituire il codice con...

Codice: [Seleziona]
With Me  
       .X = Desktop.X + 5 
       .Y = Desktop.Y + 10 
       .Width = Screen.AvailableWidth - 20 
       .Height = Screen.AvailableHeight - 150 
 End With
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Impostazioni indirette di una Form
« Risposta #3 il: 06 Luglio 2014, 21:51:09 »
Prova a sostituire il codice con...

Codice: [Seleziona]
With Me  
       .X = Desktop.X + 5 
       .Y = Desktop.Y + 10 
       .Width = Screen.AvailableWidth - 20 
       .Height = Screen.AvailableHeight - 150 
 End With

No, non è cambiato niente. Non riesco a mettere il vertice sinistro della finestra dove dico io, nè ad impegnare la porzione di Desktop adeguata. La finestra è impostata sempre in maniera centrale rispetto al Desktop e, se imposto
Codice: [Seleziona]
 .Height = Screen.AvailableHeight - 139
o maggiore diventa a tutto schermo.
 :(
:ciao: