Ciao a tutti,

ultimamente per un progetto VB6 di "gestione messaggi" interni ad un
software gestionale ho voluto utilizzare la MSHFlexGrid per
visualizzare l'elenco dei messaggi in arrivo ed in uscita.

Normalmente uso la DataGrid, ma volendo personalizzare la
visualizzazione (un po' stile Outlook, Thunderbird e compagnia bella)
l'unica soluzione che mi è venuta in mente è la MSHFlexGrid.

Non avendola mai usata mi sono documentato in giro per il web ed alla
fine sono riuscito a realizzare quanto volevo.

In particolare ho creato una Sub che, selezionando "Posta in Arrivo" o
"Posta Inviata" in un controllo TreeView, ri-formatta la
visualizzazione della MSHFlexGrid per adattarla ai nuovi dati.

Quoto qui sotto il codice della Sub:

Codice PHP:
Private Sub ImpostaColonne()

    
Dim r As Long
    Dim c 
As Long

    With MSHFlexGrid1

        
'' nasconde o formatta le colonne
        
For 0 To .Cols 1
            Select 
Case LCase(.TextMatrix(0c))
                Case 
"messageid""letto""uidmittente""idimpianto"
                    
.ColWidth(c) = 0
                
Case "dataorainvio"
                    
.TextMatrix(0c) = "Ricevuto"
                    
.ColWidth(c) = TextWidth(String(16"W"))
                Case 
"mittente"
                    
.ColWidth(c) = TextWidth(String(10"W"))
                Case 
"oggetto"
                    
.ColWidth(c) = TextWidth(String(20"W"))
            
End Select
        Next c

        
If recordset.RecordCount 0 Then

            
'' evidenzia in azzurro le righe alternate per la lettura
facilitata
            
For 2 To .Rows 1 Step 2
                
For 0 To .Cols 1
                    
.Row r
                    
.Col c
                    
.CellBackColor "&Hffeeee"
                
Next c
            Next r

            
'' evidenzia in grassetto i messaggi non letti
            
For 1 To .Rows 1
                
If .TextMatrix(r1) = "False" Then
                    
For 0 To .Cols 1
                        
.Row r
                        
.Col c
                        
.CellFontBold True
                    Next c
                End 
If
            
Next r

        End 
If

    
End With

End Sub 
scusate... ho usato la PHP syntax highlighting perché "graficamente" rendeva meglio l'idea...

ESPONGO IL PROBLEMA:
Avviando e selezionando per esempio "Posta in arrivo" che contiene
alcuni messaggi letti la visualizzazione è perfetta.
Selezionando poi la "Posta Inviata" che non ha messaggi, mi visualizza
correttamente solo le testate (prima di chiamare la Sub invoco
MSHFlexGrid1.Clear e MSHFlexGrid1.ClearStructure)
Quando ri-seleziono la "Posta in Arrivo" mi visualizza i dati ma senza
la mia formattazione (quindi le righe azzurre), a meno di cliccare su
ogni singola riga della tabella... ad ogni click la tabella di
"colora" in maniera corretta...

Qualcuno ha idea del perché di questo comportamento? la Sub viene
richiamata sempre e correttamente (ho fatto i test passo-passo...), ma
l'impressione è che graficamente ci sia una sorta di "refresh" da
eseguire o di "cache" da azzerare...

Grazie comunque per l'attenzione
Fiducioso

Mauro