vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls · MSFlexGrid/DataGrid   |   VB-Versionen: VB5, VB623.02.09
FullRowSelect für das MSFlexGrid-Control

Mit diesem Codeschnipsel erreicht man, dass im FlexGrid immer die gesamte Datenzeile selektiert wird.

Autor:   Wolfgang SchließBewertung:     [ Jetzt bewerten ]Views:  13.510 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Das FlexGrid ist ein beliebtes Control unter VB6. Viele User wünschen sich aber eine Eigenschaft, die es erlaubt, dass immer die gesamte Datenzeile selektiert wird und nicht nur die aktuelle Zelle.

Mit nachfolgendem Tipp kann man genau dieses Verhalten nachbilden.

Option Explicit
' MutliSelect erlauben ja/nein
Private bMultiSelect As Boolean
 
' zuletzt selektierte Datenzeile
Private intSelectedRow As Long
Private Sub Form_Load()
  ' FlexGrid-Eigenschaften
  With MSFlexGrid1
    .AllowBigSelection = False
    .FocusRect = flexFocusNone
    .SelectionMode = flexSelectionByRow
    .FixedCols = 0
 
    .Rows = 20
    .Cols = 5
  End With
 
  bMultiSelect = False
End Sub
Private Sub MSFlexGrid1_GotFocus()
  ' Bei Fokuserhalt bspw. durch die TAB-Taste,
  ' sicherstellen, dass die gesamte Zeile selektiert wird
  With MSFlexGrid1
    If .Row > 0 Then
      MarkLine .Row
    End If
  End With
End Sub
Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, _
  x As Single, y As Single)
 
  ' Datenzeile "merken"
  intSelectedRow = MSFlexGrid1.MouseRow
End Sub
Private Sub MSFlexGrid1_MouseMove(Button As Integer, Shift As Integer, _
  x As Single, y As Single)
 
  With MSFlexGrid1
    If Button <> 0 And Not bMultiSelect Then
      ' wenn kein MultiSelect, sicherstellen, dass immer nur die Datenzeile
      ' selektiert ist, unter der sich der Mauszeiger befindet
      If intSelectedRow <> .MouseRow And .MouseRow > 0 Then
        intSelectedRow = .MouseRow
        MarkLine intSelectedRow
      End If
    End If
  End With
End Sub
Private Sub MarkLine(ByVal Row As Long)
  ' Markiert die gesamte angegebene Datenzeile
  With MSFlexGrid1
    .Row = Row
    .RowSel = .Row
    .Col = .FixedCols
    .ColSel = .Cols - 1
  End With
End Sub

Dieser Tipp wurde bereits 13.510 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel