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

📄 frmdlcommisionmachining.frm

📁 金算盘软件代码
💻 FRM
📖 第 1 页 / 共 3 页
字号:

    If mblnFormNoRezise Then Exit Sub
    On Error Resume Next
    If Me.Height < mintFormHeight Then Me.Height = mintFormHeight
    If Me.Width < mintFormWidth Then Me.Width = mintFormWidth
    RedrawForm
End Sub
Private Sub RedrawForm()
    '重画MS FlexGrid 控件
    Dim leftx As Integer
    On Error Resume Next
    With msgGrid
        .Left = ListFormLeft
        .Width = ScaleWidth - ListFormLeft - 5 * ListFormRight - DlFormButtonWidth
        .Height = ScaleHeight - .Top - 2 * ListFormBottom - hLb(0).Height
    End With
    
    '重画其余控件
    leftx = ScaleWidth - 2 * ListFormRight - DlFormButtonWidth
    Cmdall(4).Left = leftx
    Cmdall(7).Left = leftx
    Cmdall(1).Left = leftx
    Cmdall(2).Left = leftx
    Cmdall(3).Left = leftx
    Cmdall(5).Left = leftx
    Cmdall(6).Left = leftx
    
    Cmdall(1).Top = Cmdall(7).Top + 9 + DlFormButtonHeight
    Cmdall(2).Top = Cmdall(1).Top + 133 + DlFormButtonHeight
    Cmdall(3).Top = Cmdall(2).Top + 9 + DlFormButtonHeight
    Cmdall(5).Top = Cmdall(3).Top + 133 + DlFormButtonHeight
    Cmdall(6).Top = Cmdall(5).Top + 9 + DlFormButtonHeight
    
    title(0).Left = msgGrid.Left
    title(1).Left = msgGrid.Left + 600
    title(1).Width = msgGrid.Width / 2
    title(2).Width = msgGrid.Width / 2
    title(2).Left = msgGrid.Width + 828 - title(2).Width

    title(3).Left = msgGrid.Left
    title(4).Left = msgGrid.Left + 600
    title(4).Width = Int(msgGrid.Width / 1.8)
    title(5).Left = title(2).Left
    title(5).Width = title(2).Width
    mclsGrid.TotalRowAdjust
    Me.Refresh
End Sub

'Flexgrid显示栏目设置
Private Sub setColumn()
    If mblnModify Then
        If ShowMsg(Me.hWnd, "栏目设置后,你刚刚做的结算将被取消,需要先存盘吗?", MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2 + MB_SYSTEMMODAL, "委托加工入库结算") = IDYES Then
            SaveData (0)
        End If
    End If
    mclsGrid.GridToListSet
    mclsGrid.ListSet.SaveList
    If mclsGrid.ListSet.ShowListSet(mclsGrid.ListSet.ViewId, False) Then
        RefreshGrid
    End If
End Sub

Private Sub Form_Load()
    mblnModify = False
    mblnFormNoRezise = False
    Me.HelpContextID = 17004
    Set mclsMainControl = gclsSys.MainControls.Add(Me)
    
    Set mclsGrid = New Grid
    Set mclsGrid.Grid = msgGrid
    Cmdall(7).Picture = Utility.GetFormResPicture(1001, 0)
    Cmdall(1).Picture = Utility.GetFormResPicture(1002, 0)
    Cmdall(4).Picture = Utility.GetFormResPicture(1010, 0)
    Set Me.Icon = Utility.GetFormResPicture(139, vbResIcon)
End Sub

Private Sub Form_Unload(Cancel As Integer)
    On Error Resume Next

    If mblnModify Then
        If ShowMsg(Me.hWnd, "数据未保存,是否退出加工入库结算", MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2 + MB_SYSTEMMODAL, "委托加工入库") = IDNO Then
            Cancel = True
            Exit Sub
        End If
    End If
    
    gclsSys.MainControls.Remove Me
    Set mclsMainControl = Nothing
    Set mclsGrid = Nothing
    Set mfrmToFormname = Nothing
    Utility.RemoveFormResPicture 1001
    Utility.RemoveFormResPicture 1002
    Utility.RemoveFormResPicture 1010
    Utility.RemoveFormResPicture 139
End Sub

'从Flexgrid中取出数字值
Private Function GetValue(lngRow As Long, intCol As Integer, Optional strType As String = "Double") As Variant
    GetValue = GetGridValue(lngRow, intCol, strType, msgGrid)
End Function

Private Sub mclsGrid_DataValid(blnCancel As Boolean)
    Dim dblChkAmount As Double
    Dim dblChkQuantity As Double
    Dim dblLastChkAmount As Double
    Dim dblLastChkQuantity As Double
    Dim lngRow As Long
    
    lngRow = msgGrid.Row
    Select Case msgGrid.Col
    Case mintChkAmtCol
        dblLastChkAmount = GetValue(lngRow, mintLastTotalAmtCol) - GetValue(lngRow, mintLastUnChkAmtCol)
        If GetValue(lngRow, mintLastTotalAmtCol) > 0 Then
            If txtEdit.Value > 0 Then
                If Abs(GetValue(lngRow, mintUnChkAmtCol)) < Abs(txtEdit.Value) Then
                    ShowMsg Me.hWnd, "结算金额不能大于未结算金额!", MB_SYSTEMMODAL + MB_ICONEXCLAMATION, Caption
                    blnCancel = True
                End If
            Else
                If dblLastChkAmount < Abs(txtEdit.Value) Then
                    ShowMsg Me.hWnd, "结算金额(绝对值)不能大于结算金额!", MB_SYSTEMMODAL + MB_ICONEXCLAMATION, Caption
                    blnCancel = True
                End If
            End If
        ElseIf GetValue(lngRow, mintLastTotalAmtCol) < 0 Then
            If txtEdit.Value < 0 Then
                If Abs(GetValue(lngRow, mintUnChkAmtCol)) < Abs(txtEdit.Value) Then
                    ShowMsg Me.hWnd, "结算金额(绝对值)不能大于未结算金额(绝对值)!", MB_SYSTEMMODAL + MB_ICONEXCLAMATION, Caption
                    blnCancel = True
                End If
            Else
                If Abs(dblLastChkAmount) < Abs(txtEdit.Value) Then
                    ShowMsg Me.hWnd, "结算金额(绝对值)不能大于结算金额!", MB_SYSTEMMODAL + MB_ICONEXCLAMATION, Caption
                    blnCancel = True
                End If
            End If
        End If
        If Not blnCancel Then
            If txtEdit.Value <> 0 Then
                msgGrid.TextMatrix(lngRow, 1) = "√"
            Else
                msgGrid.TextMatrix(lngRow, 1) = ""
            End If
            If GetValue(lngRow, mintLastTotalAmtCol) <> 0 Then
                dblChkQuantity = GetValue(lngRow, mintLastTotalQtyCol) * txtEdit.Value / GetValue(lngRow, mintLastTotalAmtCol)
            Else
                dblChkQuantity = 0
            End If
            ShowHlb mintChkAmtCol, C2Dbl(hLb(mintChkAmtCol).Caption) + txtEdit.Value - GetValue(lngRow, mintChkAmtCol)
            msgGrid.TextMatrix(lngRow, mintChkAmtCol) = MinToNormalQty(dblChkQuantity, GetValue(lngRow, mintFactorCol))
        End If
    Case mintChkQtyCol
        dblLastChkQuantity = GetValue(lngRow, mintLastTotalQtyCol) - GetValue(lngRow, mintLastUnChkQtyCol)
        dblLastChkQuantity = C2Dbl(MinToNormalQty(dblLastChkQuantity, GetValue(lngRow, mintFactorCol)))
        If GetValue(lngRow, mintLastTotalQtyCol) > 0 Then
            If txtEdit.Value > 0 Then
                If Abs(GetValue(lngRow, mintUnChkQtyCol)) < Abs(txtEdit.Value) Then
                    ShowMsg Me.hWnd, "结算数量不能大于未结算数量!", MB_SYSTEMMODAL + MB_ICONEXCLAMATION, Caption
                    blnCancel = True
                End If
            Else
                If dblLastChkQuantity < Abs(txtEdit.Value) Then
                    ShowMsg Me.hWnd, "结算数量(绝对值)不能大于结算数量!", MB_SYSTEMMODAL + MB_ICONEXCLAMATION, Caption
                    blnCancel = True
                End If
            End If
        ElseIf GetValue(lngRow, mintLastTotalQtyCol) < 0 Then
            If txtEdit.Value < 0 Then
                If Abs(GetValue(lngRow, mintUnChkQtyCol)) < Abs(txtEdit.Value) Then
                    ShowMsg Me.hWnd, "结算数量(绝对值)不能大于未结算数量(绝对值)!", MB_SYSTEMMODAL + MB_ICONEXCLAMATION, Caption
                    blnCancel = True
                End If
            Else
                If Abs(dblLastChkQuantity) < Abs(txtEdit.Value) Then
                    ShowMsg Me.hWnd, "结算数量(绝对值)不能大于结算数量!", MB_SYSTEMMODAL + MB_ICONEXCLAMATION, Caption
                    blnCancel = True
                End If
            End If
        End If
        If Not blnCancel Then
            If txtEdit.Value <> 0 Then
                msgGrid.TextMatrix(lngRow, 1) = "√"
            Else
                msgGrid.TextMatrix(lngRow, 1) = ""
            End If
            dblChkAmount = GetValue(lngRow, mintLastTotalAmtCol) * NormalToMinQty(txtEdit.Value, GetValue(lngRow, mintFactorCol)) _
                / GetValue(lngRow, mintLastTotalQtyCol)
            ShowHlb mintChkAmtCol, C2Dbl(hLb(mintChkAmtCol).Caption) + dblChkAmount - GetValue(lngRow, mintChkAmtCol)
            msgGrid.TextMatrix(lngRow, mintChkAmtCol) = strFormat(dblChkAmount, gclsBase.NaturalCurDec)
        End If
    End Select
    
    If Not blnCancel Then
        mblnModify = True
    End If
End Sub

Private Sub mclsGrid_BeforeSave(blnCancel As Boolean)
    Dim dblUnChkAmount As Double
    Dim dblUnChkQuantity As Double
    Dim lngRow As Long
    
    lngRow = msgGrid.Row
    Select Case msgGrid.Col
    Case mintChkAmtCol
        If mintLastTotalQtyCol <> 0 Then
            If txtEdit.Value <> 0 Then
                msgGrid.TextMatrix(lngRow, mintChkQtyCol) = MinToNormalQty((GetValue(lngRow, mintLastTotalQtyCol) * txtEdit.Value / msgGrid.TextMatrix(lngRow, mintLastTotalAmtCol)), GetValue(lngRow, mintFactorCol))
            End If
        End If
    Case mintChkQtyCol
        If mintLastTotalQtyCol <> 0 Then
            If txtEdit.Value <> 0 Then
                msgGrid.TextMatrix(lngRow, mintChkAmtCol) = msgGrid.TextMatrix(lngRow, mintLastTotalAmtCol) * NormalToMinQty(txtEdit.Value, GetValue(lngRow, mintFactorCol)) / msgGrid.TextMatrix(lngRow, mintLastTotalQtyCol)
                msgGrid.TextMatrix(lngRow, mintChkQtyCol) = NormalQty(txtEdit.Value, GetValue(lngRow, mintFactorCol))
                blnCancel = True
            End If
        End If
    End Select
End Sub

'本函数用于做结算与非结算处理
Private Sub msgGrid_Click()
    Dim lngRow As Long
    
    On Error GoTo Err
    
    If msgGrid.MouseRow > 0 And msgGrid.MouseRow < msgGrid.Rows And msgGrid.MouseCol = 1 Then
        mblnModify = True
        lngRow = msgGrid.MouseRow
            
        If msgGrid.TextMatrix(lngRow, 1) = "" Then
            If GetValue(lngRow, mintLastUnChkQtyCol) <> (GetValue(lngRow, mintChkQtyCol)) Then         '打√情况
                msgGrid.TextMatrix(lngRow, 1) = "√"
                msgGrid.TextMatrix(lngRow, mintChkAmtCol) = msgGrid.TextMatrix(lngRow, mintUnChkAmtCol)
                ShowHlb mintChkAmtCol, C2Dbl(hLb(mintChkAmtCol).Caption) + GetValue(lngRow, mintUnChkAmtCol)
                msgGrid.TextMatrix(lngRow, mintChkQtyCol) = msgGrid.TextMatrix(lngRow, mintUnChkQtyCol)
            End If
        Else
            '取消打√(结算)情况
            msgGrid.TextMatrix(lngRow, 1) = ""
            ShowHlb mintChkAmtCol, C2Dbl(hLb(mintChkAmtCol).Caption) - GetValue(lngRow, mintChkAmtCol)
            msgGrid.TextMatrix(lngRow, mintChkAmtCol) = ""
            msgGrid.TextMatrix(lngRow, mintChkQtyCol) = ""
        End If
    End If
    Exit Sub

Err:
    ShowMsg Me.hWnd, Err.Description, MB_SYSTEMMODAL + MB_ICONEXCLAMATION, Caption
End Sub

Private Sub msgGrid_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    With msgGrid
        If .MouseCol = 1 Then
            .MousePointer = vbCustom
        Else
            .MousePointer = vbDefault
        End If
    End With
End Sub

'右键菜单
Private Sub msgGrid_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    If Button = vbRightButton And msgGrid.Rows > 1 Then
        PopupMenu Me.menuPopup, , x + 118, y + 418
    End If
End Sub


Private Sub FindColPosition()
    mintUnChkAmtCol = GetGridCol("未结金额", msgGrid)
    mintUnChkQtyCol = GetGridCol("未结数量", msgGrid)
    mintChkAmtCol = GetGridCol("结算金额", msgGrid)
    mintChkQtyCol = GetGridCol("结算数量", msgGrid)
    mintTotalQtyCol = GetGridCol("总数量", msgGrid)
    mintTotalAmtCol = GetGridCol("总金额", msgGrid)
End Sub

Private Sub RefreshGrid()
    Dim intCount As Integer
    
    msgGrid.FixedCols = 0
    'Set Datadl.Recordset = GetList()
    Set Datadl.Resultset = GetList()
    FindColPosition
    msgGrid.ColWidth(0) = 0
    msgGrid.ColWidth(1) = 480
    intCount = 2
    While intCount < mintOffsetCol
        msgGrid.ColWidth(intCount) = 0
        intCount = intCount + 1
    Wend
    mclsGrid.ColOfs = mintOffsetCol
    mclsGrid.ShowTotal = True
    Set mclsGrid.Form = Me
    mclsGrid.ListSet.ViewId = mintViewId
    mclsGrid.ListSetToGrid
    mclsGrid.SetupStyle
    ShowTotalRow
    Set mclsGrid.EditText = txtEdit
    mclsGrid.SetEditText ("结算金额")
    mclsGrid.SetEditText ("结算数量")
End Sub

Private Sub ShowHlb(ByVal intCol As Integer, ByVal dblAmount As Double)
    hLb(intCol).Caption = strFormat(dblAmount, gclsBase.NaturalCurDec)
End Sub

⌨️ 快捷键说明

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