Newsgroup: it.comp.lang.visual-basic
Titolo: MSHFlexGrid e Merge

Ciao a tutti,
premetto che ho già ricercato su Google e all'interno di MSDN ma purtroppo 
non sono riuscito a cavarci un ragno dal buco.
Il mio problema è questo:
Ho la necessità di popolare una MSHFlexGrid e, quando necessario effettuare 
il merge dei dati (quando identici) su una medesima riga, quindi secondo il 
mio ragionamento unire più colonne appartenenti alla stessa riga (non mi 
interessa il merge tra dati appartenenti alla stessa colonna ma a righe 
differenti).
Ebbene questo non funziona, o meglio non riesco a farlo funzionare, 
sicuramente a causa di un mio macroscopico errore.
Posto di seguito codice di esempio - è necessaria una MSHFlexGrid con 4 
colonne - :
*******************************************
    Dim iNumCols As Integer: iNumCols = 4
    Dim iNumRows As Integer: iNumRows = 1
    Dim i As Integer
    Dim o As Integer: o = 1
    MSHFlexGrid1.MergeCells = flexMergeFree
    ''' Se qui metto true il merge di medesima colonna e differente riga 
funziona
    MSHFlexGrid1.MergeCol(0) = False
    MSHFlexGrid1.MergeCol(1) = False
    MSHFlexGrid1.MergeCol(2) = False
    MSHFlexGrid1.MergeCol(3) = False
    MSHFlexGrid1.ColWidth(0) = 1000
    MSHFlexGrid1.ColWidth(1) = 1000
    MSHFlexGrid1.ColWidth(2) = 1000
    MSHFlexGrid1.ColWidth(3) = 1000
    MSHFlexGrid1.TextMatrix(0, 0) = "Colonna A"
    MSHFlexGrid1.TextMatrix(0, 1) = "Colonna B"
    MSHFlexGrid1.TextMatrix(0, 2) = "Colonna C"
    MSHFlexGrid1.TextMatrix(0, 3) = "Colonna D"
    For i = 1 To 25
        If i Mod 5 = 0 Then
            o = i
        End If
        MSHFlexGrid1.AddItem IIf(i Mod 5 = 0, "Rif. ZZZZ", o & " - " & "A"), 
iNumRows
        MSHFlexGrid1.TextArray(iNumRows * iNumCols + 1) = IIf(i Mod 5 = 0, 
"Rif. ZZZZ", i & " - " & "B")
        MSHFlexGrid1.TextArray(iNumRows * iNumCols + 2) = IIf(i Mod 5 = 0, 
"Rif. ZZZZ", i & " - " & "C")
        MSHFlexGrid1.TextArray(iNumRows * iNumCols + 3) = IIf(i Mod 5 = 0, 
"Rif. ZZZZ", i & " - " & "D")
        MSHFlexGrid1.MergeRow(i) = True
    Next i
**************************************************
Spero di essere stato sufficientemente chiaro nell'esposizione.
Se qualcuno riuscisse a vedere il mio errore sarei riconoscente da qui 
all'eternità ... magari un po' meno dai.
Grazie comunque in anticipo a tutti quelli che daranno uno sguardo a questo 
post.
Ciao
Stefano

 Ebbene questo non funziona, o meglio non riesco a farlo funzionare,
Ciao a tutti,
ho trovato la soluzione, anche se non riesco a capire perchè nel modo in cui 
ho indicato nel precedente post non funzionasse.
Questo è il codice che NON funziona:
   For i = 1 To 25
        [CUT]
        MSHFlexGrid1.MergeRow(i) = True
    Next i
Mentre questo funziona:
   For i = 1 To 25
        [CUT]
        '''MSHFlexGrid1.MergeRow(i) = True '''riga commentata
    Next i
   For i = 1 To 25
        MSHFlexGrid1.MergeRow(i) = True
    Next i
In pratica se il mergerow lo setto dopo che popola la griglia funziona, 
altrimenti no (!)
Sono convinto che da qualche parte sbaglio,ma fino a che non trovo una 
soluzione migliore, userò questo .. (sic) metodo orripilante.
Grazie comunque a tutti, consigli, critiche e dritte varie sono sempre 
gradite.
Ciao
Stefano 

 funziona, altrimenti no (!)
Mi pare giusto. Infatti prima del popolamento il numero di righe da creare
non è noto, e credo che ve ne sia solo 1 piu quella di intestazione.
--
Greg