|
|
 |
Navigieren im sevDataGrid bei doppelten Einträgen Dieser Tipp zeigt, wie man beim Navigieren im sevDataGrid doppelte Einträge einer Spalte überspringen kann.
 |
Produktversionen: | sevDataGrid 1.0/2.0 |
VB-Versionen: | VB5/6, MS-Access |
Autor: | Wolfgang Müller |
Datum: | 22.07.04 |
Views: | 6404 |
|
|
|
  |
|
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
Zurück zur Übersichtsseite
|