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

📄 frmaccountlist.frm

📁 金算盘软件代码
💻 FRM
📖 第 1 页 / 共 4 页
字号:
        mclsList(intTab).FlexGrid.HighLight = flexHighlightNever
        cmdAgain.Enabled = False
    Else
        mclsList(intTab).FlexGrid.HighLight = flexHighlightAlways
        cmdAgain.Enabled = True
    End If
    mclsList(intTab).ShowAll = True
    Set GetList = recRecordset
End Function
Public Function ShowList(ByVal lngID As Long, Optional intTab As Integer = 0) As Boolean
    Dim intCount As Integer
    Dim strSortField As String
    Dim strSortDec As String
    Dim Strsql As String
    Dim recTemp As Recordset
    Dim strofFrom As String
    Dim strofWhere As String
    Me.Show
    Me.ZOrder 0
    With mclsList(intTab).ListSet
        '得到排序字段
        For intCount = 1 To .Columns
            If .ColumnOrderType(intCount) <> 0 Then
                strSortField = .ColumnFieldName(intCount)
                strSortDec = .ColumnDesc(intCount)
                Exit For
            End If
        Next
        If intCount > .Columns Then
            ShowList = False
            Exit Function
        End If
        strofFrom = .FromOfSql
        strofWhere = .WhereOfSql
    End With
    '根据lngID得到排序字段值
    Strsql = "Select " & strSortField & " As " & strSortDec
    If strofWhere <> "" Then
        strofWhere = " where " & strofWhere & "and Account.lngaccountID=" & lngID
    Else
        strofWhere = " where Account.lngAccountID=" & lngID
    End If
        
    Strsql = Strsql & strofFrom & strofWhere
    Set recTemp = gclsBase.BaseDB.OpenRecordset(Strsql, dbOpenForwardOnly)
    With recTemp
        If .RecordCount > 0 Then
            txtFind.Text = recTemp(strSortDec)   '查找
            With mclsList(intTab).FlexGrid
                If .TextMatrix(.Row, 0) = lngID Then      '是否找到
                    ShowList = True
                Else
                    ShowList = False
                End If
            End With
        Else
            ShowList = False
        End If
        .Close
    End With
End Function
'卡片

Public Property Let IsShowCard(ByVal Index As Integer, vNewValue As Boolean)
   mIsShowCard(Index) = vNewValue
End Property
Public Property Get IsShowCard(ByVal Index As Integer) As Boolean
   IsShowCard(Index) = mIsShowCard(Index)
End Property
'按照部门职员ID提取记录
Public Function GetByListID(ByVal intTab As Integer, ByVal lngID As Long) As Recordset
    Dim recRecordset As Recordset
    Dim Strsql As String
    Strsql = "Select * From Account Where lngAccountID = " & lngID
        
    Set recRecordset = gclsBase.BaseDB.OpenRecordset(Strsql, dbOpenSnapshot)
    Set GetByListID = recRecordset
End Function

'按照部门职员ID更新停用标志
Private Function UpdateListInActive(ByVal intTab As Integer, ByVal lngID As Long, ByVal blnIsInActive As Boolean) As Boolean
    Dim Strsql As String
    Strsql = "UPDATE Account SET blnIsInActive = " & blnIsInActive & " WHERE lngAccountID = " & lngID
    UpdateListInActive = gclsBase.ExecSQL(Strsql)
End Function

'删除部门职员ID指定记录
Private Function DelByPaymentMethodID(ByVal lngID As Long, ByVal intTab As Integer) As Boolean
    Dim Strsql As String
    Strsql = "Delete * From Account WHERE lngAccountID = " & lngID
    DelByPaymentMethodID = gclsBase.ExecSQL(Strsql)
End Function

'判断部门职员ID是否使用
Private Function IsUsePaymentMethodID(ByVal lngID As Long) As Boolean
    Dim recRecordset As Recordset
    Dim Strsql As String
    Strsql = "Select lngAccountID From VoucherDetail Where lngAccountID = " & lngID
    Set recRecordset = gclsBase.BaseDB.OpenRecordset(Strsql, dbOpenSnapshot)
    IsUsePaymentMethodID = (recRecordset.RecordCount >= 1)
    recRecordset.Close
End Function

' 部门职员ID
Public Property Get ListID(ByVal intTab As Integer) As Long
    With mclsList(intTab).FlexGrid
        ListID = CLng(.TextArray(.Row * .Cols))
    End With
End Property

' 部门职员停用标志
Public Property Get ListIsInActive(ByVal intTab As Integer) As Boolean
    If chkShowAll.Value Then
        With mclsList(intTab).FlexGrid
            ListIsInActive = Not (.TextArray(.Row * .Cols + 1) = "")
        End With
    Else
        ListIsInActive = False
    End If
End Property

'根据列表中记录数,设置菜单可用属性
Private Sub UpdateMenuStatus()
    Dim blnIsNotEmpty As Boolean
    Dim blnFindNoChange As Boolean
    
    
    With mclsList(sstCustom.Tab).FlexGrid
        If .Rows > 1 And .ColSel <> 0 And .RowHeight(.Row) > 0 Then
            blnIsNotEmpty = True
        Else
            blnIsNotEmpty = False
        End If
    End With
        With frmMain
            .mnuEditCopy.Enabled = blnIsNotEmpty
            .mnuEditEdit.Enabled = blnIsNotEmpty
            .mnuEditNew.Enabled = True
            .mnuEditDel.Enabled = blnIsNotEmpty
            .mnuEditInActive.Enabled = blnIsNotEmpty
            .mnuEditShowAll.Checked = chkShowAll.Value
            .mnuEditShowAll.Enabled = True
            .mnuEditUse.Enabled = blnIsNotEmpty
            .mnuEditSearch.Enabled = True
            .mnuEditColumn.Enabled = True
            .mnuEditFilter.Enabled = True
            .mnuFilePrint.Enabled = True
            .mnuReportQuick.Enabled = blnIsNotEmpty
            .mnuToolRefresh.Enabled = True
        End With
    If mclsList(sstCustom.Tab).FlexGrid.ColSel = 0 Then  '无当前选定行
        blnFindNoChange = mclsList(sstCustom.Tab).FindNoChange
        mclsList(sstCustom.Tab).FindNoChange = True
        txtFind.Text = ""
        mclsList(sstCustom.Tab).FindNoChange = blnFindNoChange
        cmdAgain.Enabled = False
    End If
    
End Sub

'重画Form
Private Sub RedrawForm()
    
    With sstCustom
        .Left = ListFormLeft
        .Width = Me.ScaleWidth - ListFormLeft - ListFormRight
        .Height = Me.ScaleHeight - ssTabUpAreaHeight - ListDownAreaHeight
    End With
    
    '重画MS FlexGrid 控件
    With mclsList(sstCustom.Tab).FlexGrid
        .Left = ListGridLeft
        .Width = sstCustom.Width - ListGridLeft - ListGridRight
        .Height = sstCustom.Height - sstCustom.TabHeight - ListGridTop - ListGridBottom
    End With
    
    '重画其余控件
    txtFind.Width = Me.ScaleWidth - txtFind.Left - ListFormBottom - cmdAgain.Width - 15
    cmdAgain.Left = txtFind.Left + txtFind.Width
    cmdEAR(0).top = Me.ScaleHeight - cmdEAR(0).Height - ListFormBottom
    cmdEAR(1).top = cmdEAR(0).top
   
    chkShowAll.top = cmdEAR(0).top
    chkShowAll.Left = Me.ScaleWidth - chkShowAll.Width - ListFormBottom
End Sub




'命令控件数组
Private Sub cmdEAR_Click(Index As Integer)
    Dim PosX, PosY As Integer
    Dim intCol As Integer
    Dim strAccountName As String
    Dim intFlag As Integer
    Dim recTemplete As Recordset
    PosX = cmdEAR(Index).Left
    PosY = cmdEAR(Index).top + cmdEAR(Index).Height
    With frmMain
        Select Case Index
               Case 0
                    MakeListEditMenu
                    PopupMenu .mnuListEdit, , PosX, PosY
              
               Case 1
                    With mclsList(sstCustom.Tab).FlexGrid
                        If .Row > 0 Then
                            Set recTemplete = GetByListID(sstCustom.Tab, ListID(sstCustom.Tab))
                        'intCol = GetCol("科目名称")
                        
                             strAccountName = recTemplete!strAccountName '.TextMatrix(.Row, intCol)
                             'intCol = GetCol("科目性质")
                             'If .Row > 0 Then
                             intFlag = recTemplete!lngAccountNatureID '.TextMatrix(.Row, intCol)
                        End If
                    End With
                    MakeListReportMenu strAccountName
                    Select Case intFlag
                           Case 1, 2
                                .mnuListReportMenu(0).Caption = "日记帐:" & Mid(.mnuListReportMenu(0).Caption, 4)
                           Case Else
                                .mnuListReportMenu(0).Caption = "明细帐:" & Mid(.mnuListReportMenu(0).Caption, 4)
                    End Select
                    PopupMenu .mnuListReport, , PosX, PosY
'                    MakeListReportMenu (getDepEmp())
'                    PopupMenu .mnuListReport, , PosX, PosY
        End Select
    End With
End Sub

'取部门职员
Private Function getDepEmp() As String
    Dim strDepEmp As String
    
    
    Select Case sstCustom.Tab
            Case 0
                strDepEmp = GetNameStr(msgCustom0, "自定项目名称")
            Case 1
                strDepEmp = GetNameStr(msgCustom1, "自定项目名称")
            Case 2
                strDepEmp = GetNameStr(msgCustom2, "自定项目名称")
            Case 3
               strDepEmp = GetNameStr(msgCustom3, "自定项目名称")
            Case 4
                strDepEmp = GetNameStr(msgCustom4, "自定项目名称")
            Case 5
                strDepEmp = GetNameStr(msgCustom5, "自定项目名称")
    End Select
    getDepEmp = strDepEmp
    
End Function




'
'窗体 Form 控件
'
Private Sub Form_Load()
    Dim intCount As Integer
    Dim i As Integer
    Dim intSortCol As Integer
    Dim intResponse As Integer
    SetHelpID Me.hwnd, 10006
   ' InitsstCustom
    '部门职员列表窗体初始化
    Debug.Print "Load Start: ", Timer
    
    intViewID(0) = 6
    intViewID(1) = 385
    intViewID(2) = 386
    intViewID(3) = 387
    intViewID(4) = 388
    intViewID(5) = 389
    For i = 0 To 5
        Set mclsList(i) = New list
        Set mclsList(i).FindKind = cboFindKind
        'Set mclsList(i).Again = cmdAgain
        Set mclsList(i).Find = txtFind
    Next
    Set mclsList(0).FlexGrid = msgCustom0
    Set mclsList(1).FlexGrid = msgCustom1
    Set mclsList(2).FlexGrid = msgCustom2
    Set mclsList(3).FlexGrid = msgCustom3
    Set mclsList(4).FlexGrid = msgCustom4
    Set mclsList(5).FlexGrid = msgCustom5
    Set mclsMainControl = gclsSys.MainControls.Add(Me)
  
    
    '设置钩子对象
    Set mclsSubClass = New SubClass32.SubClass

    mclsSubClass.Messages(WM_PAINT) = True
    mclsSubClass.Messages(WM_LBUTTONUP) = True
    mclsSubClass.Messages(WM_LBUTTONDOWN) = True
    mclsSubClass.Messages(WM_MOUSEMOVE) = True
    
    Set mclsSubClassform = New SubClass32.SubClass
    mclsSubClassform.hwnd = Me.hwnd
    mclsSubClassform.Messages(WM_GETMINMAXINFO) = True
    
    If sstCustom.Tab = 0 Then
        sstCustom_Click 0
    Else
        sstCustom.Tab = 0
    End If
   
Debug.Print "Load End: ", Timer
    
End Sub

'右键菜单
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    If Button = vbRightButton Then
        MakeListEditMenu
        PopupMenu frmMain.mnuListEdit
    End If
End Sub

Private Sub Form_Paint()
    DrawInSertLine Me.hwnd, ListFormLeft, 500, Me.Width - 2 * (ListFormLeft + ListFormRight), 500
    
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If UnloadMode = vbFormControlMenu Then
       Select Case True
            Case mIsShowCard(0) '科目卡片
                ShowMsg Me.hwnd, "请先关闭会计科目卡片!", vbCritical, "会计科目关闭提示"
                Cancel = True
                frmAccountListCard.Show
                frmAccountListCard.ZOrder 0
            Case mIsShowCard(1) '期初余额
                ShowMsg Me.hwnd, "请先关闭期初余额卡片!", "期初余额关闭提示", &H40&
                Cancel = True
                frmAccountInit.Show
        End Select
    End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Dim intCount As Integer
    For intCount = 0 To sstCustom.Tabs - 1
        If blnIsLoad(intCount) Then
            mclsList(intCount).SaveListSet
        End If
        blnIsLoad(intCount) = False
    Next
    If mIsShowCard(0) Then Unload frmAccountListCard
    If mIsShowCard(1) Then Unload frmAccountInit
    gclsSys.MainControls.Remove Me
    Set mclsMainControl = Nothing
End Sub

Private Sub Form_Resize()
    On Error Resume Next
    
'    If Me.Left + Me.Width < 0 Or Me.Left > Screen.Width Then
'      Me.Left = 300
'    End If
    RedrawForm
End Sub

Private Sub Form_Activate()
    
    On Error Resume Next
    mclsMainControl_ChildActive
    gclsSys.CurrFormName = Me.hwnd
    mclsList(sstCustom.Tab).FlexGrid.SetFocus
    mclsList(sstCustom.Tab).FlexGrid.Redraw = True
    
End Sub
'
'显示全部记录/未停用记录 CheckBox 控件
'
Private Sub chkShowAll_Click()
  
    With sstCustom
        mclsList(.Tab).FlexGrid.Redraw = False
        mclsList(.Tab).DoShowAll chkShowAll.Value
        mclsList(.Tab).FlexGrid.Redraw = True
    End With
    'cboFindKind_Click
     UpdateMenuStatus
End Sub

'
'查找条件类型 ComboBox 控件
'
Private Sub cboFindKind_Click()
    Dim i As Integer
    Dim intWidth As Integer
    Dim strFind As String
    Dim intSortCol As Integer
    
    If mblnComboxNoClick Then Exit Sub
    With mclsList(sstCustom.Tab).FlexGrid
        .Redraw = False
        For i = 1 To .Cols - 1
            If .TextMatrix(0, i) = cboFindKind.Text Then
                strFind = .TextMatrix(.Row, i)
                mclsList(sstCustom.Tab).FixrowSortBold i
                Exit For
            End If
       Next
    End With
    
    If mclsList(sstCustom.Tab).FlexGrid.Rows > 1 Then
       If txtFind.Text = strFind Then
          txtFind_Change
       Else
          txtFind.Text = strFind
       End If
    End If
    mclsList(sstCustom.Tab).FlexGrid.Redraw = True
  '  mclsList(sstTypAct.Tab).FlexGrid.SetFocus
End Sub


Private Sub mclsMainControl_ChildActive()
     Dim vntMessage As Variant
     gclsSys.CurrFormName = Me.hwnd
    '响应消息
    For Each vntMessage In mclsMainControl.Messages
        ToolRefresh sstCustom.Tab
        mclsMainControl.Messages.Remove CStr(vntMessage) '清除部门雇员改变消息
    Next
    mclsMainControl.Messages.Clear
End Sub

Private Sub mclsMainControl_EditColumn()

⌨️ 快捷键说明

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