frmcommlist.frm

来自「金算盘软件代码」· FRM 代码 · 共 1,519 行 · 第 1/4 页

FRM
1,519
字号
'反映是否有卡片存在
Public Property Let IsShowCard(ByVal vNewValue As Boolean)
    Select Case mintListType
        Case 1
            mIsShowCard(0) = vNewValue
        Case 2
            mIsShowCard(1) = vNewValue
        Case 3
            mIsShowCard(2) = vNewValue
        Case 4
            mIsShowCard(3) = vNewValue
    End Select
End Property
Public Property Get IsShowCard() As Boolean
   Select Case mintListType
        Case 1
            IsShowCard = mIsShowCard(0)
        Case 2
            IsShowCard = mIsShowCard(1)
        Case 3
            IsShowCard = mIsShowCard(2)
        Case 4
            IsShowCard = mIsShowCard(3)
    End Select
End Property


'按照币种ID更新停用标志
Private Function UpdateListInActive(ByVal lngID As Long, ByVal blnIsInActive As Boolean) As Boolean
    Dim strSql As String
    Select Case mintListType
        Case 1
            strSql = "UPDATE Currencys SET blnIsInActive = " & IIf(blnIsInActive, 1, 0) & " WHERE lngCurrencyID = " & lngID
        Case 2
            strSql = "UPDATE VoucherType SET blnIsInActive = " & IIf(blnIsInActive, 1, 0) & " WHERE lngVoucherTypeID = " & lngID
        Case 3
            strSql = "UPDATE PaymentMethod SET blnIsInActive = " & IIf(blnIsInActive, 1, 0) & " WHERE lngPaymentMethodID = " & lngID
        Case 4
            strSql = "UPDATE Term SET blnIsInActive = " & IIf(blnIsInActive, 1, 0) & " WHERE lngTermID = " & lngID
    End Select
    UpdateListInActive = gclsBase.ExecSQL(strSql)
End Function

'删除币种ID指定记录

'判断币种ID是否使用

' 币种ID
Public Property Get ListID() As Long
    With msgCurrencys
        If .TextArray(.Row * .Cols) <> "" And .Row > 0 Then
            ListID = CLng(.TextArray(.Row * .Cols))
        Else
            ListID = 0
        End If
    End With
End Property

' 币种停用标志
Public Property Get ListRecIsInActive() As Boolean
    If chkShowAll.Value Then
        With msgCurrencys
            ListRecIsInActive = Not (.TextArray(.Row * .Cols + 1) = "")
        End With
    Else
        ListRecIsInActive = False
    End If
End Property

'根据列表中记录数,设置菜单可用属性
Private Sub UpdateMenuStatus()
    Dim blnIsnotEmpty As Boolean
    Dim blnFindNoChange As Boolean
    Dim IsHaveRight As Boolean
    
    'IsHaveRight = IsCanDo(22, gclsBase.OperatorID)
    With msgCurrencys
    If .Rows > 1 And .ColSel <> 0 And .RowHeight(.Row) > 0 Then
        blnIsnotEmpty = True
    Else
        blnIsnotEmpty = False
    End If
    End With
    With frmMain
        .mnuEditEdit.Caption = "修改(&E)"
        .mnuEditNew.Caption = "新增(&N)"
        .mnuEditDel.Caption = "删除(&D)"
        .mnuEditCopy.Enabled = blnIsnotEmpty
        .mnuEditEdit.Enabled = blnIsnotEmpty And mIsHaveRight
        .mnuEditNew.Enabled = True And mIsHaveRight
        .mnuEditDel.Enabled = blnIsnotEmpty And mIsHaveRight
        .mnuEditInActive.Checked = False
        .mnuEditInActive.Visible = False
        .mnuEditInActive.Enabled = blnIsnotEmpty And mIsHaveRight
        .mnuEditShowAll.Checked = chkShowAll.Value
        .mnuEditShowAll.Enabled = True
        .mnuEditUse.Enabled = blnIsnotEmpty
        .mnuEditSearch.Enabled = True
        .mnuEditColumn.Enabled = True
        .mnuEditFilter.Enabled = True
        .mnuFilePrint.Enabled = True
        .mnuFilePrintSetup.Enabled = True
        .mnuReportQuick.Enabled = blnIsnotEmpty
        .mnuToolRefresh.Enabled = True
    End With
    
    If msgCurrencys.ColSel = 0 Then  '无当前选定行
       blnFindNoChange = mclsList.FindNoChange
       mclsList.FindNoChange = True
        txtfind.Text = ""
       mclsList.FindNoChange = blnFindNoChange
        cmdAgain.Enabled = False
    End If
    frmMain.SetToolBar
End Sub

'重画Form
Private Sub RedrawForm()
    '重画MS FlexGrid 控件
    On Error Resume Next
    With msgCurrencys
        .Left = ListFormLeft
        .width = Me.ScaleWidth - ListFormLeft - ListFormRight
        .Height = Me.ScaleHeight - ListUpAreaHeight - ListDownAreaHeight
    End With
    
    '重画其余控件
    txtfind.width = Me.ScaleWidth - txtfind.Left - ListFormBottom - cmdAgain.width - 15
    cmdAgain.Left = txtfind.Left + txtfind.width
    cmdEdit.top = Me.ScaleHeight - cmdEdit.Height - ListFormBottom
    cmdReport.top = cmdEdit.top
    chkShowAll.top = cmdEdit.top
    chkShowAll.Left = Me.ScaleWidth - chkShowAll.width - ListFormBottom
End Sub

Private Sub Form_Deactivate()
    frmMain.SetEditUnEnabled
End Sub

'
'窗体 Form 控件
'
Private Sub Form_Load()
    Dim i As Integer
    Dim intSortCol As Integer
'    Me.Hide
'    Me.Left = -30000
    On Error GoTo ErrHandle
    MsgForm.PleaseWait
    Me.Caption = mstrListName & "列表"
    Select Case mintListType
        Case 1
            Me.HelpContextID = 30035
            frmMain.mnuListCurrency.Tag = Me.hwnd
            mIsHaveRight = IsCanDo(22, gclsBase.OperatorID)
        Case 2
            Me.HelpContextID = 30038
            frmMain.mnuListVoucherType.Tag = Me.hwnd
            mIsHaveRight = IsCanDo(23, gclsBase.OperatorID)
            mblnFirstLoad = True
        Case 3
            Me.HelpContextID = 30040
            frmMain.mnuListPaymentMethod.Tag = Me.hwnd
            mIsHaveRight = IsCanDo(24, gclsBase.OperatorID)
        Case 4
            Me.HelpContextID = 30042
            frmMain.mnuListTerm.Tag = Me.hwnd
            mIsHaveRight = IsCanDo(25, gclsBase.OperatorID)
    End Select
    
    '币种币率列表窗体初始化
    Debug.Print "start load form time:", Timer
    Set mclsList = New list
    mclsList.FlexNoChange = True
    mclsList.FindNoChange = True
    Set mclsList.FlexGrid = msgCurrencys
    Set mclsList.FindKind = cboFindKind
    Set mclsList.Find = txtfind
    Set mclsList.Again = cmdAgain
    mclsList.ListSet.ViewId = intViewID
    mclsList.InitFlexGrid
    
    '得到币种币率列表记录集
'    If mintListType = 2 Then
'        If Not GetList Then
'            frmInitVoucherTypeCard.AddCard
'            GetList
'        End If
'    Else
'        GetList
'    End If
'    GetList
''    Set datCurrencys.Recordset = GetList()
''    If datCurrencys.Recordset.RecordCount > 0 Then
''       datCurrencys.Recordset.MoveLast
''    End If
''    datCurrencys.Recordset.Close
'
''    Set datCurrencys.Recordset = Nothing
'    mclsList.SetFlexGrid
'
'    '初始化查找复合列表框
'    mclsList.InitcboFindKind
'    mclsList.FlexNoChange = False
'    mclsList.FindNoChange = False
'
'    '设置第一行为选定行
'    With msgCurrencys
'        If .Rows > 1 Then .Row = 1
'        .col = 0
'        .ColSel = .Cols - 1
'    End With
'    mclsList.DoShowAll False
'    UpdateMenuStatus
    
    '设置钩子对象
    Set mclsSubClass = New SubClass32.SubClass
    mclsSubClass.hwnd = msgCurrencys.hwnd
    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
    Debug.Print "last end form time:", Timer
    Unload MsgForm
    Set mclsMainControl = gclsSys.MainControls.Add(Me)
    Exit Sub
    Dim edtErrReturn As ErrDealType
ErrHandle:
    edtErrReturn = Errors.ErrorsDeal
    
    If edtErrReturn = edtResume Then
         Resume
    Else
         On Error Resume Next
         Unload MsgForm
         Unload Me
    End If
End Sub

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

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If UnloadMode = vbFormControlMenu And UserRight.GetIsShowcard(mintListType) Then ' And ( Or UserRight.GetIsShowcard(2) Or UserRight.GetIsShowcard(3) Or UserRight.GetIsShowcard(4)) Then
        ShowMsg 0, "请先关闭" & mstrListName & "卡片!", vbExclamation
        Cancel = True
        Select Case mintListType
            Case 1
'                If frmCurrencyListCard.WindowState = 1 Then frmCurrencyListCard.WindowState = 0
'                frmCurrencyListCard.Show
'                frmCurrencyListCard.ZOrder 0
            Case 2
'                frmVoucherTypeListCard.Show
'                frmVoucherTypeListCard.ZOrder 0
            Case 3
'                frmPaymentMethodListCard.Show
'                frmPaymentMethodListCard.ZOrder 0
            Case 4
'                frmtermlistcard.Show
'                frmtermlistcard.ZOrder 0
        End Select
    End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
    On Error Resume Next
    If Not mclsList Is Nothing Then mclsList.SaveListSet
    Select Case mintListType
        Case 1
'            If UserRight.GetIsShowcard(1) Then Unload frmCurrencyListCard
            frmMain.mnuListCurrency.Tag = 0
        Case 2
'            If UserRight.GetIsShowcard(2) Then Unload frmVoucherTypeListCard
            frmMain.mnuListVoucherType.Tag = 0
        Case 3
'            If UserRight.GetIsShowcard(3) Then Unload frmPaymentMethodListCard
            frmMain.mnuListPaymentMethod.Tag = 0
        Case 4
'            If UserRight.GetIsShowcard(4) Then Unload frmtermlistcard
            frmMain.mnuListTerm.Tag = 0
    End Select
    
    Set mclsSubClass = Nothing
    Set mclsSubClassform = Nothing
    Set mclsList = Nothing
    gclsSys.MainControls.Remove Me
    Set mclsMainControl = Nothing
End Sub

Private Sub Form_Resize()
    On Error Resume Next
    If Me.WindowState = 1 Then Exit Sub
    If Me.Left + Me.width < 0 Or Me.Left > Screen.width Then
       Me.Left = 300
    End If
    RedrawForm
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
    On Error Resume Next
    If KeyAscii = vbKeyEscape Then
        Unload Me
    ElseIf KeyAscii = vbKeyReturn Then
        BKKEY Me.ActiveControl.hwnd, vbKeyTab
    End If
End Sub
Private Sub Form_Activate()
    On Error Resume Next
    Select Case mintListType
        Case 1
            SetHelpID 30035
        Case 2
            SetHelpID 30038
        Case 3
            SetHelpID 30040
        Case 4
            SetHelpID 30042
    End Select
    mclsMainControl_ChildActive '响应消息
    gclsSys.CurrFormName = Me.hwnd
    'msgCurrencys.SetFocus
    msgCurrencys.Redraw = True
    UpdateMenuStatus
    'If (Me.Left + Me.Width < 0 Or Me.Left > Screen.Width) Then Me.Left = 300
    If Me.WindowState = 1 Then Me.WindowState = 0
End Sub
'
'显示全部记录/未停用记录 CheckBox 控件
'
Private Sub chkShowAll_Click()
    msgCurrencys.Redraw = False
    mclsList.DoShowAll chkShowAll.Value
    'cboFindKind_Click
    UpdateMenuStatus
    msgCurrencys.Redraw = True
End Sub
'
'查找条件类型 ComboBox 控件
'
Private Sub cboFindKind_Click()
    Dim i As Integer
    Dim intWidth As Integer
    Dim strFind As String
    Dim intSortCol As Integer
    mclsList.ReGetColCaption
    With msgCurrencys
        .Redraw = False
        For i = 1 To .Cols - 1
            If .TextMatrix(0, i) = cboFindKind.Text Then
                If .RowHeight(.Row) > 0 Then strFind = .TextMatrix(.Row, i)
                mclsList.FixrowSortBold i
                Exit For
            End If
       Next
    End With
    
    If msgCurrencys.Rows > 1 Then
        If txtfind.Text = strFind Then
            txtFind_Change
        Else
            txtfind.Text = strFind
        End If
    End If
    msgCurrencys.Redraw = True
End Sub

'响应消息
Private Sub mclsMainControl_ChildActive()
    Dim vntMessage As Variant
    Dim vntCompareMessage As Variant
    
    SetHelpID Me.HelpContextID

⌨️ 快捷键说明

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