代碼如下:
Private Sub sdrbb_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim RowValue, ColValue
RowValue = sdrbb.RowContaining(Y)
ColValue = sdrbb.ColContaining(X)
If RowValue >= 0 And RowValue <= sdrbb.VisibleRows And _
ColValue >= 0 And ColValue <= sdrbb.VisibleCols Then
sdrbb.Row = RowValue
End If
Adodc1.Recordset.MoveFirst
If RowValue < 0 Then Exit Sub
Adodc1.Recordset.Move RowValue
If Button = 2 Then '如果是滑鼠右鍵按下時
Me.PopupMenu mnuDayinPJ2, 0, X + sdrbb.Left, Y + sdrbb.Top '彈出右鍵選單
End If
End Sub
以上代碼存在的問題是,當我右鍵點擊比如第200條記錄所在的行時,而這條記錄處于當前顯示屏的第3行時,在右鍵點擊后,出現的右鍵選單下顯示的記錄變成為整個記錄集的第3條記錄。
請問大家如何解決,有沒有更好的辦法,謝謝大家 。
uj5u.com熱心網友回復:
加上顯示屏第一行的實際行值就可以了。比如分屏顯示時,要計算當前是第幾屏以及每屏多少條記錄,還需要計算滾動條的位置等等......總之,需要計算一下的。
uj5u.com熱心網友回復:
DataGrid 控制元件的 Row 屬性與 MSHFlexGrid 不同,是當前可能的行號。一般使用 DataGrid 是基于記錄集操作的,而不是 DataGrid 的行。
uj5u.com熱心網友回復:
是當前可見的行號。uj5u.com熱心網友回復:
好久不用datagrid了.當初剛開始接觸資料庫的時候倒是用過, 圖的是它鏈接資料庫方便, 還能直接編輯.
后來才發現, 在"方便"和"自由"中做個選擇并不困難.
當你學會手工代碼可以實作資料庫操作和內容編輯之后, grid只是一個顯示的工具, 內嵌的功能反而束縛了你的手腳.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/110927.html
標籤:VB基礎類
