2011-06-22 6 views
1

J'utilise un contrôle ComponentOne TrueDBGrid, avec la barre de filtre activée. Je voudrais modifier le comportement par défaut de sorte que lorsque l'on clique sur une cellule dans la barre de filtre, le texte de cette cellule est automatiquement sélectionné. Normalement, j'allume un événement MouseDown et j'utilise la méthode CellContaining pour vérifier quelle cellule a été cliquée, mais cela ne renvoie que -1 pour la ligne et la colonne de la barre de filtrage. Donc, je ne peux pas identifier une cellule individuelle, et je ne sais pas comment sélectionner une cellule particulière dans la barre de filtrage.Sélectionnez par programme ComponentOne TrueDBGrid Filterbar

Quelqu'un at-il des suggestions comment je pourrais le faire?

Répondre

1

Publication d'une solution au cas où quelqu'un d'autre rencontrerait ce problème.

Vous devez capturer le type d'élément de grille sous la coordonnée sur laquelle vous avez cliqué, en utilisant PointAtEnum. Ensuite, vous pouvez simplement définir la cellule dans EditMode en définissant la propriété EditActive de la grille sur True. Et voici comment vous le faites à l'événement MouseUp:

Private Sub C1TrueDBGrid1_MouseUp(sender As Object, _ 
       e As System.Windows.Forms.MouseEventArgs) _ 
        Handles C1TrueDBGrid1.MouseUp 

If Me.C1TrueDBGrid1.PointAt(e.X, e.Y) = _ 
    C1.Win.C1TrueDBGrid.PointAtEnum.AtFilterBar Then 
    Me.C1TrueDBGrid1.EditActive = True 
End If 

End Sub 
+0

Travaillé comme un charme, et fixé un ennui majeur avec ce contrôle de la grille - merci! –

Questions connexes