笨方法:
绑定到TextBox控件上,
TextBox隐藏。
ChechBox_Chang()
if CheckBox.Text="男" then
TextBox.Text="True"
ElseIf CheckBox.Text="女"
TextBox.Text="False"
Endif
end sub
然后在TextBox_Chang()
里面写相应的语句。
下面这个例子 实现了MSFlexGrid control 中 显示 checkboxes
Option Explicit
Private Sub SetRow(ByVal idx As Integer, ByVal person_name As String, ByVal needs_air As Boolean, ByVal needs_hotel As Boolean, ByVal needs_car As Boolean)
With MSFlexGrid1
.TextMatrix(idx, 0) = person_name
.Row = idx
.Col = 1
If needs_air Then
Set .CellPicture = picChecked.Picture
Else
Set .CellPicture = picUnchecked.Picture
End If
.Col = 2
If needs_hotel Then
Set .CellPicture = picChecked.Picture
Else
Set .CellPicture = picUnchecked.Picture
End If
.Col = 3
If needs_car Then
Set .CellPicture = picChecked.Picture
Else
Set .CellPicture = picUnchecked.Picture
End If
End With
End Sub
Private Sub Form_Load()
With MSFlexGrid1
.BackColor = & HE0E0E0
.Rows = 4
.Cols = 4
.FixedCols = 1
.FixedRows = 1
.TextMatrix(0, 0) = "Name"
.TextMatrix(0, 1) = "Air"
.TextMatrix(0, 2) = "Hotel"
.TextMatrix(0, 3) = "Car"
End With
SetRow 1, "Alice", True, True, False
SetRow 2, "Bob", True, False, False
SetRow 3, "Carter", False, False, True
End Sub
Private Sub Form_Resize()
MSFlexGrid1.Move 0, 0, ScaleWidth, ScaleHeight
End Sub
' Toggle the check box.
Private Sub MSFlexGrid1_Click()
If MSFlexGrid1.Col < 1 Or MSFlexGrid1.Row < 1 Then Exit Sub
If MSFlexGrid1.CellPicture = picChecked Then
Set MSFlexGrid1.CellPicture = picUnchecked
Else
Set MSFlexGrid1.CellPicture = picChecked
End If
End Sub
Dim adoRecordset As 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 Command1_Click()
Form1.Show vbModal
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 = adoRecordset.Fields.Item(DataGrid1.Col).Name
Check1.Visible = True
'Check1.SetFocus
End If
End Sub
Private Sub DataGrid1_ColResize(ByVal ColIndex As Integer, Cancel As Integer)
On Error Resume Next
'Check1.Width = DataGrid1.Columns(DataGrid1.Col).Width - wdX
'Check1.Left = DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left + dX
'Check1.Top = DataGrid1.Top + DataGrid1.RowTop(DataGrid1.Row) + dY
'Check1.Move DataGrid1.Left + DataGrid1.Columns(DataGrid1.Col).Left + dX, DataGrid1.Top + DataGrid1.RowTop(DataGrid1.Row) + dY, DataGrid1.Columns(DataGrid1.Col).Width - WdX
Check1.Visible = False
'Dim temp As Long
'For i = 0 To DataGrid1.Columns.Count - 1
' temp = temp + DataGrid1.Columns.Item(i).Width
'Next i
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)
Private Sub DataGrid1_Scroll(Cancel As Integer)
Check1.Visible = False
End Sub
Private Sub DataGrid1_SplitChange()
'Check1.Visible = False
End Sub
Private Sub Form_Load()
Set adoRecordset = New ADODB.Recordset '测试用记录集
For i = 0 To 3
adoRecordset.Fields.Append "fld" & i, adBoolean
Next i
adoRecordset.Open
Dim b As Boolean
For i = 0 To 10
b = Not (b)
adoRecordset.AddNew Array("fld0", "fld1", "fld2", "fld3"), Array(b, Not b, b, Not b)
Next i