?? frmtestdiy.frm
字號:
Private Sub cmdExit_Click()
Unload Me '關(guān)閉手工選題窗口
SelectTest.Show '顯示試卷定制窗口
End Sub
Private Sub cmdOk_Click()
Dim i%, s%, a, b, c, d
'檢查是否選足小題數(shù)
If iJ > lstJudge.ListCount Then
MsgBox "未選夠判斷題,還差" & Trim(Str(iJ - lstJudge.ListCount)) _
& "道題!", vbCritical, Me.Caption
ElseIf iSO > lstSelOne.ListCount Then
MsgBox "未選夠選擇題,還差" & Trim(Str(iSO - lstSelOne.ListCount)) _
& "道題!", vbCritical, Me.Caption
ElseIf iPR > iDPR(1) + iDPR(2) * 2 + iDPR(3) * 3 Then
MsgBox "未選夠程序閱讀題,還差" _
& Trim(Str(iPR - (iDPR(1) + iDPR(2) * 2 + iDPR(3) * 3))) _
& "道題!", vbCritical, Me.Caption
ElseIf iPF > iDPF(1) * 2 + iDPF(2) * 3 + iDPF(3) * 4 Then
MsgBox "未選夠程序填空題,還差" _
& Trim(Str(iPF - (iDPF(1) * 2 + iDPF(2) * 3 + iDPF(3) * 4))) _
& "道題!", vbCritical, Me.Caption
Else
'保存選擇的試題
For i = 0 To lstJudge.ListCount - 1
vJ(i + 1) = Val(lstJudge.List(i))
Next
SelectTest.Judge = vJ '使用屬性過程返回選擇試題
For i = 0 To lstSelOne.ListCount - 1
vS(i + 1) = Val(lstSelOne.List(i))
Next
SelectTest.SelOne = vS '使用屬性過程返回選擇試題
For i = 0 To lstProRead.ListCount - 1
vPR(i + 1) = Val(lstProRead.List(i))
Next
For i = lstProRead.ListCount + 1 To UBound(vPR)
vPR(i) = 0
Next
SelectTest.ProRead = vPR '使用屬性過程返回選擇試題
For i = 0 To lstProFill.ListCount - 1
vPF(i + 1) = Val(lstProFill.List(i))
Next
For i = lstProFill.ListCount + 1 To UBound(vPF)
vPF(i) = 0
Next
SelectTest.ProFill = vPF '使用屬性過程返回選擇試題
Unload Me '關(guān)閉手工選題窗口
SelectTest.Show '顯示試卷定制窗口
End If
End Sub
Private Sub Form_Load()
Dim i%, m%, Code$, j%
Set objTemp = objJudge.Clone
cmdMove(0).Value = True
cmbType.ListIndex = 0
'獲得各類型題的小題數(shù)量
iJ = Val(SelectTest.txtSum(0))
iSO = Val(SelectTest.txtSum(1))
iPR = Val(SelectTest.txtSum(2))
iPF = Val(SelectTest.txtSum(3))
For i = 1 To 3
iDivPR(i) = Val(SelectTest.txtDivSum(i - 1))
iDivPF(i) = Val(SelectTest.txtDivSum(i + 2))
Next
'計算已選程序閱讀和程序填空的分題數(shù)
vJ = SelectTest.Judge
vS = SelectTest.SelOne
vPR = SelectTest.ProRead
vPF = SelectTest.ProFill
For i = 0 To 3
iDPR(i) = 0
iDPF(i) = 0
Next
For i = 0 To UBound(vPF)
If vPF(i) <> 0 Then
Code = Trim(Str(vPF(i)))
With objProFill
'計算選中題的分題干數(shù)
.MoveFirst
.Find "編號=" & Code & ""
m = 0
For j = 1 To 4
If .Fields("空" & Chr(96 + j)) <> "" Then m = m + 1
Next
iDPF(m - 1) = iDPF(m - 1) + 1
End With
End If
Next
For i = 0 To UBound(vPR)
If vPR(i) <> 0 Then
Code = Trim(Str(vPR(i)))
With objProRead
'計算選中題的分題干數(shù)
.MoveFirst
.Find "編號=" & Code & ""
m = 0
For j = 1 To 3
If .Fields("分題干" & Trim(Str(j))) <> "" Then m = m + 1
Next
iDPR(m) = iDPR(m) + 1
End With
End If
Next
For i = 0 To 2
lblPF(i) = "應(yīng)選" & Trim(Str(iDivPF(i + 1))) & "道,差" _
& Trim(Str(iDivPF(i + 1) - iDPF(i + 1))) & "道"
lblPR(i) = "應(yīng)選" & Trim(Str(iDivPR(i + 1))) & "道,差" _
& Trim(Str(iDivPR(i + 1) - iDPR(i + 1))) & "道"
Next
lblJudge = "判斷題(" & SelectTest.txtSum(0) & ")"
lblSelOne = "選擇題(" & SelectTest.txtSum(1) & ")"
lblProRead = "程序閱讀題(" & SelectTest.txtSum(2) & ")"
lblProFill = "程序填空題(" & SelectTest.txtSum(3) & ")"
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set objTemp = Nothing
End Sub
Private Sub cmdMove_Click(Index As Integer)
With objTemp
Select Case Index '切換當前記錄
Case 0 '使第一個記錄成為當前記錄
If .RecordCount > 0 Then .MoveFirst
Case 1 '使上一個記錄成為當前記錄
If .RecordCount > 0 And Not .BOF Then
.MovePrevious
If .BOF Then .MoveFirst
End If
Case 2 '使下一個記錄成為當前記錄
If .RecordCount > 0 And Not .EOF Then
.MoveNext
If .EOF Then .MoveLast
End If
Case 3 '使最后一個記錄成為當前記錄
If .RecordCount > 0 Then .MoveLast
End Select
If .RecordCount < 1 Then
txtNews = "記錄:無" '顯示無記錄提示
txtTest = ""
Else
'顯示當前記錄數(shù)據(jù)
Show_Data
End If
End With
End Sub
Private Sub Add_Item(objList As ListBox)
Dim Code$, i%, m%, j%
Code = objTemp.Fields("編號")
If objList.ListCount > 0 Then
'檢查是否已存在相同題號
For i = 0 To objList.ListCount - 1
If objList.List(i) = Code Then Exit For
Next
If i < objList.ListCount Then
MsgBox "已選擇了該題!", vbCritical, Me.Caption
Else
If cmbType.ListIndex = 2 Then
'計算選中題的分題干數(shù)
m = 0
For j = 1 To 3
If objTemp.Fields("分題干" & Trim(Str(j))) <> "" Then m = m + 1
Next
If iDivPR(m) = 0 Then
MsgBox "你沒有設(shè)置選擇分題干數(shù)為" & Trim(Str(m)) & "程序閱讀題!", _
vbCritical, Me.Caption
ElseIf iDPR(m) < iDivPR(m) Then
objList.AddItem Code
iDPR(m) = iDPR(m) + 1
lblPR(m - 1) = "應(yīng)選" & Trim(Str(iDivPR(m))) & "道,差" _
& Trim(Str(iDivPR(m) - iDPR(m))) & "道"
Else
MsgBox "分題干數(shù)為" & Trim(Str(m)) & "已夠!", vbCritical, Me.Caption
End If
ElseIf cmbType.ListIndex = 3 Then
'計算選中題的填空數(shù)
m = 0
For j = 1 To 4
If objTemp.Fields("空" & Chr(96 + j)) <> "" Then m = m + 1
Next
If iDivPF(m - 1) = 0 Then
MsgBox "你沒有設(shè)置選擇填空數(shù)為" & Trim(Str(m)) & "程序填空題!", _
vbCritical, Me.Caption
ElseIf iDPF(m - 1) < iDivPF(m - 1) Then
objList.AddItem Code
iDPF(m - 1) = iDPF(m - 1) + 1
lblPF(m - 2) = "應(yīng)選" & Trim(Str(iDivPF(m - 1))) & "道,差" _
& Trim(Str(iDivPF(m - 1) - iDPF(m - 1))) & "道"
Else
MsgBox "填空數(shù)為" & Trim(Str(m)) & "已夠!", vbCritical, Me.Caption
End If
Else
objList.AddItem Code
End If
End If
Else
If cmbType.ListIndex = 2 Then
'計算選中題的分題干數(shù)
m = 0
For j = 1 To 3
If objTemp.Fields("分題干" & Trim(Str(j))) <> "" Then m = m + 1
Next
If iDivPR(m) = 0 Then
MsgBox "你沒有設(shè)置選擇填空數(shù)為" & Trim(Str(m)) & "程序填空題!", _
vbCritical, Me.Caption
Else
objList.AddItem Code
iDPR(m) = iDPR(m) + 1
lblPR(m - 1) = "應(yīng)選" & Trim(Str(iDivPR(m))) & "道,差" _
& Trim(Str(iDivPR(m) - iDPR(m))) & "道"
End If
ElseIf cmbType.ListIndex = 3 Then
'計算選中題的填空數(shù)
m = 0
For j = 1 To 4
If objTemp.Fields("空" & Chr(96 + j)) <> "" Then m = m + 1
Next
If iDivPF(m - 1) = 0 Then
MsgBox "你沒有設(shè)置選擇填空數(shù)為" & Trim(Str(m)) & "程序填空題!", _
vbCritical, Me.Caption
Else
objList.AddItem Code
iDPF(m - 1) = iDPF(m - 1) + 1
lblPF(m - 2) = "應(yīng)選" & Trim(Str(iDivPF(m - 1))) & "道,差" _
& Trim(Str(iDivPF(m - 1) - iDPF(m - 1))) & "道"
End If
Else
objList.AddItem Code
End If
End If
End Sub
Private Sub lstJudge_Click()
'顯示試題內(nèi)容
cmbType.ListIndex = 0
Set objTemp = objJudge.Clone
objTemp.Find "編號='" & lstJudge.List(lstJudge.ListIndex) & "'"
Show_Data
End Sub
Private Sub lstSelOne_Click()
'顯示試題內(nèi)容
cmbType.ListIndex = 1
Set objTemp = objSelOne.Clone
objTemp.Find "編號='" & lstSelOne.List(lstSelOne.ListIndex) & "'"
Show_Data
End Sub
Private Sub lstProRead_Click()
'顯示試題內(nèi)容
cmbType.ListIndex = 2
Set objTemp = objProRead.Clone
objTemp.Find "編號='" & lstProRead.List(lstProRead.ListIndex) & "'"
Show_Data
End Sub
Private Sub lstProFill_Click()
'顯示試題內(nèi)容
cmbType.ListIndex = 3
Set objTemp = objProFill.Clone
objTemp.Find "編號='" & lstProFill.List(lstProFill.ListIndex) & "'"
Show_Data
End Sub
Private Sub lstJudge_DblClick()
lstJudge.RemoveItem lstJudge.ListIndex
End Sub
Private Sub lstSelOne_DblClick()
lstSelOne.RemoveItem lstSelOne.ListIndex
End Sub
Private Sub lstProFill_DblClick()
Dim Code$, m%, i%
Code = lstProFill.List(lstProFill.ListIndex)
lstProFill.RemoveItem lstProFill.ListIndex
With objProFill
'計算選中題的分題干數(shù)
.MoveFirst
.Find "編號=" & Code & ""
m = 0
For i = 1 To 4
If .Fields("空" & Chr(96 + i)) <> "" Then m = m + 1
Next
iDPF(m - 1) = iDPF(m - 1) - 1
lblPF(m - 2) = "應(yīng)選" & Trim(Str(iDivPF(m - 1))) & "道,差" _
& Trim(Str(iDivPF(m - 1) - iDPF(m - 1))) & "道"
End With
End Sub
Private Sub lstProRead_DblClick()
Dim Code$, m%, i%
Code = lstProRead.List(lstProRead.ListIndex)
lstProRead.RemoveItem lstProRead.ListIndex
With objProRead
'計算選中題的分題干數(shù)
.MoveFirst
.Find "編號=" & Code & ""
m = 0
For i = 1 To 3
If .Fields("分題干" & Trim(Str(i))) <> "" Then m = m + 1
Next
iDPR(m) = iDPR(m) - 1
lblPR(m - 1) = "應(yīng)選" & Trim(Str(iDivPR(m))) & "道,差" _
& Trim(Str(iDivPR(m) - iDPF(m))) & "道"
End With
End Sub
Private Sub Show_Data()
Dim strData$
With objTemp
Select Case cmbType.ListIndex
Case 0, 3 '顯示判斷題或程序填空題
txtTest = "編號:" & .Fields("編號") & vbCrLf & .Fields("題干")
Case 1 '顯示選擇題
txtTest = "編號:" & .Fields("編號") & vbCrLf & .Fields("題干")
txtTest = txtTest & vbCrLf & " (A)" & .Fields("選項a")
txtTest = txtTest & vbCrLf & " (B)" & .Fields("選項b")
txtTest = txtTest & vbCrLf & " (C)" & .Fields("選項c")
txtTest = txtTest & vbCrLf & " (D)" & .Fields("選項d")
Case 2 '顯示程序閱讀題
txtTest = "編號:" & .Fields("編號") & vbCrLf _
& .Fields("題干") & vbCrLf & "(1)" & .Fields("分題干1")
strData = Replace(.Fields("選項1a"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (A)" & strData
strData = Replace(.Fields("選項1b"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (B)" & strData
strData = Replace(.Fields("選項1c"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (C)" & strData
strData = Replace(.Fields("選項1d"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (D)" & strData
If .Fields("分題干2") <> "" Then
txtTest = txtTest & vbCrLf & "(2)" & .Fields("分題干2")
strData = Replace(.Fields("選項2a"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (A)" & strData
strData = Replace(.Fields("選項2b"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (B)" & strData
strData = Replace(.Fields("選項2c"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (C)" & strData
strData = Replace(.Fields("選項2d"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (D)" & strData
End If
If .Fields("分題干3") <> "" Then
If .Fields("分題干2") <> "" Then
txtTest = txtTest & vbCrLf & "(3)" & .Fields("分題干3")
Else
txtTest = txtTest & vbCrLf & "(2)" & .Fields("分題干3")
End If
strData = Replace(.Fields("選項3a"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (A)" & strData
strData = Replace(.Fields("選項3b"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (B)" & strData
strData = Replace(.Fields("選項3c"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (C)" & strData
strData = Replace(.Fields("選項3d"), Chr(13) & Chr(10), Chr(13) & Chr(10) & Space(10))
txtTest = txtTest & vbCrLf & " (D)" & strData
End If
End Select
'顯示當前記錄編號和記錄總數(shù)
txtNews = "記錄:" & .AbsolutePosition & "/" & .RecordCount
End With
End Sub
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -