VB6: Bei Datagrid eine Zeile selektieren?

08/10/2007 - 09:09 von Alois Blaimer | Report spam
Hallo!

Wie kann ich beim Datagrid vom Programm aus eine Zeile selektieren?

Gruss
Alois Blaimer
 

Lesen sie die antworten

#1 Peter Götz
08/10/2007 - 10:17 | Warnen spam
Hallo Alois,

Wie kann ich beim Datagrid vom Programm
aus eine Zeile selektieren?



Das DataGrid hat eine SelBookmarks-Auflistung und
deren Inhalt bestimmt, welche Zeilen eines DataGrids
markiert dargestellt werden.

Du musst also erst mal die Bookmark des zu
markierenden Datensatzes ermitteln. Das kann
via

Dim Y as Long
Dim BM as variant
BM = Recordset.Bookmark

oder

y = 123
BM = DataGrid.GetBookmark(x)

oder

Y = 5
BM = DataGrid.RowBookmark(x)

geschehen. Den Unterschied zwischen .GetBookmark
und .RowBookmark erklàrt die Online-Hilfe zum
DataGrid sehr aufschlussreich.

Hier mal ein kleines Beispiel.

' Code in einer Form "Form1" mit
' 1 DataGrid "DGrid"
' /// Beginn Code Form1
Option Explicit

Private WithEvents mRS As ADODB.Recordset

Private Sub Form_Load()
Dim i As Long
Dim BM As Variant

Me.ScaleMode = vbPixels
CreateData
Set DGrid.DataSource = mRS

Me.Show
mRS.MoveFirst

For i = 0 To mRS.RecordCount - 1
If MsgBox("Zeile " & CStr(i) & " markieren?", _
vbQuestion Or vbYesNo) = vbYes Then

BM = DGrid.GetBookmark(i)
DGrid.SelBookmarks.Add BM
End If
Next i
End Sub

Private Sub Form_Resize()
Dim H As Single
Dim W As Single
H = Me.ScaleHeight - 20
W = Me.ScaleWidth - 20
If H < 0 Then
H = 0
End If
If W < 0 Then
W = 0
End If
DGrid.Move 10, 10, W, H
End Sub

Private Sub CreateData()
Dim i As Long
Set mRS = New ADODB.Recordset
With mRS
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockBatchOptimistic
.Fields.Append "ID", adInteger
.Fields.Append "Monat", adVarChar, 24
.Open
For i = 1 To 12
.AddNew
.Fields(0).Value = i
.Fields(1).Value = MonthName(i)
.Update
Next i
End With
End Sub
' \\\ E N T E


Die Markierung einer Zeile im DataGrid kannst
Du mit

DGrid.SelBookmarks.Remove (Index)

wieder zurücksetzen. Um alle Markierungen
zurückzusetzen schreibst Du einfach

Do While DGrid.SelBookmarks.Count > 0
DGrid.SelBookmarks.Remove 0
Loop

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen