⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmfixedandsalaryanaly.frm

📁 金算盘软件代码
💻 FRM
📖 第 1 页 / 共 5 页
字号:
    Set mclsHook = New Hook
    mclsHook.SetHook MsgFilter.hWnd
    
    '初始化界面
    mintTempMaxStep = mintMaxStep
    If txtReportName <> "" Then
        cmdNextStep.Enabled = True
    Else
        cmdNextStep.Enabled = False
    End If
    tabWizardPages.Tab = 0                                              '初始化页面 Tab = 0
    loadResPic
    Set Me.Icon = Utility.GetFormResPicture(139, vbResIcon)
    '设置ListText的显示格式
    Exit Sub
    Dim edtErrReturn As ErrDealType
ErrHandler:
    edtErrReturn = Errors.ErrorsDeal
    If edtErrReturn = edtResume Then
         Resume
    Else
         On Error Resume Next
         Unload MsgForm
         Unload Me
    End If
End Sub

Private Sub Form_Resize()
    If Me.Height <> lngFormHeight Then
        Me.Height = lngFormHeight
    End If
    If Me.width <> lngFormWidth Then
        Me.width = lngFormWidth
    End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set mclsFinanceRptWiz = Nothing
    Set mclsHook = Nothing
    Set mclsFilter = Nothing
    Erase mstrFixedColumnsString
    Erase strSelected
'    Filter.DestroyImageList ImageList1
    UnloadResPic
    mintStepNow = 0
    mintTabIndex = 0
End Sub

Private Sub lstAll_Click()
    '设置按钮 ToRight 的 Enabled 属性:只有选择一项后,才能有效
    cmdToRight.Enabled = True
    If lstAll.ListCount <= 0 Then
        cmdToRight.Enabled = False
    End If
End Sub

Private Sub lstAll_DblClick()
    cmdToRight = True
End Sub

Private Sub lstSelectedItem_Click()
    cmdToLeft.Enabled = True
    If lstSelectedItem.ListIndex = 0 Then
        cmdUpWard.Enabled = False
    Else
        cmdUpWard.Enabled = True
    End If
    If lstSelectedItem.ListIndex = lstSelectedItem.ListCount - 1 Then
        cmdDownWard.Enabled = False
    Else
        cmdDownWard.Enabled = True
    End If
End Sub

Private Sub lstSelectedItem_DblClick()
    Dim blnIsIn As Boolean
    Dim intFixedCount As Integer
    For intFixedCount = 0 To mintFixedColumns - 1
        If lstSelectedItem.Text = mstrFixedColumnsString(intFixedCount) Then
            blnIsIn = True
        Else
            blnIsIn = False
        End If
        
        If blnIsIn = True Then
            Exit For
        End If
    Next
    If blnIsIn = False Then
        cmdToLeft = True
    Else
        cmdToLeft = False
    End If
    If lstSelectedItem.ListCount <= 0 Then
        cmdToLeft.Enabled = False
    End If
End Sub
Private Sub tabWizardPages_Click(PreviousTab As Integer)
    mlngStepNum = tabWizardPages.Tab + 1
    If mlngStepNum = 2 Then
        If txtReportName.Text = "" Then
            ComEnabled
            mlngStepNum = 1
            ShowStep
            cmdNextStep.Enabled = False
            txtReportName.SetFocus
            Exit Sub
        End If
    End If
    If mlngStepNum > 2 Then
        If CondIsValid = False Then
            Exit Sub
        End If
    End If
    If mlngStepNum = 3 And mblnNextStep = False Then
        If SalaryItemIsMultiSel = True Then
            ShowMsg Me.hWnd, "“" & mclsFinanceRptWiz.ReportName & "”只允许选择一个工资项目;若多选,默认为第一个项目。", vbInformation + vbOKOnly, App.title
        End If
    End If
    mblnNextStep = False
    ComEnabled
End Sub

Private Sub tvwFilter_Collapse(ByVal Node As msComctlLib.Node)
    mclsFilter.tvwFilter_Collapse Me, Node
End Sub

Private Sub TxtFrom_KeyDown(KeyCode As Integer, Shift As Integer)
     mclsFilter.TxtFrom_KeyDown Me, KeyCode, Shift
End Sub

Private Sub txtReportName_Change()
    If Trim(txtReportName) <> "" Then
        cmdNextStep.Enabled = True
    Else
        txtReportName.Text = Trim(txtReportName)
        mlngStepNum = 1
        ShowStep
        ComEnabled
        cmdNextStep.Enabled = False
    End If
End Sub

Private Sub txtReportName_LostFocus()
    txtReportName = Trim(txtReportName)
End Sub

'初始化数据来源和数据类型
Private Sub GetDataSource()
End Sub
'涮新按钮的 Enabled 属性
Private Sub ComEnabled(Optional blnIsComplete As Boolean)
    Static blnIsSowMsg As Boolean
    Dim strErrString As String
    If mlngStepNum = 1 Then
        cmdPriorStep.Enabled = False
    Else
        cmdPriorStep.Enabled = True
    End If
    If mlngStepNum = mintTempMaxStep Then
        cmdNextStep.Enabled = False
    Else
       cmdNextStep.Enabled = True
    End If
    If mlngStepNum = mintTempMaxStep Then
       cmdComplete.Enabled = True
    Else
        If mintTempMaxStep <> 2 Then
            cmdComplete.Enabled = False
        Else
            cmdComplete.Enabled = True
        End If
    End If
    If mlngStepNum >= 2 Then
        If txtReportName = "" Then
            ShowMsg Me.hWnd, "报表名不能为空!", vbExclamation + vbOKOnly, App.title
            cmdNextStep.Enabled = False
            txtReportName.SetFocus
            mlngStepNum = 1
            ShowStep
            blnIsComplete = False
            Exit Sub
        End If
        If NameIsErr(txtReportName, strErrString) = True Then
            ShowMsg Me.hWnd, "报表名称中包含非法字符" & strErrString & "!", vbExclamation + vbOKOnly, App.title
            cmdNextStep.Enabled = False
            txtReportName.SetFocus
            mlngStepNum = 1
            ShowStep
            blnIsComplete = False
            Exit Sub
        End If
        CmdReset.Visible = True
        mblnHasDeleted = False
        mstrReferPeriodType = ""
        mstrReportPeriodType = ""
        mstrAnalyPeriodType = ""
        If MsgFilter.Rows <= 2 Then
            cmdComplete.Enabled = False
        End If
    Else
        CmdReset.Visible = False
    End If
    If CanComplete = False Then ' Or (mstrAnalyPeriodType = mstrReferPeriodType And (Trim(mstrAnalyPeriodType) <> "自定义" Or Trim(mstrReferPeriodType) <> "自定义")) Then
        If mintTempMaxStep > 2 Then
            cmdComplete.Enabled = False
        Else
            cmdComplete.Enabled = True
        End If
        mblnIsComplete = False
    Else
        cmdComplete.Enabled = True
        mblnIsComplete = True
    End If
End Sub
'工资项目是否多选
Private Function SalaryItemIsMultiSel() As Boolean
    Dim intCount As Integer
    If mclsFinanceRptWiz.AccountTypeID < 25 Then
        Exit Function
    End If
    For intCount = 0 To MsgFilter.Rows - 1
        If MsgFilter.TextMatrix(intCount, 0) = "工资项目" Then
            If InStr(1, MsgFilter.TextMatrix(intCount, 1), ",") > 0 Then
                SalaryItemIsMultiSel = True
            Else
                SalaryItemIsMultiSel = False
            End If
            Exit For
        End If
    Next
End Function
Private Function CondIsValid() As Boolean
    Dim blnIsTrue As Boolean
    Dim intResponseID As Integer
    Dim strMessage As String
    Dim blnIscheckedType As Boolean
    Dim lngPositionLine As Long
    If mlngStepNum >= 3 Then
        mblnIsPeriodOver = PeriodCond
        blnIsTrue = JudgeIsInPeriod
        If mblnIsPeriodOver = False Or mblnHasSalaryItem = False Then
            If mclsFinanceRptWiz.IsOnlyAnalyPeriod = False And mblnIsPeriodOver = False Then
'                strMessage = "分析期是生成报表的必需条件,且必需比较期和报告期中的一个。" & Chr(13) & "请重新设置。"
                strMessage = "分析条件必须选择比较期或者报告期。" & Chr(13) & "请重新设置。"
            ElseIf mclsFinanceRptWiz.ViewId = 247 And mblnHasSalaryItem = False Then
                strMessage = "该报表需要指定工资项目。" & Chr(13) & "请重新设置。"
            End If
            ShowMsg Me.hWnd, strMessage, vbExclamation + vbOKOnly, App.title
            mlngStepNum = 2
            ShowStep
            ComEnabled
            CondIsValid = False
            Exit Function
        End If
        If mstrReportPeriodType <> "" And mstrReferPeriodType <> "" And mblnHasDeleted = False Then
            strMessage = "比较期和报告期二者中只允许一个成为生成报表的条件 。" & Chr(13) & Chr(13) & "按下“是”保留比较期,按下“否”保留报告期。" & Chr(13) & Chr(13) & "保留比较期而去掉报告期吗?"
            intResponseID = ShowMsg(Me.hWnd, strMessage, vbQuestion + vbDefaultButton1 + vbYesNo, App.title)
            If intResponseID = vbYes Then
                lngPositionLine = mclsFilter.PositionLine(Me, "报告期")
                mclsFilter.DelLine Me, lngPositionLine
            ElseIf intResponseID = vbNo Then
                lngPositionLine = mclsFilter.PositionLine(Me, "比较期")
                mclsFilter.DelLine Me, lngPositionLine
            End If
            mblnHasDeleted = True
        End If
        If mstrAnalyPeriodType = mstrReferPeriodType And Trim(mstrAnalyPeriodType) <> "自定义" And mstrAnalyPeriodType <> "" Then
            strMessage = "分析期与比较期类型相同,请重新设置。"
            ShowMsg Me.hWnd, strMessage, vbExclamation + vbOKOnly, App.title
            mlngStepNum = 2
            ShowStep
            ComEnabled
            CondIsValid = False
            Exit Function
        End If
    End If
    CondIsValid = True
End Function

Private Sub ShowStep()
    tabWizardPages.Tab = mlngStepNum - 1
End Sub

'计算生选择的条件是否足以生成一张报表,是则返回 真,否则,返回 假
Private Function CanComplete() As Boolean
    Dim blnHasReportName As Boolean                     '是否有报表名称
    Dim blnHasChoosed As Boolean                        '是否选择了报表的栏目
    Dim blnChkDataSource As Boolean                     '是否选择了数据类型
    Dim blnHasPeriodCond As Boolean                     '是否有报告期,比较期中的一种
    Dim blnHasChoosedVol As Boolean                     '纵向分析时,是否选择了分析列
    Dim blnHasChooseDataType As Boolean
    If txtReportName.Text <> "" Then
        blnHasReportName = True
    Else
        blnHasReportName = False
    End If
    If lstSelectedItem.ListCount > 0 Then
        blnHasChoosed = True
    Else
        blnHasChoosed = False
    End If
    If PeriodCond = True And blnHasChoosed = True And blnHasReportName = True And mlngStepNum > 1 Then
        CanComplete = True
    Else
        CanComplete = False
    End If
End Function

'判断生成报表的必需的期间是否都存在(分析期必须有,比较期与报告期两者必选其一)
Private Function PeriodCond() As Boolean
    Dim blnHasAnalyPeriod As Boolean
    Dim blnHasReportPeriod As Boolean
    Dim blnHasReferPeriod As Boolean
    Dim intCount As Integer
    Dim intColIndex As Integer
    Dim intArrCount As Integer
    Dim blnReturnCond As Boolean
    Dim blnIsSpecialReport As Boolean
    Select Case mclsFinanceRptWiz.AccountTypeID
        Case 20 To 23, 27
            blnIsSpecialReport = True
        Case Else
            blnIsSpecialReport = False
    End Select
    blnReturnCond = mclsFilter.GetSelectd(strSelected())
    If blnReturnCond = False Then
        Select Case mclsFinanceRptWiz.AccountTypeID
            Case 25, 26, 27
                mblnHasSalaryItem = False
            Case Else
                mblnHasSalaryItem = True
        End Select
        If blnIsSpecialReport = True Then
            PeriodCond = True
        Else
            PeriodCond = False
        End If
        blnHasAnalyPeriod = True
        Exit Function
    End If
    intArrCount = UBound(strSelected)
    Select Case mclsFinanceRptWiz.AccountTypeID
        Case 25, 26, 27
            intCount = 1
            Do While intCount < MsgFilter.Rows - 1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -