📄 frmdlcommisionmachining.frm
字号:
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 + -