Salve ragazzi, ciao moderatori.
Non so se il titolo è appropriato.
Cmq, avrei un problema che mi sta facendo uscire matto.
Su una form ho 5 frame indicizzati (all'interno dei quali ci sono dei dati raggruppati per tipo).
I frame si chiamano:
FrameDati(1)
FrameDati(2)
FrameDati(3)
FrameDati(4)
FrameDati(5)
e sono disposti uno sotto l'altro, piu o meno cosi:
----------
| |
| |
----------
----------
| |
| |
----------
----------
| |
| |
----------
----------
| |
| |
----------
----------
| |
| |
----------
L'apertura della form avviene tramite pulsante sistemato in una form precedente sulla quale ci sono 5 checkbox che indicano se il corrispondente frame nella form che si va ad aprire deve essere visualizzato o meno.
All'apertura della form con i frame, scansiono i checkbox della form precedente e se è impostato a off allora imposto una variabile di stato (stato(i)) booleana a false, e viceversa. Poi lancio la sub ImpaginaFrame (che riporto di seguito) e, a seconda di quale variabile stato(i) è true o false attivo o disattivo il frame corrispondente.
Se un frame non viene visualizzato allora quelli che seguono devono prendere il suo posto, scalando, nella rappresentazione, verso l'alto. Questo per impedire che ci siano dei buchi tra un frame e la'ltro.
E' una cavolata, lo so ...ma ci sto sbattendo il muso da un po' e non vedo dove commetto l'errore.
Alla prima chiamata della form, se uno o piu check sono impostati a off, il corrispondente frame viene disattivato e non visualizzato e gli altri vengono scalati verso l'alto, correttamente.
Se ora chiudo la form, reimposto a on i/il check che avevo impostato a off e riapro la form, mi aspetto che la sub ricalcoli il tutto e imposti come voglio io i frame. E invece non succede. I frame rimangono nello stesso posto e non viene reinserito il frame che deve essere rivisualizzato.
Posto il codice:
--------------------------------------------------------------------
Private Sub ImpaginaFrame()
'Coordinate dei FRAME DATI
Dim coordx As Integer
Dim coordy As Integer
Dim i As Integer 'contatore
Dim c As Integer 'contatore
Dim ContMax As Integer
'La variabile 'Stato' è definita all'inizio del modulo come: dim stato(5) as boolean
'Coordinate dei FRAME
coordx = 10440
coordy = 1200 'coordinata di partenza ( =angolo sup-sin del FrameDati(1) )
'Coordinate X (tutte uguali per i 5 frame)
For i = 1 To 5
FrameDati(i).Left = coordx
Next i
ContMax = 5 '5 Frame da impaginare
For i = 1 To ContMax 'Scorre i 5 frame
If stato(i) = True Then
FrameDati(i).Top = coordy 'Assegna al form interessato la coordinata piu alta
FrameDati(i).Visible = True 'Visualizza il form interessato
coordy = coordy + FrameDati(i).Height + 20 'imposta il Coordy successivo
Else
FrameDati(i).Visible = False 'Visibilità
End If
Next i
End Sub
--------------------------------------------------------------------
Magari qualcuno di voi vede dove sto sbagliando..
grazie anticipatamente