Rubrik: Controls · sev-Controls | VB-Versionen: VB5, VB6 | 22.07.04 |
Navigieren im sevDataGrid bei doppelten Einträgen Dieser Tipp zeigt, wie man beim Navigieren im sevDataGrid doppelte Einträge einer Spalte überspringen kann. | ||
Autor: Wolfgang Müller | Bewertung: | Views: 9.740 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Vor kurzem haben wir Ihnen gezeigt, wie man im sevDataGrid-Control doppelte Einträge einer Spalte "ausblenden" kann. Heute zeigen wir, wie man genau diese doppelte Einträge beim Navigieren mit den Cursortasten (Auf/Ab) überspringen kann.
Dazu wird folgender Code im KeyDown-Ereignis benötigt. Das Beispiel überspringt alle doppelten Einträge in Spalte 1, wenn Shift+Down gedrückt wird.
Private Sub Grid1_KeyDown(KeyCode As Integer, Shift As Integer) If Shift = 1 Then With Grid1 If KeyCode = 40 And .Row > 0 Then KeyCode = 0 Grid1.FindNext "Gewerk<>" & .Text(.Row, 1) End If End With End If End Sub
Leider funktioniert dies nur in Richtung Tabellenende. Für das Überspringen in Richtung Tabellenanfang fehlt eine FindPrevious-Methode, so dass wir uns mit nachfolgendem Code behelfen müssen:
Private Sub Grid1_KeyDown(KeyCode As Integer, Shift As Integer) Dim nRow As Long Dim sText As String If Shift = 1 Then With Grid1 If KeyCode = vbkeyDown And .Row > 0 Then ' nach unten bewegen ' (funktioniert nur im Recordset-Mode) KeyCode = 0 Grid1.FindNext "Gewerk<>" & .Text(.Row, 1) ElseIf KeyCode = vbKeyUp And .Row > 1 Then ' nach oben bewegen KeyCode = 0 nRow = .Row - 1 sText = .Text(nRow, 1) Do Until .Text(nRow, 1) <> sText Or nRow = 0 nRow = nRow - 1 Loop .Row = nRow + 1 End If End With End If End Sub