以前写的程序的一些片段:'要引用Microsoft Data Formatting Object Library Private Conn As New ADODB.Connection Private Rs As New ADODB.Recordset Const dY = 20 Const dX = 10 Const WdX = 8 Const HdY = 10 Private Sub Check1_LostFocus() Check1.Visible = False End Sub Private Sub DataGrid1_Click() On Error Resume Next If Not Check1.Visible Then Check1.Move DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left + dX, DataGrid1.Top + DataGrid1.RowTop(DataGrid1.Row) + dY, DataGrid1.Columns(DataGrid1.Col).Width - WdX Check1.DataField = Rs.Fields.Item(DataGrid1.Col).Name Check1.Visible = True End If End Sub Private Sub DataGrid1_ColResize(ByVal ColIndex As Integer, Cancel As Integer) On Error Resume Next Check1.Visible = False If DataGrid1.Columns.Item(DataGrid1.Columns.Count - 1).Left + DataGrid1.Columns.Item(DataGrid1.Columns.Count - 1).Width >= DataGrid1.Width - 270 Then Command3.Visible = True Else Command3.Visible = False End If End Sub
Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer) On Error Resume Next If DataGrid1.Col = 6 Then Check1.Move DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left + dX, DataGrid1.Top + DataGrid1.RowTop(DataGrid1.Row) + dY, DataGrid1.Columns(DataGrid1.Col).Width - WdX Check1.DataField = Rs.Fields.Item(DataGrid1.Col).Name Check1.Visible = True Else Check1.Visible = False End If End Sub Private Sub DataGrid1_Scroll(Cancel As Integer) Check1.Visible = False End Sub Private Sub Form_Load() Check1.BackColor = &HFFFFFF Dim strConn As String strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\销售库存1\data\sale&stock.mdb;Persist Security Info=False" Conn.CursorLocation = adUseClient Conn.Open strConn If Rs.State <> adStateClosed Then Rs.Close Rs.Open "Select *from [order]", Conn, adOpenStatic, adLockOptimistic Set Me.DataGrid1.DataSource = Rs DataGrid1.RowHeight = Check1.Height DataGrid1.AllowRowSizing = False DataGrid1.AllowUpdate = False Check1.Visible = False Set Check1.DataSource = Rs
'下面是分别用三种方式来显示布尔值的例子,可以自定义为自己想要的格式: Dim bFmt1 As New StdDataFormat 'Dim bFmt2 As New StdDataFormat 'Dim bFmt3 As New StdDataFormat
也许数据库中的布尔型数据,到VB里就不是boolean了,你读出数据的时候转换一下吧CBool
Private Conn As New ADODB.Connection
Private Rs As New ADODB.Recordset
Const dY = 20
Const dX = 10
Const WdX = 8
Const HdY = 10
Private Sub Check1_LostFocus()
Check1.Visible = False
End Sub
Private Sub DataGrid1_Click()
On Error Resume Next
If Not Check1.Visible Then
Check1.Move DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left + dX, DataGrid1.Top + DataGrid1.RowTop(DataGrid1.Row) + dY, DataGrid1.Columns(DataGrid1.Col).Width - WdX
Check1.DataField = Rs.Fields.Item(DataGrid1.Col).Name
Check1.Visible = True
End If
End Sub
Private Sub DataGrid1_ColResize(ByVal ColIndex As Integer, Cancel As Integer)
On Error Resume Next
Check1.Visible = False
If DataGrid1.Columns.Item(DataGrid1.Columns.Count - 1).Left + DataGrid1.Columns.Item(DataGrid1.Columns.Count - 1).Width >= DataGrid1.Width - 270 Then
Command3.Visible = True
Else
Command3.Visible = False
End If
End Sub
Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
On Error Resume Next
If DataGrid1.Col = 6 Then
Check1.Move DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left + dX, DataGrid1.Top + DataGrid1.RowTop(DataGrid1.Row) + dY, DataGrid1.Columns(DataGrid1.Col).Width - WdX
Check1.DataField = Rs.Fields.Item(DataGrid1.Col).Name
Check1.Visible = True
Else
Check1.Visible = False
End If
End Sub
Private Sub DataGrid1_Scroll(Cancel As Integer)
Check1.Visible = False
End Sub
Private Sub Form_Load()
Check1.BackColor = &HFFFFFF
Dim strConn As String
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\销售库存1\data\sale&stock.mdb;Persist Security Info=False"
Conn.CursorLocation = adUseClient
Conn.Open strConn
If Rs.State <> adStateClosed Then Rs.Close
Rs.Open "Select *from [order]", Conn, adOpenStatic, adLockOptimistic
Set Me.DataGrid1.DataSource = Rs
DataGrid1.RowHeight = Check1.Height
DataGrid1.AllowRowSizing = False
DataGrid1.AllowUpdate = False
Check1.Visible = False
Set Check1.DataSource = Rs
'下面是分别用三种方式来显示布尔值的例子,可以自定义为自己想要的格式:
Dim bFmt1 As New StdDataFormat
'Dim bFmt2 As New StdDataFormat
'Dim bFmt3 As New StdDataFormat
bFmt1.Type = fmtBoolean
bFmt1.TrueValue = "√"
bFmt1.FalseValue = "×"
bFmt1.NullValue = "?"
Set DataGrid1.Columns(6).DataFormat = bFmt1
'bFmt2.Type = fmtBoolean
'bFmt2.TrueValue = "True" '"√"
'bFmt2.FalseValue = "False" '" ×"
'Set DataGrid1.Columns(6).DataFormat = bFmt2
'bFmt3.Type = fmtBoolean
'bFmt3.TrueValue = "是" '"√"
'bFmt3.FalseValue = "否" '" ×"
'Set DataGrid1.Columns(6).DataFormat = bFmt3
End Sub
及怎样实现复选框呢?
可是不理解你的需要的結果;