📄 frmloss.frm
字号:
Private Const HelpID = 60017 '25002
Private mintStepNum As Integer '向导总步骤
Private mintStep As Integer '向导当前步骤
Private mblnEnd As Boolean '完成按扭是否有效
Private mblnValid() As Boolean '向导每步是否合法
Private WithEvents mclsLossGrid As Grid 'Grid对象
Attribute mclsLossGrid.VB_VarHelpID = -1
Private WithEvents mclsLossGrid1 As Grid 'Grid对象
Attribute mclsLossGrid1.VB_VarHelpID = -1
Private WithEvents mclsMainControl As MainControl '主控对象
Attribute mclsMainControl.VB_VarHelpID = -1
Private mVoucherTypeID As Long
Private mTemplateID As Long
Private mAccountID As Long
Private mRemarkID As Long
Private VoucherData() As VoucherRecord '凭证结果
Private mblnCheckAccount As Boolean
Private mlngFormatID As Long
Private Sub Form_Activate()
SetHelpID HelpContextID
mclsMainControl_ChildActive
'进入向导第一步
If Not mblnValid(0) Then
stabWizard.Tab = 0
stabWizard_Click -1
End If
gclsSys.CurrFormName = hWnd
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
On Error Resume Next
If (TypeOf Screen.ActiveControl Is ListText) Then
If Not Screen.ActiveControl.ReferVisible And Not (UCase(Screen.ActiveControl.Name) = "LSTXTACCOUNT") Then
If KeyCode = vbKeyReturn Then
KeyCode = 0
SendKeys "{Tab}", True
End If
End If
ElseIf Not (TypeOf Screen.ActiveControl Is MSFlexGrid) Then
If KeyCode = vbKeyReturn Then
KeyCode = 0
SendKeys "{Tab}", True
End If
End If
End Sub
Private Sub Form_Load()
Height = 5085
Width = 7740
Me.HelpContextID = HelpID
mblnCheckAccount = True
mlngFormatID = 41
'主控对象
Set mclsMainControl = gclsSys.MainControls.Add(Me)
'向导初始化(包括每步仅需初始一次的部分)
mintStepNum = stabWizard.Tabs - 1
mintStep = -1
mblnEnd = False
ReDim mblnValid(mintStepNum)
'社会保险
If gclsBase.AccountSys = "5" And (gclsBase.Trade = "基本养老保险基金" Or gclsBase.Trade = "基本医疗保险基金") Then
stabWizard.TabVisible(1) = True
stabWizard.TabCaption(0) = "统筹基金(&P)"
Else
stabWizard.TabVisible(1) = False
mblnValid(1) = True
End If
End Sub
Private Sub Form_Resize()
If Left < 0 Or Left > Screen.Width Then Left = (Screen.Width - Width) / 2
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
Set mclsLossGrid = Nothing
gclsSys.MainControls.Remove Me
Set mclsMainControl = Nothing
'删除科目参照
If Not lstxtAccount.Recordset Is Nothing Then
Utility.RemoveListRecordSet lrtAccount
End If
If Not ltxtProfit.Recordset Is Nothing Then
Utility.RemoveListRecordSet lrtAccount
End If
If Not lstxtAccount1.Recordset Is Nothing Then
Utility.RemoveListRecordSet lrtAccount
End If
If Not ltxtProfit1.Recordset Is Nothing Then
Utility.RemoveListRecordSet lrtAccount
End If
'删除凭证类型参照
If Not lstxtType.Recordset Is Nothing Then
Utility.RemoveListRecordSet lrtVoucherType
End If
End Sub
'更新与子窗体相关的菜单项的可用性
Private Sub UpdateMenuStatus()
With frmMain
' 设置MDI主窗口菜单可用标志
.mnuEditUndo.Enabled = False
.mnuEditCut.Enabled = False
.mnuEditCopy.Enabled = False
.mnuEditPaste.Enabled = False
.mnuEditInsLine.Enabled = False
.mnuEditDelLine.Enabled = False
.mnuEditEdit.Enabled = False
.mnuEditNew.Enabled = False
.mnuEditDel.Enabled = False
.mnuEditInActive.Enabled = False
.mnuEditShowAll.Enabled = False
.mnuEditShowList.Enabled = False
.mnuEditUse.Enabled = False
.mnuEditNotepad.Enabled = False
.mnuEditFilter.Enabled = False
.mnuEditColumn.Enabled = False
.mnuFilePrintSetup.Enabled = False
.mnuFilePrint.Enabled = False
.mnuReportQuick.Enabled = False
.mnuToolRefresh.Enabled = False
.SetToolBar
End With
End Sub
Private Sub mclsMainControl_ChildActive()
Dim vntMessage As Variant
On Error Resume Next
'响应消息
If fraWizard(2).Tag = "已设置" Then
For Each vntMessage In mclsMainControl.Messages
Select Case vntMessage
Case Message.msgVoucherType
RefreshVoucherType mVoucherTypeID
Case Message.msgTemplate
RefreshTemplate mTemplateID
Case Message.msgAccount
RefreshProfit
RefreshAccount
End Select
Next
mclsMainControl.Messages.Clear
End If
gclsSys.CurrFormName = hWnd
UpdateMenuStatus
End Sub
Private Sub stabWizard_Click(PreviousTab As Integer)
Dim intCnt As Integer
For intCnt = 0 To stabWizard.Tabs - 1
fraWizard(intCnt).Visible = (intCnt = stabWizard.Tab)
Next intCnt
' 若向导进入其他步骤,进行该步骤合法检查
If stabWizard.Tab > mintStep And mintStep < mintStepNum Then
If ValidStep(mintStep) Then
mintStep = stabWizard.Tab
'初始向导步骤
InitStep mintStep
End If
Else
mintStep = stabWizard.Tab
InitStep mintStep
RefreshCmd
End If
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'向导公用过程
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 向导每步合法检查
Private Function ValidStep(ByVal TabIndex As Integer) As Boolean
Dim strMsg As String, lngBottom As Integer
Select Case TabIndex
Case 0: ValidStep = ValidAccount(strMsg) '损益科目
Case 1: ValidStep = ValidAccount1(strMsg) '损益科目
Case 2: ValidStep = ValidOption(strMsg) '凭证选项
Case 3: ValidStep = ValidManner(strMsg) '生成方式
Case 4: ValidStep = ValidResult(strMsg) '执行结帐
Case Else
ValidStep = True
End Select
'返回上一步
If Not ValidStep Then
If mintStep < stabWizard.Tab Then
stabWizard.Tab = mintStep
Else
mintStep = stabWizard.Tab
RefreshCmd
End If
ShowMsg hWnd, strMsg, vbExclamation + vbOKOnly, Caption
End If
'设置每步合法性
If TabIndex <> -1 Then
mblnValid(TabIndex) = ValidStep
End If
End Function
' 向导每步初始设置
Private Sub InitStep(TabIndex As Integer)
Dim lngCnt As Long
Me.MousePointer = vbHourglass
Select Case TabIndex
Case 0: InitAccount '损益科目
Case 1: InitAccount1 '损益科目
Case 2: InitOption '凭证选项
Case 3: InitManner '生成方式
Case 4
For lngCnt = 0 To TabIndex - 1
If Not mblnValid(lngCnt) Then
stabWizard.Tab = lngCnt
End If
Next lngCnt
InitResult '执行结转
End Select
RefreshCmd
Me.MousePointer = vbDefault
End Sub
' 向导完成后需执行的操作
Private Sub Execute()
Dim lngCnt As Long, lngCntDetail As Long
Dim errNo As Long
On Error GoTo errHandle
For lngCnt = 0 To UBound(VoucherData)
If VoucherData(lngCnt).Used Then
VoucherData(lngCnt).TemplateID = lstxtTemplate.TextMatrix(lstxtTemplate.ReferRow, 1)
VoucherData(lngCnt).VoucherTypeID = lstxtType.TextMatrix(lstxtType.ReferRow, 1)
For lngCntDetail = 0 To UBound(VoucherData(lngCnt).Detail)
VoucherData(lngCnt).Detail(lngCntDetail).Remark = Trim$(lstxtRemark.Text)
Next lngCntDetail
End If
Next lngCnt
If Not SaveVoucher(VoucherData) Then
If VoucherData(0).ErrorString <> "" Then
ShowMsg hWnd, "凭证生成失败:" & VoucherData(0).ErrorString, vbOKOnly + vbCritical, Caption
Else
ShowMsg hWnd, "没有凭证生成!", vbOKOnly + vbCritical, Caption
End If
Else
' ShowMsg hWnd, "凭证生成完毕!", vbOKOnly + vbInformation, Caption
gclsSys.SendMessage Me.hWnd, msgReceipt41
For lngCnt = 0 To UBound(VoucherData)
If VoucherData(lngCnt).Saved Then
Me.Hide
BillPublic.ShowBill 50, VoucherData(lngCnt).VoucherID
Exit For
End If
Next lngCnt
End If
Exit Sub
errHandle:
errNo = Errors.ErrorsDeal(True, Me)
Select Case errNo
Case edtResume: Resume
Case edtResumeNext: Resume Next
Case edtCanNotKnown
ShowMsg hWnd, "程序出错:" & Err.Description, vbOKOnly + vbCritical, Caption
End Select
End Sub
Private Sub cmdStep_Click(Index As Integer)
Dim blnUnload As Boolean
Dim strMsg As String
blnUnload = False
Select Case Index
Case 0 '取消
blnUnload = True
Case 1 '上一步
If stabWizard.Tab > 0 Then
If stabWizard.TabVisible(stabWizard.Tab - 1) Then
stabWizard.Tab = stabWizard.Tab - 1
Else
stabWizard.Tab = stabWizard.Tab - 2
End If
End If
Case 2 '下一步
If stabWizard.Tab < mintStepNum Then
If stabWizard.TabVisible(stabWizard.Tab + 1) Then
stabWizard.Tab = stabWizard.Tab + 1
Else
stabWizard.Tab = stabWizard.Tab + 2
End If
End If
Case 3: '完成
If ValidStep(mintStepNum) Then
cmdStep(3).Enabled = False
Execute
blnUnload = True
End If
End Select
If blnUnload Then
Unload Me
End If
End Sub
'重设按扭显示属性
Private Sub RefreshCmd()
Dim lngCnt As Long
Select Case stabWizard.Tab
Case 0
cmdStep(1).Enabled = False
cmdStep(2).Enabled = True
Case mintStepNum
cmdStep(1).Enabled = True
cmdStep(2).Enabled = False
Case Else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -