Mise en surbrillance de la selection dans une mshflexgrid avec cellules fusionnées

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 992 fois - Téléchargée 35 fois

Contenu du snippet

Lorsque le contrôle MSHflexgrid est utilisé avec des cellules fusionnées (propriété MergeCells <> 0), les sélections effectuées dans la grille ne sont plus mises en surbrillance.
Voici un petit bout de code tout con pour contourner cet inconvénient.

Source / Exemple :


Dim lastRow As Integer

Private Sub Form_Load()

'Dans la cas où on utilise la fusion de cellules
MSHFlexGrid1.MergeCells = flexMergeRestrictRows

'Code valable pour une selection par ligne
MSHFlexGrid1.FocusRect = flexFocusNone
MSHFlexGrid1.SelectionMode = flexSelectionByRow

lastRow = 0

End Sub

Private Sub MSHFlexGrid1_RowColChange()

Dim actuRow As Integer
Dim i as Integer

With MSHFlexGrid1

    'Si pas de changement de ligne on quitte
    If lastRow = .Row Then Exit Sub

    'Si dernière ligne <> 0 on lui remet les couleurs d'origine
    If lastRow <> 0 Then
    
        actuRow = .Row
            
        .Row = lastRow
            
        For i = 0 To .Cols - 1
        
            If i >= .FixedCols Then
                .Col = i
                .CellBackColor = .BackColor
                .CellForeColor = .ForeColor
            End If
                
        Next i
    
        .Row = actuRow
    
    End If
    
    'Mise en surbrillance de la ligne selectionnée
    For i = 0 To .Cols - 1
    
        If i >= .FixedCols Then
            .Col = i
            .CellBackColor = .BackColorSel
            .CellForeColor = .ForeColorSel
        End If
    Next i

    'on retient la dernière ligne pour la déselectionner par la suite
    lastRow = .Row

End With

End Sub

Conclusion :


Ce code n'est valable que pour une sélection par ligne (c'est ce dont j'avais besoin). Mais après il suffit d'adapter ...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.