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

📄 frmprojordercard.frm

📁 金算盘软件代码
💻 FRM
📖 第 1 页 / 共 4 页
字号:
Public Sub EditCard(ByVal lngID As Long, Optional intModal As Integer = 0, _
    Optional strOrder As String)
    Dim strMess As String
    
    If Not CheckIDUsed("ProjectOrder", "lngOrderID", lngID) Then
        If Trim(strOrder) <> "" Then
            strMess = "“" & strOrder & "”"
        Else
            strMess = "该"
        End If
        ShowMsg 0, strMess & "工程合同不存在,不能进行修改!", vbExclamation + MB_TASKMODAL, "修改工程合同"
        Unload Me
    Else
        mlngOrderID = lngID
        mblnIsChanged = False
        mblnIsNew = False
        cmdOK(2).Visible = False
        cmdOK(3).top = cmdOK(3).top - cmdOK(2).Height
        Caption = "修改工程合同"
        InitCard
'        SendKeys "%{C}"
        Show vbModal
    End If
End Sub

Private Function IsCanDel(ByVal lngID As Long) As Boolean
    
    IsCanDel = False
    
    If CheckIDUsed("ProjectFundIn", "lngOrderID", lngID) Then Exit Function
    If CheckIDUsed("ProjectInvoice", "lngOrderID", lngID) Then Exit Function
    IsCanDel = True
End Function

Private Function InitCard(Optional strName As String = "") As Boolean
    Dim i As Integer
    Dim strSql As String
    Dim recOrder As rdoResultset

    InitCard = True
    mblnIsInit = True
    mlngDOrderID = 0
    mblnIsClose = False
    If Not mblnIsNew Then
        strSql = "SELECT ProjectOrder.*,Project.strProjectCode || ' ' " _
            & "|| Project.strProjectName strProject,Customer.strCustomerCode " _
            & "|| ' ' || Customer.strCustomerName strCustomer FROM ProjectOrder," _
            & "Project,Customer WHERE ProjectOrder.lngOrderID=" & mlngOrderID _
            & " AND ProjectOrder.lngProjectID=Project.lngProjectID AND " _
            & "ProjectOrder.lngCustomerID=Customer.lngCustomerID(+)"
        Set recOrder = gclsBase.BaseDB.OpenResultset(strSql, rdOpenForwardOnly)
        If recOrder.EOF Then
            InitCard = False
            recOrder.Close
            Exit Function
        Else
            With recOrder
            lstOrder(0).Text = !strCustomer
            lstOrder(1).Text = !strProject
            mlngLstID(0) = !lngCustomerID
            mlngLstID(1) = !lngProjectID
            dteOrder.Text = Trim(!strDate)
            txtOrder(0).Text = !strOrderCode
'            txtOrder(1).Text = !strNote
            txtOrder(2).Text = !strOrderName
            If !blnIsClosed <> 0 Then
                chkClose.Value = 1
                dteClose.Text = Trim(!strCloseDate)
            Else
                chkClose.Value = 0
            End If
            mblnIsClose = (!blnIsClosed = 1)
            .Close
            End With
            strSql = "SELECT * FROM ProjectOrder WHERE lngOrderID=" & mlngOrderID
            Set recOrder = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
            If Not recOrder.EOF Then
                txtOrder(1).Text = Format(recOrder!strNote, "@;;")
            End If
        End If
    Else
        Caption = "增加工程合同"
        txtOrder(0).Text = Trim(strName)
        txtOrder(1).Text = ""
        chkClose.Value = Unchecked
'        mlngLstID(0) = 0
'        mlngLstID(1) = 0
'        lstOrder(0).Text = ""
'        lstOrder(1).Text = ""
    End If
    InitGrid
    SetTabIndex
    mblnIsInit = False
End Function

Private Sub RefreshLst(ByVal Index As Integer)
    Select Case Index
        Case 0
            setlistbox lstOrder(Index), 1, mlngLstID(Index)
        Case 1
            setlistbox lstOrder(Index), 35, mlngLstID(Index)
    End Select
End Sub

Private Sub lstOrder_AddNew(Index As Integer)
    Dim lngID As Long
    
    Select Case Index
    Case 0
        lngID = frmCustomerCard.AddCard(, 1, True)
    Case 1
        lngID = frmProjectCard.AddCard(, 1, True)
    End Select
    If lngID <> 0 Then mlngLstID(Index) = lngID
    RefreshLst Index
    mblnIsChanged = True
End Sub

Private Sub lstOrder_Change(Index As Integer)
    If ContainErrorChar(lstOrder(Index).Text, "`~!@#$%^&*=+'"";:,/?|\") Then BKKEY lstOrder(Index).hwnd
End Sub

Private Sub lstOrder_Choose(Index As Integer)
    If Not mblnIsInit Then mblnIsChanged = True
    mlngLstID(Index) = lstOrder(Index).ID
End Sub

Private Sub lstOrder_Delete(Index As Integer)
    Select Case Index
    Case 0
        If frmCustomerCard.DelCard(mlngLstID(0), Me.hwnd) Then mlngLstID(Index) = 0
    Case 1
        If frmProjectCard.DelCard(mlngLstID(1), Me.hwnd) Then mlngLstID(Index) = 0
    End Select
    RefreshLst Index
    mblnIsChanged = True
End Sub

Private Sub lstOrder_Edit(Index As Integer)
     Select Case Index
     Case 0
        If mlngLstID(Index) = 0 Then
            ShowMsg hwnd, "请先选择单位再进行修改!", vbExclamation, Caption
            Exit Sub
        End If
        frmCustomerCard.EditCard mlngLstID(0), 1, lstOrder(0).Text
     Case 1
        If mlngLstID(Index) = 0 Then
            ShowMsg hwnd, "请先选择工程再进行修改!", vbExclamation, Caption
            Exit Sub
        End If
        frmProjectCard.EditCard mlngLstID(1), 1, lstOrder(1).Text
    End Select
    mblnIsChanged = True
    RefreshLst Index
    If lstOrder(Index).Text = "" Then mlngLstID(Index) = 0
End Sub

Private Sub lstOrder_GotFocus(Index As Integer)
    If mblnIsFirst(Index) Then
        RefreshLst Index
        mblnIsFirst(Index) = False
    End If
End Sub

Private Sub lstOrder_ItemNotExist(Index As Integer)
    Dim lngID As Long
    
    Select Case Index
    Case 0
        If frmMsgAdd.MsgAddShow(Caption, "单位列表中没有" & lstOrder(0).Text) = vbOK Then
            lngID = frmCustomerCard.AddCard(lstOrder(0).Text, 1, True)
        Else
            lstOrder(Index).Text = ""
        End If
    Case 1
        If frmMsgAdd.MsgAddShow(Caption, "工程列表中没有" & lstOrder(1).Text) = vbOK Then
            lngID = frmProjectCard.AddCard(lstOrder(1).Text, 1, True)
        End If
    End Select
    If lngID <> 0 Then mlngLstID(Index) = lngID
    mblnIsChanged = True
    RefreshLst Index
End Sub

Private Sub lstOrder_LostFocus(Index As Integer)
    If Trim(lstOrder(Index).Text) = "" Then mlngLstID(Index) = lstOrder(Index).ID
    lstOrder(Index).MoveFocus
End Sub

Private Sub mnuAdd_Click()
    Dim i As Integer
    
    For i = 1 To msgOrder.Rows - 1
        If msgOrder.RowHeight(i) > 0 Then
            If msgOrder.TextMatrix(i, 0) = "" And msgOrder.TextMatrix(i, 1) = "" And msgOrder.RowData(i) = "0" Then
                Exit For
            End If
        End If
    Next i
    If i < msgOrder.Rows - 1 Then
        msgOrder.Row = i
    Else
        msgOrder.Rows = msgOrder.Rows + 1
        msgOrder.Row = msgOrder.Rows - 1
    End If
    msgOrder.RowData(msgOrder.Row) = "0"
    msgOrder.col = 0
    mblnIsChanged = True
End Sub

Private Sub mnuDel_Click()
    Dim i As Integer, j As Integer
    If ShowMsg(hwnd, "你确实要删除该笔付款计划吗?", vbQuestion + vbYesNo, Caption) = vbYes Then
        msgOrder.RowHeight(msgOrder.Row) = 0
        i = msgOrder.Row
        RefreshSum
        For j = i + 1 To msgOrder.Rows - 1
            If msgOrder.RowHeight(j) > 0 Then Exit For
        Next j
        If j < msgOrder.Rows Then
            msgOrder.Row = j
        Else
            For j = j - 1 To 1 Step -1
                If msgOrder.RowHeight(j) > 0 Then Exit For
            Next j
            If j > 0 Then msgOrder.Row = j
        End If
        If VisableRow > 4 Then
            msgOrder.ColWidth(1) = 2000
        Else
            msgOrder.ColWidth(1) = 2250
        End If
        msgOrder.col = 0
        mblnIsChanged = True
    End If
End Sub

Private Sub msgOrder_DblClick()
    If msgOrder.Row = 0 Or msgOrder.RowHeight(msgOrder.Row) = 0 Then Exit Sub
    If Not RowAllowEdit(msgOrder.Row) Then Exit Sub
    If msgOrder.col = 1 Then
        EditGrid 0
    Else
        Paste
    End If
End Sub

Private Function RowAllowEdit(ByVal lRow As Long) As Boolean
    Dim l As Long
    
    With msgOrder
        If .TextMatrix(lRow, 0) <> "" Or .TextMatrix(lRow, 1) <> "" Or lRow < .Rows - 1 Then
            RowAllowEdit = True
            Exit Function
        End If
        For l = 1 To lRow
            If .RowHeight(l) > 0 Then
                If .TextMatrix(l, 0) = "" Or .TextMatrix(l, 1) = "" Then Exit For
            End If
        Next l
        RowAllowEdit = (l = lRow)
    End With
End Function

'Private Sub msgOrder_EnterCell()
'    If msgOrder.RowHeight(msgOrder.Row) = 0 Then Exit Sub
'    If msgOrder.Row = 0 Or msgOrder.col = 1 Then Exit Sub
'    Paste
'End Sub
'
Private Sub msgOrder_KeyPress(KeyAscii As Integer)
    If msgOrder.Row = 0 Or msgOrder.RowHeight(msgOrder.Row) = 0 Then Exit Sub
    
    If KeyAscii = vbKeyReturn Then
        If msgOrder.Row = msgOrder.Rows - 1 Then
            If msgOrder.TextMatrix(msgOrder.Row, 0) = "" And msgOrder.TextMatrix(msgOrder.Row, 1) = "" Then
                chkClose.SetFocus
                Exit Sub
            End If
        End If
    End If
    If RowAllowEdit(msgOrder.Row) Then
        If msgOrder.col = 0 Then
            Paste
        ElseIf Me.ActiveControl.Name <> "chkClose" Then
            If InStr("0123456789.", Chr(KeyAscii)) > 0 Or KeyAscii = 8 Then
                EditGrid KeyAscii
            Else
                EditGrid 0
            End If
        End If
    End If
End Sub

Private Sub msgOrder_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    If Button = vbLeftButton Then Exit Sub
    mnuDel.Enabled = (msgOrder.Row <> 0)
    PopupMenu mnuEdit
End Sub

Private Sub msgOrder_Scroll()
    txtPaste.Visible = False
    dtePaste.Visible = False
End Sub

Private Sub sstOrder_DblClick()
    SetTabIndex
End Sub

Private Sub txtOrder_Change(Index As Integer)
    If Index = 0 Or Index = 2 Then
        If ContainErrorChar(txtOrder(Index).Text, "`~!@#$%^&*=+'"";:,/?|\") Then BKKEY txtOrder(Index).hwnd
        If Index = 0 Then
            If LenB(StrConv(txtOrder(0).Text, vbFromUnicode)) > txtOrder(0).MaxLength Then BKKEY txtOrder(Index).hwnd
        End If
    Else
        If ContainErrorChar(txtOrder(1).Text, "'""") Then BKKEY txtOrder(1).hwnd
    End If
    If Not mblnIsInit Then mblnIsChanged = True
End Sub

Private Sub txtOrder_KeyPress(Index As Integer, KeyAscii As Integer)
    If Index = 0 Or Index = 2 Then
        If InStr("`~!@#$%^&*=+'"";:,/?|\", Chr(KeyAscii)) > 0 Then KeyAscii = 0
    Else
        If InStr("'""", Chr(KeyAscii)) > 0 Then KeyAscii = 0
    End If
End Sub

Private Sub txtPaste_Change()
    If Not IsNum(txtPaste.Text, 2, True) Then BKKEY txtPaste.hwnd
    msgOrder.TextMatrix(msgOrder.Row, 2) = "3"
    msgOrder.Text = txtPaste.Text
    mblnIsChanged = True
End Sub

Private Sub txtPaste_KeyPress(KeyAscii As Integer)
    
    Select Case KeyAscii

⌨️ 快捷键说明

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