Ȧ
上传用户:zhpu1995
上传日期:2013-09-06
资源大小:61151k
文件大小:128k
源码类别:

企业管理

开发平台:

Visual Basic

  1.             WglrGrid.Clear 1
  2.             Changelock = True
  3.             .Select .FixedRows, Qslz
  4.             Changelock = False
  5.         End With
  6.         '计算合计数据(清零)(Fixed)
  7.         For Jsqte = Qslz To WglrGrid.Cols - 1
  8.             Call Sjhj(Jsqte)
  9.         Next Jsqte
  10.     End If
  11.     
  12.     '设置操作状态为浏览
  13.     Lab_OperStatus = "1"
  14.     Call Sub_OperStatus("10")
  15.     
  16. End Sub
  17. Private Function Sub_SaveBill() As Boolean                                   '保 存 单 据
  18.   
  19.     Dim Rectemp As New ADODB.Recordset                    '临时使用动态集
  20.     Dim Rec_VouchMain As New ADODB.Recordset              '单据主表动态集
  21.     Dim Rec_VouchSub As New ADODB.Recordset               '单据子表动态集
  22.     Dim Rowjsq As Long                                    '网格行计数器
  23.     Dim Coljsq As Long                                    '网格列计数器
  24.     Dim Jsqte As Integer                                  '临时计数器
  25.     Dim Lng_RowCount As Long                              '有效数据行计数器
  26.     Dim Lrywlz As Long                                    '录入有误列值
  27.     Dim SqlStr As String                                  'SQL语句
  28.   
  29.     Sub_SaveBill = False
  30.   
  31.     '一.============先对单据内容进行有效性判断==============='
  32.   
  33.     '先进行字段不能为空或不能为零有效性判断(Fixed)
  34.     For Jsqte = 0 To Max_Text_Index
  35.         If Textint(Jsqte, 8) = 1 Then     '字段不能为空
  36.             If Len(Trim(LrText(Jsqte).Text)) = 0 Then
  37.                 Tsxx = Textstr(Jsqte, 7) & "不能为空!"
  38.                 Call Xtxxts(Tsxx, 0, 1)
  39.                 LrText(Jsqte).SetFocus
  40.                 Exit Function
  41.             End If
  42.         Else
  43.             If Textint(Jsqte, 8) = 2 Then   '字段不能为零
  44.                 If Val(Trim(LrText(Jsqte).Text)) = 0 Then
  45.                     Tsxx = Textstr(Jsqte, 7) & "不能为零!"
  46.                     Call Xtxxts(Tsxx, 0, 1)
  47.                     LrText(Jsqte).SetFocus
  48.                     Exit Function
  49.                 End If
  50.             End If
  51.         End If
  52.     Next Jsqte
  53.     
  54.     '对需要进行事后判断的文本框录入内容进行有效性判断 (Fixed)
  55.     For Jsqte = 0 To Max_Text_Index
  56.         If Textint(Jsqte, 9) = 0 Or Textint(Jsqte, 9) = 2 Then
  57.             If Not TextYxxpd(Jsqte) Then
  58.                 Call TextShow(Jsqte)
  59.                 Exit Function
  60.             End If
  61.         End If
  62.     Next Jsqte
  63.   
  64.     '[>>
  65.   
  66.     '可在此区域写入其他对单据表头内容的有效性判断.
  67.     
  68.     '单据录入日期是否在当前年度
  69.     If Not Year(CDate(LrText(1))) = Xtyear Then
  70.         Tsxx = "单据录入日期不在当前年度!"
  71.         Call Xtxxts(Tsxx, 0, 1)
  72.         Exit Function
  73.     End If
  74.     
  75.     '是否在开帐日期之内
  76.     SqlStr = "Select Qsrq FROM  GY_Kjrlb Where BeginFlag=1 and KjYear='" & Xtyear & "'"
  77.     Set Rectemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  78.     
  79.     If CDate(LrText(1).Text) < Rectemp.Fields("Qsrq") Then
  80.         Tsxx = "入库日期必须大于" + CStr(Rectemp.Fields("Qsrq"))
  81.         Call Xtxxts(Tsxx, 0, 1)
  82.         Exit Function
  83.     End If
  84.     
  85.     '判断用户所选会计期间是否有效(非结帐月份)
  86.     SqlStr = "Select * FROM  GY_Kjrlb Where KjYear='" & Xtyear & "' AND Period='" & KjMonth(Trim(LrText(1))) & "'"
  87.     Set Rectemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  88.   
  89.     With Rectemp
  90.         If Not .EOF Then
  91.             If .Fields("chhsjzbz") Then
  92.                 Tsxx = "所选会计期间已经结帐,不能再填制单据!"
  93.                 Call Xtxxts(Tsxx, 0, 1)
  94.                 Exit Function
  95.             End If
  96.         End If
  97.     End With
  98.     
  99.     '<<]
  100.   
  101.     '[>>下面将对所有有效数据行进行有效性判断
  102.   
  103.     Lng_RowCount = 0
  104.   
  105.     With WglrGrid
  106.         For Rowjsq = .FixedRows To .Rows - 1
  107.             '带*号者为有效数据行(Fixed)
  108.             If .TextMatrix(Rowjsq, 0) <> "*" Then
  109.                 Exit For
  110.             Else
  111.                 Lng_RowCount = Lng_RowCount + 1
  112.             End If
  113.             '1.首先进行为空或为零判断(Fixed)
  114.             For Jsqte = Qslz To .Cols - 1
  115.             
  116.                 '字段不能为空
  117.                 If GridInt(Jsqte, 5) = 1 Then
  118.                     If Len(Trim(.TextMatrix(Rowjsq, Jsqte))) = 0 Then
  119.                         Tsxx = GridStr(Jsqte, 2)
  120.                         Lrywlz = Jsqte
  121.                         GoTo Lrcwcl
  122.                         Exit For
  123.                     End If
  124.                 End If
  125.                 
  126.                 '字段不能为零
  127.                 If GridInt(Jsqte, 5) = 2 Then
  128.                     If Val(Trim(.TextMatrix(Rowjsq, Jsqte))) = 0 Then
  129.                         Tsxx = GridStr(Jsqte, 2)
  130.                         Lrywlz = Jsqte
  131.                         GoTo Lrcwcl
  132.                         Exit For
  133.                     End If
  134.                 End If
  135.             Next Jsqte
  136.            
  137.             '2.判断存货编码是否存在(Define)
  138.             SqlStr = "SELECT MNumber From Gy_Material Where MNumber='" & Trim(.TextMatrix(Rowjsq, Sydz("001", GridStr(), Szzls))) & "'"
  139.             Set Rectemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  140.             If Rectemp.EOF Then
  141.                 Tsxx = "此存货编码不存在!"
  142.                 Lrywlz = Sydz("001", GridStr(), Szzls)
  143.                 GoTo Lrcwcl
  144.             End If
  145.         Next Rowjsq
  146.      
  147.         '单据分录行数不能为零(Fixed)
  148.         If Lng_RowCount = 0 Then
  149.             Tsxx = "单据分录行数不能为零!"
  150.             Call Xtxxts(Tsxx, 0, 1)
  151.             Exit Function
  152.         End If
  153.         
  154.         '[>>
  155.         '此处可以定义整张单据不能通过有效性检查的理由
  156.         '<<]
  157.     End With  '网格
  158.    
  159.    
  160.     '二.=============如果以上有效性检查均顺利通过,则执行存盘动作============'
  161.    
  162.     '对存盘进行事务处理(Fixed)
  163.     On Error GoTo Swcwcl
  164.     Cw_DataEnvi.DataConnect.BeginTrans
  165.     
  166.     '判断单据状态以进行不同处理
  167.     
  168.     '1.先对单据主表进行处理
  169.     If Trim(Lab_OperStatus) = "2" Then
  170.     
  171.         '新增单据
  172.         
  173.         '1.对于某些单据号自动生成的单据则可在此处自动生成
  174.          LrText(0).Text = CreatBillCode(BillCode, True, , , Trim(LrText(3).Tag))
  175.     
  176.         '2.开始存盘
  177.          
  178.         '打开单据主表动态集
  179.         If Rec_VouchMain.State = 1 Then Rec_VouchMain.Close
  180.         Rec_VouchMain.Open "Select * From GY_InOutMain Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  181.              
  182.         With Rec_VouchMain
  183.             .AddNew
  184.             .Fields("InOutMainId") = CreatBillID(BillCode)                                  '单据ID
  185.             .Fields("BillCode") = BillCode                                                  '单据类型
  186.             .Fields("BillNum") = Trim(LrText(0).Text)                                       '单据号
  187.             .Fields("BillDate") = CDate(LrText(1).Text)                                     '日期
  188.             .Fields("OperType") = "采购入库"                                                 '业务类型
  189.             .Fields("PurTypeCode") = Trim(LrText(2).Tag)                                    '采购类型
  190.             .Fields("WhCode") = Trim(LrText(3).Tag)                                         '仓库
  191.             .Fields("InoutClassCode") = Trim(LrText(4).Tag)                                 '入库类别
  192.             .Fields("DeptCode") = Trim(LrText(5).Tag)                                       '部门
  193.             .Fields("SupplierCode") = Trim(LrText(6).Tag)                                   '供应商
  194.             .Fields("PersonCode") = Trim(LrText(7).Tag)                                     '业务员
  195.             .Fields("Remark") = Trim(LrText(8).Text)                                        '备注
  196.             .Fields("Maker") = Xtczy                                                        '制单人
  197.             .Fields("ChhsChecker") = ""                                                     '审核人置空
  198.             .Fields("KjYear") = Xtyear                                                      '会计年
  199.             .Fields("Period") = KjMonth(CDate(Trim(LrText(1))))                             '会计月
  200.             .Fields("InOutFlag") = 1                                                        '收发标志
  201.             If Opt_Word(0).Value = True Then                                                '红蓝字标志
  202.                 .Fields("RedBlueFlag") = "1"
  203.             Else
  204.                 .Fields("RedBlueFlag") = "0"
  205.             End If
  206.             .Update
  207.             '系统读出单据ID写入Lab_BillID
  208.             Lab_BillId.Caption = .Fields("InOutMainId")
  209.         End With
  210.     Else
  211.         '修改单据
  212.        
  213.         '1.删除原单据子表中所有内容
  214.         
  215.         Cw_DataEnvi.DataConnect.Execute ("Delete GY_InOutSub Where InOutMainId=" & Val(Lab_BillId.Caption))
  216.         
  217.         '打开单据主表动态集
  218.         If Rec_VouchMain.State = 1 Then Rec_VouchMain.Close
  219.         Rec_VouchMain.Open "Select * From GY_InOutMain Where InOutMainId=" & Val(Lab_BillId.Caption), Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  220.         
  221.         With Rec_VouchMain
  222.             .Fields("BillNum") = Trim(LrText(0).Text)                                       '单据号
  223.             .Fields("BillDate") = CDate(LrText(1).Text)                                     '日期
  224.             .Fields("PurTypeCode") = Trim(LrText(2).Tag)                                    '采购类型
  225.             .Fields("DeptCode") = Trim(LrText(5).Tag)                                       '部门
  226.             .Fields("InoutClassCode") = Trim(LrText(4).Tag)                                 '入库类别
  227.             .Fields("SupplierCode") = Trim(LrText(6).Tag)                                   '供应商
  228.             .Fields("PersonCode") = Trim(LrText(7).Tag)                                     '业务员
  229.             .Fields("Remark") = Trim(LrText(8).Text)                                        '备注
  230.             .Fields("ChhsChecker") = ""                                                     '审核人置空
  231.             .Fields("Period") = KjMonth(CDate(Trim(LrText(1))))                             '会计月
  232.             .Fields("InOutFlag") = 1                                                        '收发标志
  233.             If Opt_Word(0).Value = True Then                                                '红蓝字标志
  234.                 .Fields("RedBlueFlag") = "1"
  235.             Else
  236.                 .Fields("RedBlueFlag") = "0"
  237.             End If
  238.             .Update
  239.         End With
  240.     End If
  241.          
  242.     '2.对单据子表进行处理
  243.          
  244.     '打开单据子表动态集
  245.     If Rec_VouchSub.State = 1 Then Rec_VouchSub.Close
  246.     Rec_VouchSub.Open "Select * From GY_InOutSub Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  247.      
  248.     '将网格中有效数据行写入单据子表
  249.     For Rowjsq = WglrGrid.FixedRows To WglrGrid.Rows - 1
  250.         If WglrGrid.TextMatrix(Rowjsq, 0) <> "*" Then
  251.             Exit For
  252.         End If
  253.         
  254.         With Rec_VouchSub
  255.             .AddNew
  256.             .Fields("InOutSubId") = Rowjsq - WglrGrid.FixedRows + 1                                            '单据记录顺序号
  257.             .Fields("InOutMainId") = Val(Lab_BillId.Caption)                                                   '单据ID
  258.             .Fields("MNumber") = Trim(WglrGrid.TextMatrix(Rowjsq, Sydz("001", GridStr(), Szzls)))              '存货编码
  259.             If Opt_Word(0).Value = True Then
  260.                 .Fields("FactReceiptQuan") = 0 - Val(WglrGrid.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls)))     '数量
  261.             Else
  262.                 .Fields("FactReceiptQuan") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("005", GridStr(), Szzls)))       '数量
  263.             End If
  264.             If FGISPriceMode = "计划价法" Then
  265.                 .Fields("PlanPrice") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("006", GridStr(), Szzls)))             '计划单价
  266.                 If Opt_Word(0).Value = True Then
  267.                     .Fields("PlanMoney") = 0 - Val(WglrGrid.TextMatrix(Rowjsq, Sydz("007", GridStr(), Szzls)))           '计划金额
  268.                 Else
  269.                     .Fields("PlanMoney") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("007", GridStr(), Szzls)))
  270.                 End If
  271.             End If
  272.             .Fields("Price") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("008", GridStr(), Szzls)))                 '实际单价
  273.             If Opt_Word(0).Value = True Then
  274.                 .Fields("EMoney") = 0 - Val(WglrGrid.TextMatrix(Rowjsq, Sydz("009", GridStr(), Szzls)))              '实际金额
  275.             Else
  276.                 .Fields("EMoney") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("009", GridStr(), Szzls)))
  277.             End If
  278.             .Update
  279.         End With
  280.     Next Rowjsq
  281.     
  282.     Cw_DataEnvi.DataConnect.CommitTrans
  283.     
  284.     Sub_SaveBill = True
  285.     Tsxx = "单据存盘完毕! 单据号:" & Trim(LrText(0).Text)
  286.     Call Xtxxts(Tsxx, 0, 4)
  287.     
  288.     '标识单据发生改动
  289.     Bln_BillChange = True
  290.     
  291.     '设置单据改变后的状态
  292.     Lab_OperStatus = "1"
  293.     Call Sub_OperStatus("10")
  294.     Rec_Query.Requery
  295.     Rec_Query.Find "InOutMainId=" & Val(Lab_BillId.Caption)
  296.     
  297.     Exit Function
  298. Swcwcl:       '数据存盘时出现错误
  299.     Cw_DataEnvi.DataConnect.RollbackTrans
  300.     With WglrGrid
  301.         If Err.Number = -2147217887 Then
  302.             Tsxx = "单据中第  " & Trim(Str(Rowjsq - .FixedRows + 1)) & " 条分录录入数据超出允许范围!"
  303.             Call Xtxxts(Tsxx, 0, 1)
  304.             Changelock = True
  305.             .Select Rowjsq, Qslz
  306.             WglrGrid.SetFocus
  307.             Changelock = False
  308.             Exit Function
  309.         Else
  310.             Tsxx = "存盘过程中出现未知错误,程序自动恢复保存前状态!"
  311.             Call Xtxxts(Tsxx, 0, 1)
  312.             Exit Function
  313.         End If
  314.     End With
  315. Lrcwcl:        '录入错误处理(存盘前逐行有效性判断)
  316.     With WglrGrid
  317.         Call Xtxxts("(第 " & Trim(Str(Rowjsq - .FixedRows + 1)) & " 条单据分录)-" & Tsxx, 0, 1)
  318.         Changelock = True
  319.         .Select Rowjsq, Lrywlz
  320.         WglrGrid.SetFocus
  321.         Changelock = False
  322.         Exit Function
  323.     End With
  324. End Function
  325. '选择首张,上张,下张,末张(此4个过程只需用您的单据ID字段名替换"OrderBillMainId"即可)
  326. Private Sub Sub_First()             '首 张
  327.     
  328.     With Rec_Query
  329.         If .RecordCount = 0 Then
  330.             Exit Sub
  331.         End If
  332.         .MoveFirst
  333.         Lab_BillId.Caption = .Fields("InOutMainId")
  334.         Call Sub_ShowBill
  335.     End With
  336. End Sub
  337. Private Sub Sub_Prev()             '上 张
  338.     
  339.     With Rec_Query
  340.         If .RecordCount = 0 Then
  341.             Exit Sub
  342.         End If
  343.         .MovePrevious
  344.         If Not .BOF Then
  345.             Lab_BillId.Caption = .Fields("InOutMainId")
  346.         Else
  347.             .MoveNext
  348.         End If
  349.         Call Sub_ShowBill
  350.     End With
  351. End Sub
  352. Private Sub Sub_next()             '下 张
  353.     With Rec_Query
  354.         If .RecordCount = 0 Then
  355.             Exit Sub
  356.         End If
  357.         .MoveNext
  358.         If Not .EOF Then
  359.             Lab_BillId.Caption = .Fields("InOutMainId")
  360.         Else
  361.             .MovePrevious
  362.         End If
  363.         Call Sub_ShowBill
  364.     End With
  365. End Sub
  366. Private Sub Sub_Last()              '末 张
  367.     
  368.     With Rec_Query
  369.         If .RecordCount = 0 Then
  370.             Exit Sub
  371.         End If
  372.         .MoveLast
  373.         Lab_BillId.Caption = .Fields("InOutMainId")
  374.         Call Sub_ShowBill
  375.     End With
  376. End Sub
  377.     
  378. '[>>===================以下为根据实际业务需要自定义过程区域=============================<<]
  379. '审核,弃审
  380. Private Sub Sub_CheckBill()             '审 核
  381.     
  382.     '[>>
  383.     '此处可以写入禁止单据审核的理由
  384.     '<<]
  385.     
  386.     '将单据写入审核标识
  387.     Cw_DataEnvi.DataConnect.Execute ("Update GY_InOutMain Set ChhsChecker='" & Xtczy & "' Where InOutMainId=" & Val(Lab_BillId.Caption))
  388.     
  389.     '写入系统操作员
  390.     LrText(10).Text = Xtczy
  391.     
  392.     '设置审核弃审按钮状态
  393.     Call Sub_CheckStatus
  394.     
  395.     '标识单据发生变化
  396.     Bln_BillChange = True
  397. End Sub
  398. Private Sub Sub_AbandonCheck()          '弃 审
  399.     
  400.     '[>>
  401.     '此处可以写入禁止单据弃审的理由
  402.     '<<]
  403.    
  404.     '将单据清除审核标识
  405.     Cw_DataEnvi.DataConnect.Execute ("Update GY_InOutMain Set ChhsChecker='' Where InOutMainId=" & Val(Lab_BillId.Caption))
  406.     
  407.     '清空单据审核人
  408.     LrText(10).Text = ""
  409.     
  410.     '设置审核弃审按钮状态
  411.     Call Sub_CheckStatus
  412.     
  413.     '标识单据发生变化
  414.     Bln_BillChange = True
  415.   
  416. End Sub
  417. Private Function Fun_AllowEdit() As Boolean                      '判断当前单据是否允许编辑或删除
  418.   
  419.     Dim Rectemp As New ADODB.Recordset     '临时使用动态集
  420.     Dim SqlStr As String                   'SQL语句
  421.     
  422.     Fun_AllowEdit = False
  423.     
  424.     SqlStr = "Select * From GY_InOutMain Where InOutMainId='" & Lab_BillId.Caption & "'"
  425.     Set Rectemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  426.     
  427.     With Rectemp
  428.     
  429.         If Not .EOF Then
  430.         
  431.             '记帐或审核单据不能修改
  432.             If Not Trim(.Fields("ChhsChecker") & "") = "" Then
  433.                 Tsxx = "该单据已审核确认,不能修改或删除!"
  434.                 Call Xtxxts(Tsxx, 0, 4)
  435.                 Exit Function
  436.             End If
  437.         
  438.             If Not Trim(.Fields("ChalkitupMan") & "") = "" Then
  439.                 Tsxx = "该单据已记帐,不能修改或删除!"
  440.                 Call Xtxxts(Tsxx, 0, 4)
  441.                 Exit Function
  442.             End If
  443.             
  444.         End If
  445.         
  446.     End With
  447.     
  448.     Fun_AllowEdit = True
  449. End Function
  450. '[>>===================以上为根据实际业务需要自定义过程区域=============================<<]
  451. '===================以 下 程 序 为 通 用 部 分 ,一 般 不 需 更 改(程序动作部分)======================='
  452. Private Sub Sub_AdjustGrid()
  453.   
  454.     '调 整 网 格
  455.     With WglrGrid
  456.         '加 1 保持一行录入行
  457.         If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  458.             .Rows = Pmbcsjhs + .FixedRows + Fzxwghs + 1
  459.             For Jsqte = .FixedRows To .Rows - 1
  460.                 .RowHeight(Jsqte) = Sjhgd
  461.             Next Jsqte
  462.         Else
  463.             '判断是否有辅助行和录入行,如没有则加行
  464.             Do While .TextMatrix(.Rows - 1 - Fzxwghs, 0) = "*"
  465.                 .AddItem ""
  466.                 .RowHeight(.Rows - 1) = Sjhgd
  467.             Loop
  468.         End If
  469.     End With
  470. End Sub
  471. Private Sub Lrzdbz()                                                      '录入字段帮助
  472.     
  473.     If Not Ydcommand.Visible Then
  474.         Exit Sub
  475.     End If
  476.    
  477.     With WglrGrid
  478.         Valilock = True
  479.     
  480.         '处理通用部分
  481.         Changelock = True        '调入另外窗体必须加锁
  482.         Call Drbmhelp(GridInt(.Col, 6), GridStr(.Col, 3), Trim(Ydtext.Text))
  483.         Changelock = False
  484.         
  485.         If Len(Xtfhcs) <> 0 Then
  486.             If GridInt(.Col, 7) = 0 Then
  487.                 Ydtext.Text = Xtfhcs
  488.             Else
  489.                 Ydtext.Text = Xtfhcsfz
  490.             End If
  491.         End If
  492.         
  493.         Valilock = False
  494.         If Ydtext.Visible Then
  495.             Ydtext.SetFocus
  496.         End If
  497.     End With
  498. End Sub
  499. Private Sub Cshhjwg()                                                     '初始化合计网格(*对合计网格来说,录入网格为容器)
  500.     
  501.     With HjGrid
  502.     
  503.        '是否显示合计网格
  504.        If Not Sfxshjwg Then
  505.            .Visible = False
  506.            Exit Sub
  507.        Else
  508.            .Visible = True
  509.        End If
  510.       
  511.        '设置网格相关属性
  512.        .Enabled = False
  513.        .Appearance = flexFlat
  514.        .BorderStyle = flexBorderNone
  515.        .ScrollBars = flexScrollBarNone
  516.        .Width = WglrGrid.Width
  517.        .FixedRows = 0
  518.        .Rows = 1
  519.        .Cols = WglrGrid.Cols
  520.        .LeftCol = WglrGrid.LeftCol
  521.        .TextMatrix(0, Qslz) = "合  计"
  522.        For Jsqte = 0 To WglrGrid.Cols - 1
  523.            .ColHidden(Jsqte) = WglrGrid.ColHidden(Jsqte)
  524.            .ColWidth(Jsqte) = WglrGrid.ColWidth(Jsqte)
  525.            .ColAlignment(Jsqte) = WglrGrid.ColAlignment(Jsqte)
  526.            .ColFormat(Jsqte) = WglrGrid.ColFormat(Jsqte)
  527.        Next Jsqte
  528.        .ColAlignment(Qslz) = flexAlignCenterTop
  529.        For Jsqte = .FixedRows To .Rows - 1
  530.            .RowHeight(Jsqte) = .Height / .Rows
  531.        Next Jsqte
  532.        
  533.       '程序自动调整网格高度(自动设置为网格剩余高度+辅助项网格行数(默认为1)*数据行高度)、并设置其位置信息
  534.        .Height = Fzxwghs * Sjhgd + ((WglrGrid.Height - WglrGrid.FixedRows * WglrGrid.RowHeight(0)) Mod Sjhgd)
  535.        .RowHeight(0) = .Height
  536.        .Move 0, WglrGrid.Height - .Height, WglrGrid.Width, .Height
  537.     End With
  538. End Sub
  539. Private Sub Form_Resize()                                                '窗体大小发生变化时,重新显示文本框
  540.    Call Cxxswbk
  541. End Sub
  542. Private Function Fun_Drfrmyxxpd() As Boolean                             '调入其它窗体或功能产生的有效性判断(包括数据回写)
  543.     Fun_Drfrmyxxpd = True
  544.     With WglrGrid
  545.    
  546.         '如果当前网格处于编辑状态,则先进行数据回写再进行有效性判断
  547.         If Ydtext.Visible Or YdCombo.Visible Then
  548.             Call Lrsjhx
  549.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  550.                 Fun_Drfrmyxxpd = False
  551.                 Exit Function
  552.             End If
  553.         End If
  554.    
  555.         '进行行有效性判断
  556.         If Not Sjhzyxxpd(.Row) Then
  557.             Fun_Drfrmyxxpd = False
  558.             Exit Function
  559.         End If
  560.     End With
  561. End Function
  562. Private Sub WglrGrid_AfterUserResize(ByVal Row As Long, ByVal Col As Long)       '调整列宽
  563.     
  564.     If HjGrid.Visible Then
  565.         With HjGrid
  566.             .ColWidth(Col) = WglrGrid.ColWidth(Col)
  567.         End With
  568.     End If
  569. End Sub
  570. Private Sub WglrGrid_EnterCell()                                                 '显示当前数据行相关信息
  571.     
  572.     With WglrGrid
  573.         If .Row >= .FixedRows Then
  574.             '[>>
  575.             '此处可以填写显示与此网格行相关信息
  576.             '<<]
  577.         End If
  578.     End With
  579. End Sub
  580. Private Sub WglrGrid_GotFocus()                                     '网格得到焦点
  581.     '网格得到焦点,如果当前选择行为非数据行
  582.     '则调整当前焦点至有效数据行
  583.     With WglrGrid
  584.         If .Row < .FixedRows And .Rows > .FixedRows Then
  585.             Changelock = True
  586.             .Select .FixedRows, .Col
  587.             Changelock = False
  588.         End If
  589.         If .Col < Qslz Then
  590.             Changelock = True
  591.             .Select .Row, Qslz
  592.             Changelock = False
  593.         End If
  594.     End With
  595. End Sub
  596. Private Sub WglrGrid_LostFocus()                                    '录入网格失去焦点
  597.     '用以屏蔽调用其它窗体时发生网格失去焦点事件
  598.     If Changelock Then
  599.         Exit Sub
  600.     End If
  601.     '引发网格RowcolChange事件
  602.     With WglrGrid
  603.         If Not (Ydtext.Visible Or YdCombo.Visible) Then
  604.             .Select 0, 0
  605.         End If
  606.     End With
  607. End Sub
  608. Private Sub WglrGrid_AfterScroll(ByVal OldTopRow As Long, ByVal OldLeftCol As Long, ByVal NewTopRow As Long, ByVal NewLeftCol As Long)                                       '限制用户在录入过程中滚动鼠标
  609.     If Gdtlock Then
  610.         Exit Sub
  611.     End If
  612.  
  613.     With WglrGrid
  614.         If Ydtext.Visible Or YdCombo.Visible Then
  615.             Gdtlock = True
  616.             .TopRow = Dqtoprow
  617.             .LeftCol = Dqleftcol
  618.             Gdtlock = False
  619.             Exit Sub
  620.         End If
  621.         HjGrid.LeftCol = .LeftCol
  622.     End With
  623. End Sub
  624. Private Sub WglrGrid_LeaveCell()                                    '离开单元格
  625.     
  626.     If Changelock Then
  627.         Exit Sub
  628.     End If
  629.     '记录刚刚离开网格单元的行列值
  630.     Dqlkwgh = WglrGrid.Row
  631.     Dqlkwgl = WglrGrid.Col
  632.     '判断是否需要录入数据回写
  633.     If Not (Ydtext.Visible Or YdCombo.Visible) Then
  634.         Exit Sub
  635.     End If
  636.     Call Lrsjhx
  637. End Sub
  638. Private Sub WglrGrid_RowColChange()                                '网格录入行列发生变化时,进行有效性判断
  639.     Valilock = True       '屏蔽文本框失去焦点进行有效性判断
  640.     With WglrGrid
  641.         If Changelock Then
  642.             Exit Sub
  643.         End If
  644.         If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  645.             Exit Sub
  646.         End If
  647.         If .Row <> Dqlkwgh Then
  648.             If Not Sjhzyxxpd(Dqlkwgh) Then
  649.                 Exit Sub
  650.             End If
  651.         End If
  652.     End With
  653.    
  654.     Call fhyxh
  655.     Call Xldql
  656.    
  657. End Sub
  658. Private Sub WglrGrid_DblClick()          '鼠标双击网格显示文本框
  659.   
  660.     With WglrGrid
  661.         Call xswbk
  662.     End With
  663. End Sub
  664. Private Sub Ycwbk()                      '隐藏文本框,帮助按钮,列表组合框
  665.     
  666.     Valilock = True
  667.     Ydtext.Visible = False
  668.     YdCombo.Visible = False
  669.     Ydcommand.Visible = False
  670. End Sub
  671. Private Sub YdCombo_KeyDown(KeyCode As Integer, Shift As Integer)        '列表框移动
  672.     With WglrGrid
  673.         Select Case KeyCode
  674.             Case vbKeyEscape                'ESC 键放弃录入
  675.                 Valilock = True
  676.                 .SetFocus
  677.                 Call Ycwbk
  678.                 Valilock = False
  679.             Case vbKeyReturn                '回 车 键 =13
  680.                 KeyCode = 0
  681.                 .SetFocus
  682.                 Call Lrsjhx
  683.                 Rowjsq = .Row
  684.                 Coljsq = .Col + 1
  685.                 If Coljsq > .Cols - 1 Then
  686.                     If Rowjsq < .Rows - 1 Then
  687.                         Rowjsq = Rowjsq + 1
  688.                     End If
  689.                     Coljsq = Qslz
  690.                 End If
  691.                 Do While Rowjsq <= .Rows - 1
  692.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  693.                         Coljsq = Coljsq + 1
  694.                         If Coljsq > .Cols - 1 Then
  695.                             Rowjsq = Rowjsq + 1
  696.                             Coljsq = Qslz
  697.                         End If
  698.                     Else
  699.                         Exit Do
  700.                     End If
  701.                 Loop
  702.                 .Select Rowjsq, Coljsq
  703.             Case vbKeyLeft                  '左 箭 头 =37
  704.                 If .Col - 1 = Qslz Then
  705.                     If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  706.                         GoTo jzzx
  707.                     End If
  708.                 End If
  709.                 If .Col > Qslz Then
  710.                     KeyCode = 0
  711.                     .SetFocus
  712.                     Call Lrsjhx
  713.                     Coljsq = .Col - 1
  714.                     Do While Coljsq > Qslz
  715.                         If Coljsq - 1 = Qslz Then
  716.                             If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  717.                                 GoTo jzzx
  718.                             End If
  719.                         End If
  720.                         If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  721.                             Coljsq = Coljsq - 1
  722.                         Else
  723.                             Exit Do
  724.                         End If
  725.                     Loop
  726.                     .Select .Row, Coljsq
  727.                 End If
  728.             Case vbKeyRight                 '右 箭 头 =39
  729.                 KeyCode = 0
  730.                 .SetFocus
  731.                 Call Lrsjhx
  732.                 Rowjsq = .Row
  733.                 Coljsq = .Col + 1
  734.                 If Coljsq > .Cols - 1 Then
  735.                     If Rowjsq < .Rows - 1 Then
  736.                         Rowjsq = Rowjsq + 1
  737.                     End If
  738.                     Coljsq = Qslz
  739.                 End If
  740.                 Do While Rowjsq <= .Rows - 1
  741.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  742.                         Coljsq = Coljsq + 1
  743.                         If Coljsq > .Cols - 1 Then
  744.                             Rowjsq = Rowjsq + 1
  745.                             Coljsq = Qslz
  746.                         End If
  747.                     Else
  748.                         Exit Do
  749.                     End If
  750.                 Loop
  751.                 .Select Rowjsq, Coljsq
  752.         Case Else
  753.    End Select
  754.    
  755. jzzx:
  756.    
  757.     End With
  758. End Sub
  759. Private Sub YdCombo_LostFocus()
  760.   
  761.     With WglrGrid                                    '因为选中网格会先发生Rowcolchange事件置Valiock
  762.         If Not Valilock Then                           '为TRUE
  763.             Call Lrsjhx
  764.             If Not Sjhzyxxpd(Dqlrwgh) Then
  765.                 Exit Sub
  766.             End If
  767.         End If
  768.     End With
  769. End Sub
  770. Private Sub Ydcommand_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  771.     Call Lrzdbz
  772. End Sub
  773. Private Sub ydtext_KeyDown(KeyCode As Integer, Shift As Integer)
  774.     Dim Rowjsq As Long, Coljsq As Long
  775.     With WglrGrid
  776.         Select Case KeyCode
  777.             Case vbKeyF2
  778.                 Call Lrzdbz
  779.             Case vbKeyEscape                'ESC 键放弃录入
  780.                 Valilock = True
  781.                 Call Ycwbk
  782.                 .SetFocus
  783.             Case vbKeyReturn                '回 车 键 =13
  784.                 KeyCode = 0
  785.                 .SetFocus
  786.                 Call Lrsjhx
  787.                 Rowjsq = .Row
  788.                 Coljsq = .Col + 1
  789.                 If Coljsq > .Cols - 1 Then
  790.                     If Rowjsq < .Rows - 1 Then
  791.                         Rowjsq = Rowjsq + 1
  792.                     End If
  793.                     Coljsq = Qslz
  794.                 End If
  795.                 Do While Rowjsq <= .Rows - 1
  796.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  797.                         Coljsq = Coljsq + 1
  798.                         If Coljsq > .Cols - 1 Then
  799.                             Rowjsq = Rowjsq + 1
  800.                             Coljsq = Qslz
  801.                         End If
  802.                     Else
  803.                         Exit Do
  804.                     End If
  805.                 Loop
  806.                 If Rowjsq <= .Rows - 1 Then
  807.                     .Select Rowjsq, Coljsq
  808.                 End If
  809.             Case vbKeyUp                    '上 箭 头 =38
  810.                 KeyCode = 0
  811.                 .SetFocus
  812.                 Call Lrsjhx
  813.                 If .Row > .FixedRows Then
  814.                     .Row = .Row - 1
  815.                 End If
  816.             Case vbKeyDown                  '下 箭 头 =40
  817.                 KeyCode = 0
  818.                 .SetFocus
  819.                 Call Lrsjhx
  820.                 If .Row < .Rows - 1 Then
  821.                     .Row = .Row + 1
  822.                 End If
  823.             Case vbKeyLeft                  '左 箭 头 =37
  824.                 If .Col - 1 = Qslz Then
  825.                     If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  826.                         GoTo jzzx
  827.                     End If
  828.                 End If
  829.                 If Ydtext.SelStart = 0 And .Col > Qslz Then
  830.                     KeyCode = 0
  831.                     .SetFocus
  832.                     Call Lrsjhx
  833.                     Coljsq = .Col - 1
  834.                     Do While Coljsq > Qslz
  835.                         If Coljsq - 1 = Qslz Then
  836.                             If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  837.                                 GoTo jzzx
  838.                             End If
  839.                         End If
  840.                         If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  841.                             Coljsq = Coljsq - 1
  842.                         Else
  843.                             Exit Do
  844.                         End If
  845.                     Loop
  846.                     .Select .Row, Coljsq
  847.                 End If
  848. jzzx:
  849.             Case vbKeyRight                 '右 箭 头 =39
  850.                 wblong = Len(Ydtext.Text)
  851.                 If (Ydtext.SelStart = wblong Or Ydtext.SelLength = wblong) Then
  852.                     KeyCode = 0
  853.                     .SetFocus
  854.                     Call Lrsjhx
  855.                     Rowjsq = .Row
  856.                     Coljsq = .Col + 1
  857.                     If Coljsq > .Cols - 1 Then
  858.                         If Rowjsq < .Rows - 1 Then
  859.                             Rowjsq = Rowjsq + 1
  860.                         End If
  861.                         Coljsq = Qslz
  862.                     End If
  863.                     Do While Rowjsq <= .Rows - 1
  864.                         If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  865.                             Coljsq = Coljsq + 1
  866.                             If Coljsq > .Cols - 1 Then
  867.                                 Rowjsq = Rowjsq + 1
  868.                                 Coljsq = Qslz
  869.                             End If
  870.                         Else
  871.                             Exit Do
  872.                         End If
  873.                     Loop
  874.                     .Select Rowjsq, Coljsq
  875.                 End If
  876.             Case Else
  877.         End Select
  878.     End With
  879. End Sub
  880. Private Sub ydtext_KeyPress(KeyAscii As Integer)         '录入字符事中控制
  881.     
  882.     Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  883.     If KeyAscii <> 0 Then
  884.         Call Xyxhbz(Dqlrwgh)
  885.     End If
  886. End Sub
  887. Private Sub ydtext_Change()                              '录入事中变化处理
  888.     '防止程序改变但不进行处理
  889.     If Wbkbhlock Then
  890.         Exit Sub
  891.     End If
  892.     With WglrGrid
  893.         '限制字段录入长度
  894.         Wbkbhlock = True
  895.         Select Case GridInt(.Col, 1)
  896.             Case 8, 11   '金额型
  897.                 Call Sjgskz(Ydtext, Xtjezws - Xtjexsws - 1, Xtjexsws)
  898.             Case 9, 12   '数量型
  899.                 Call Sjgskz(Ydtext, Xtslzws - Xtslxsws - 1, Xtslxsws)
  900.             Case 10      '单价型
  901.                 Call Sjgskz(Ydtext, Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  902.             Case Else    '其他类型
  903.                 If GridInt(.Col, 3) <> 0 Or GridInt(.Col, 4) <> 0 Then
  904.                     Call Sjgskz(Ydtext, GridInt(.Col, 3), GridInt(.Col, 4))
  905.                 End If
  906.         End Select
  907.         Wbkbhlock = False
  908.     End With
  909. End Sub
  910. Private Sub ydtext_LostFocus()            '如果由于选中网格之外的控件而发生有效性判断(选中网格会先发生Rowcolchange事件置Valiock为TRUE)
  911.   
  912.     With WglrGrid
  913.         If Not Valilock Then
  914.             Call Lrsjhx
  915.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  916.                 Exit Sub
  917.             End If
  918.             If Not Sjhzyxxpd(Dqlrwgh) Then
  919.                 Exit Sub
  920.             End If
  921.         End If
  922.     End With
  923. End Sub
  924. Private Sub xswbk()                       '在当前选中单元显示文本框,列表框,帮助按钮(通用)
  925.     
  926.     Dim Wbkpy As Integer, Wbkpy1 As Integer '文本框偏移量
  927.   
  928.     '当某种条件成立时禁止文本框激活使单据处于录入状态
  929.     If Not Fun_AllowInput Then
  930.         Exit Sub
  931.     End If
  932.   
  933.     '显示文本框前返回有效行列(解决滚动条问题)
  934.     Call Xldqh
  935.     Call Xldql
  936.   
  937.     '隐藏文本框,帮助按钮,列表组合框
  938.     Call Ycwbk
  939.   
  940.     With WglrGrid
  941.         Dqlrwgh = .Row
  942.         Dqlrwgl = .Col
  943.         If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  944.             Exit Sub
  945.         End If
  946.      
  947.         Wbkpy = 30
  948.         Wbkpy1 = 15
  949.     
  950.         If GridBoolean(.Col, 3) Then
  951.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  952.             YdCombo.Top = .CellTop + .Top + Wbkpy
  953.             YdCombo.Width = .CellWidth - Wbkpy1
  954.             Call Wbkcl
  955.             YdCombo.Visible = True
  956.             YdCombo.SetFocus
  957.             Ydcommand.Visible = False
  958.             Ydtext.Visible = False
  959.         Else
  960.             If GridBoolean(.Col, 2) Then
  961.                 Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  962.                 Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  963.                 Ydcommand.Visible = True
  964.             Else
  965.                 Ydcommand.Visible = False
  966.             End If
  967.              
  968.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  969.             Ydtext.Top = .CellTop + .Top + Wbkpy
  970.             If Ydcommand.Visible Then
  971.                 If Sfblbzkd Then
  972.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  973.                 Else
  974.                     Ydtext.Width = .CellWidth - Wbkpy1
  975.                 End If
  976.             Else
  977.                 Ydtext.Width = .CellWidth - Wbkpy1
  978.             End If
  979.             Ydtext.Height = .CellHeight - Wbkpy1
  980.         
  981.             If GridInt(.Col, 2) <> 0 Then
  982.                 Ydtext.MaxLength = GridInt(.Col, 2)
  983.             Else
  984.                 Ydtext.MaxLength = 3000
  985.             End If
  986.       
  987.             Call Wbkcl
  988.       
  989.             Ydtext.Visible = True
  990.             Ydtext.SetFocus
  991.         End If
  992.         Dqtoprow = .TopRow
  993.         Dqleftcol = .LeftCol
  994.         
  995.         '重置锁值
  996.         Valilock = False
  997.         Wbkbhlock = False
  998.     End With
  999. End Sub
  1000. Private Function Fun_AllowInput() As Boolean                           '当某种条件成立时禁止文本框激活使单据处于录入状态
  1001.    
  1002.     '如果单据操作状态为浏览状态则不能显示录入载体(通用)
  1003.     If Trim(Lab_OperStatus.Caption) = "1" Then
  1004.         Exit Function
  1005.     End If
  1006.    
  1007.     '[>>
  1008.     
  1009.     '此处可以填写禁止文本框激活使单据处于录入状态的理由
  1010.     
  1011.     '系统集成为真时 , 单据只允许修改单价, 金额
  1012.     If ClrkdKfsc Then
  1013.        GridBoolean(Sydz("001", GridStr(), Szzls), 1) = False
  1014.        GridBoolean(Sydz("005", GridStr(), Szzls), 1) = False
  1015.     Else
  1016.        GridBoolean(Sydz("001", GridStr(), Szzls), 1) = True
  1017.        GridBoolean(Sydz("005", GridStr(), Szzls), 1) = True
  1018.     End If
  1019.     '<<]
  1020.    
  1021.     Fun_AllowInput = True
  1022. End Function
  1023. Private Sub Cxxswbk()                                                  'Formresize中重新显示文本框,列表框,帮助按钮(通用)
  1024.                    
  1025.     Dim Wbkpy As Integer, Wbkpy1 As Integer
  1026.     Wbkpy = 30
  1027.     Wbkpy1 = 15
  1028.     With WglrGrid
  1029.         If YdCombo.Visible Then
  1030.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  1031.             YdCombo.Top = .CellTop + .Top + Wbkpy
  1032.             YdCombo.Width = .CellWidth - Wbkpy1
  1033.         End If
  1034.         If Ydcommand.Visible Then
  1035.             Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  1036.             Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  1037.         End If
  1038.         If Ydtext.Visible Then
  1039.             If Ydcommand.Visible Then
  1040.                 If Sfblbzkd Then
  1041.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  1042.                 Else
  1043.                     Ydtext.Width = .CellWidth - Wbkpy1
  1044.                 End If
  1045.             Else
  1046.                 Ydtext.Width = .CellWidth - Wbkpy1
  1047.             End If
  1048.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  1049.             Ydtext.Top = .CellTop + .Top + Wbkpy
  1050.             Ydtext.Height = .CellHeight - Wbkpy1
  1051.         End If
  1052.     End With
  1053. End Sub
  1054. Private Sub Lrsjhx()                                                   '文本框录入数据回写
  1055.     
  1056.     With WglrGrid
  1057.         If YdCombo.Visible Then
  1058.             .Text = Trim(YdCombo.Text)
  1059.         End If
  1060.         If Ydtext.Visible Then
  1061.             .Text = Trim(Ydtext.Text)
  1062.         End If
  1063.         
  1064.         '(如果字段录入内容发生变化,则打开有效性判断锁)
  1065.         If Zdlrqnr <> Trim(.Text) Then
  1066.             Yxxpdlock = False
  1067.             Hyxxpdlock = False
  1068.         End If
  1069.     
  1070.         '如果字段录入内容不为空则写数据行有效性标志
  1071.         If Len(Trim(.Text)) <> 0 Then
  1072.             Call Xyxhbz(.Row)
  1073.         End If
  1074.     
  1075.         '隐藏文本框,帮助按钮,列表组合框
  1076.         Call Ycwbk
  1077.     End With
  1078. End Sub
  1079. Private Sub WglrGrid_KeyDown(KeyCode As Integer, Shift As Integer)    '网格录入增行,删行快捷键
  1080.   
  1081.     '如果单据操作状态为浏览状态则不能显示录入载体
  1082.     If Trim(Lab_OperStatus.Caption) = "1" Then
  1083.         Exit Sub
  1084.     End If
  1085.     Select Case KeyCode
  1086.         Case vbKeyF2                   '按F2键参照
  1087.             Call xswbk
  1088.             Call Lrzdbz
  1089.         Case vbKeyDelete               '删行
  1090.             Call Scdqfl
  1091.         Case vbKeyInsert               '增行
  1092.             Call zjlrfl
  1093.     End Select
  1094. End Sub
  1095. Private Sub WglrGrid_KeyPress(KeyAscii As Integer)                             '网格接受键盘录入
  1096.     '当某种条件成立时禁止文本框激活使单据处于录入状态
  1097.     If Not Fun_AllowInput Then
  1098.         Exit Sub
  1099.     End If
  1100.   
  1101.     With WglrGrid
  1102.         '屏 蔽 回 车 键
  1103.         If KeyAscii = vbKeyReturn Then
  1104.             KeyAscii = 0
  1105.             Rowjsq = .Row
  1106.             Coljsq = .Col + 1
  1107.             If Coljsq > .Cols - 1 Then
  1108.                 If Rowjsq < .Rows - 1 Then
  1109.                     Rowjsq = Rowjsq + 1
  1110.                 End If
  1111.                 Coljsq = Qslz
  1112.             End If
  1113.             Do While Rowjsq <= .Rows - 1
  1114.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1115.                     Coljsq = Coljsq + 1
  1116.                     If Coljsq > .Cols - 1 Then
  1117.                         Rowjsq = Rowjsq + 1
  1118.                         Coljsq = Qslz
  1119.                     End If
  1120.                 Else
  1121.                     Exit Do
  1122.                 End If
  1123.             Loop
  1124.             If Rowjsq <= .Rows - 1 Then
  1125.                 .Select Rowjsq, Coljsq
  1126.             End If
  1127.             Exit Sub
  1128.         End If
  1129.      
  1130.         '接受用户录入
  1131.         Select Case KeyAscii
  1132.             Case 0 To 32             '用户输入KeyAscii为0-32的键 如空格
  1133.                 '显示录入载体
  1134.                 Call xswbk
  1135.             Case Else
  1136.                 '防止非编辑字段SendKeys()出现死循环
  1137.                 If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  1138.                     Exit Sub
  1139.                 End If
  1140.                 '如果此字段为列表框录入则调入相应列表框
  1141.                 If GridBoolean(.Col, 3) Then
  1142.                     '列表框录入
  1143.                     Call xswbk
  1144.                 Else
  1145.                     Ydtext.Text = ""
  1146.                     '录入限制
  1147.                     Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  1148.                     If KeyAscii = 0 Then
  1149.                         Exit Sub
  1150.                     End If
  1151.                     '如果录入字符有效则写有效行数据标志
  1152.                     Call Xyxhbz(.Row)
  1153.                     Call xswbk
  1154.                     Ydtext.Text = ""
  1155.                     Valilock = True
  1156.                     SendKeys Chr(KeyAscii), True
  1157.                     DoEvents
  1158.                     Valilock = False
  1159.                 End If
  1160.         End Select
  1161.     End With
  1162. End Sub
  1163. Private Sub zjlrfl()                                                    '增加录入分录
  1164.     
  1165.     With WglrGrid
  1166.         If Not (Ydtext.Visible Or YdCombo.Visible) Then
  1167.             If Not Fun_Drfrmyxxpd Then
  1168.                 Exit Sub
  1169.             End If
  1170.         Else
  1171.             Exit Sub
  1172.         End If
  1173.         If .Row < .FixedRows Then
  1174.             Exit Sub
  1175.         End If
  1176.         .AddItem "", .Row
  1177.         .RowHeight(.Row) = Sjhgd
  1178.         If .Row <> .Rows - 1 Then
  1179.             If .TextMatrix(.Row + 1, 0) = "*" Then
  1180.                 .TextMatrix(.Row, 0) = "*"
  1181.             Else
  1182.                 .RemoveItem .Rows - 1
  1183.             End If
  1184.         End If
  1185.         Call Xldqh
  1186.         Call Xldql
  1187.         Hyxxpdlock = False
  1188.     End With
  1189. End Sub
  1190. Private Sub Scdqfl()                                                    '删除当前分录
  1191.     Dim Answer As Integer, Scqwghz As Long, Scqwglz As Long, Hjlzte As Long, Sflrzt As Boolean
  1192.     With WglrGrid
  1193.         Scqwghz = .Row
  1194.         Scqwglz = .Col
  1195.         If .TextMatrix(.Row, 0) = "*" Then
  1196.             '判断是否为录入状态
  1197.             If Ydtext.Visible Or YdCombo.Visible Then
  1198.                 Sflrzt = True
  1199.                 Validate = True
  1200.                 Call Lrsjhx
  1201.                 Validate = False
  1202.             End If
  1203.             Call Xldqh
  1204.             Changelock = True
  1205.             .Select .Row, 0
  1206.             Changelock = False
  1207.             If Shsfts Then
  1208.                 .Cell(flexcpBackColor, .Row, Qslz, .Row, .Cols - 1) = QBColor(12)
  1209.                 Tsxx = "请确认是否删除当前记录?"
  1210.                 yhAnswer = Xtxxts(Tsxx, 2, 2)
  1211.                 If yhAnswer = 2 Then
  1212.                     .Cell(flexcpBackColor, .Row, Qslz, .Row, .Cols - 1) = &H80000005
  1213.                     Changelock = True
  1214.                     .Select Scqwghz, Scqwglz
  1215.                     Changelock = False
  1216.                     
  1217.                     '如为录入状态,则恢复录入
  1218.                     If Sflrzt Then
  1219.                         Call xswbk
  1220.                     End If
  1221.                     Exit Sub
  1222.                 End If
  1223.             End If
  1224.             .RemoveItem .Row
  1225.             If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  1226.                 .AddItem ""
  1227.                 .RowHeight(.Rows - 1) = Sjhgd
  1228.             End If
  1229.             Changelock = True
  1230.             .Select .Row, Scqwglz
  1231.             Changelock = False
  1232.    
  1233.             '重新计算合计数据
  1234.             For Hjlzte = Qslz To .Cols - 1
  1235.                 Call Sjhj(Hjlzte)
  1236.             Next Hjlzte
  1237.         End If
  1238.     End With
  1239. End Sub
  1240. Private Sub Sjhj(Hjwgl As Long)                                         '网格列数据合计
  1241.     
  1242.     Dim Hjjg As Double
  1243.     If Not GridBoolean(Hjwgl, 4) Then
  1244.         Exit Sub
  1245.     End If
  1246.     With WglrGrid
  1247.         Hjjg = 0
  1248.         For Jsqte = .FixedRows To .Rows - 1
  1249.             If .TextMatrix(Jsqte, 0) = "*" Then
  1250.                 Hjjg = Hjjg + Val(.TextMatrix(Jsqte, Hjwgl))
  1251.             End If
  1252.         Next Jsqte
  1253.         If GridBoolean(Hjwgl, 5) And Hjjg = 0 Then
  1254.             HjGrid.TextMatrix(0, Hjwgl) = ""
  1255.         Else
  1256.             HjGrid.TextMatrix(0, Hjwgl) = Hjjg
  1257.         End If
  1258.     End With
  1259. End Sub
  1260. Private Sub Qkwlzd(sjh As Long, Sjl As Long)                            '清空为零字段
  1261.     
  1262.     If Not GridBoolean(Sjl, 5) Then
  1263.         Exit Sub
  1264.     End If
  1265.     With WglrGrid
  1266.         If Val(Trim(.TextMatrix(sjh, Sjl))) = 0 Then
  1267.             .TextMatrix(sjh, Sjl) = ""
  1268.         End If
  1269.     End With
  1270. End Sub
  1271. Private Sub fhyxh()                                                     '返回录入数据有效行,同时让得到焦点网格可见
  1272.     
  1273.     With WglrGrid
  1274.         If .Row >= .FixedRows Then
  1275.             If .TextMatrix(.Row, 0) <> "*" Then
  1276.                 For Rowjsq = .FixedRows To .Rows - 1
  1277.                     If .TextMatrix(Rowjsq, 0) <> "*" Then
  1278.                         Exit For
  1279.                     End If
  1280.                 Next Rowjsq
  1281.                 If Rowjsq <= .Rows - 1 Then
  1282.                     Changelock = True
  1283.                     .Select Rowjsq, .Col
  1284.                     Changelock = False
  1285.                 Else
  1286.                     Changelock = True
  1287.                     .Select .Rows - 1, .Col
  1288.                     Changelock = False
  1289.                 End If
  1290.             End If
  1291.             Call Xldqh
  1292.         End If
  1293.   End With
  1294.   
  1295. End Sub
  1296. Private Sub Xldqh()                                                      '显露当前行
  1297.   
  1298.     Dim Toprowte As Long
  1299.     With WglrGrid
  1300.         Toprowte = 0
  1301.         Do While .CellTop + .RowHeight(.Row) + Fzxwghs * Sjhgd > .Height And .TopRow <> Toprowte
  1302.             Toprowte = .TopRow
  1303.             .TopRow = .TopRow + 1
  1304.         Loop
  1305.         Toprowte = 0
  1306.         Do While .CellTop < .FixedRows * .RowHeight(0) And .TopRow <> Toprowte
  1307.             Toprowte = .TopRow
  1308.             If .TopRow > 1 Then
  1309.                 .TopRow = .TopRow - 1
  1310.             End If
  1311.         Loop
  1312.     End With
  1313. End Sub
  1314. Private Sub Xldql()                                                     '显露当前列
  1315.     
  1316.     Dim Leftcolte As Long
  1317.     With WglrGrid
  1318.         If .Col >= Qslz And .Col >= .FixedCols Then
  1319.             If .LeftCol > .Col Then
  1320.                 .LeftCol = .Col
  1321.             End If
  1322.             Leftcolte = 0
  1323.             Do While .CellLeft + .CellWidth > .Width And .LeftCol <> Leftcolte
  1324.                 Leftcolte = .LeftCol
  1325.                 .LeftCol = .LeftCol + 1
  1326.             Loop
  1327.         End If
  1328.     End With
  1329. End Sub
  1330. Private Function pdhwk(sjh As Long)                                     '判断网格行是否为空行(所有录入字段均为空*非录入字段除外)
  1331.     
  1332.     With WglrGrid
  1333.         For Coljsq = Qslz To .Cols - 1
  1334.             If Len(Trim(.TextMatrix(sjh, Coljsq))) <> 0 And GridBoolean(Coljsq, 1) Then
  1335.                 pdhwk = False
  1336.                 Exit Function
  1337.             End If
  1338.         Next Coljsq
  1339.         pdhwk = True
  1340.     End With
  1341. End Function
  1342. Private Sub Xyxhbz(sjh As Long)                                         '写行有效性标志,并判断是否增行
  1343.     
  1344.     With WglrGrid
  1345.         If .TextMatrix(sjh, 0) = "*" Then
  1346.             Exit Sub
  1347.         End If
  1348.         .TextMatrix(sjh, 0) = "*"
  1349.         If sjh >= .Rows - Fzxwghs - 1 Then
  1350.             .AddItem ""
  1351.             .RowHeight(.Rows - 1) = Sjhgd
  1352.         End If
  1353.     End With
  1354. End Sub
  1355. '*****************************以下为文本框录入处理程序(固定不变部分)*******************************'
  1356. Private Sub Wbklrwbcl(Index As Integer)    '文本框录入事后处理程序
  1357.     '以下为依据实际情况自定义部分[
  1358.     
  1359.     '在此填写文本框录入事后处理程序
  1360.     
  1361.     '显示单据号
  1362.     If Index = 3 Then
  1363.       
  1364.         If Fun_OperateGrid Then
  1365.             Call Xtxxts("此仓库已期末处理!", 0, 1)
  1366.             Lab_OperStatus = "2"
  1367.             LrText(Index).SetFocus
  1368.             Exit Sub
  1369.         End If
  1370.         
  1371.         If LrText(Index).Text <> "" Then
  1372.             LrText(0).Text = CreatBillCode(BillCode, False, , , Trim(LrText(3).Tag))
  1373.             '仓库输入通过,网格可以编辑
  1374.             Lab_OperStatus = "2"
  1375.         Else
  1376.             LrText(0).Text = ""
  1377.             Lab_OperStatus = "1"
  1378.         End If
  1379.         
  1380.     End If
  1381.     
  1382.     ']以上为依据实际情况自定义部分
  1383. End Sub
  1384. Private Sub LrText_Change(Index As Integer)
  1385.     '屏蔽程序改变控制
  1386.     If TextChangeLock Then
  1387.         Exit Sub
  1388.     End If
  1389.    
  1390.     TextValiJudgeLock(Index) = False    '打开有效性判断锁
  1391.         
  1392.     '限制字段录入长度
  1393.           
  1394.     TextChangeLock = True  '加锁(防止执行Lrtext_Change)
  1395.         Select Case Textint(Index, 1)
  1396.             Case 8, 11       '金额型
  1397.                 Call Sjgskz(LrText(Index), Xtjezws - Xtjexsws - 1, Xtjexsws)
  1398.             Case 9, 12       '数量型
  1399.                 Call Sjgskz(LrText(Index), Xtslzws - Xtslxsws - 1, Xtslxsws)
  1400.             Case 10          '单价型
  1401.                 Call Sjgskz(LrText(Index), Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  1402.             Case Else        '其他小数类型控制
  1403.                 If Textint(Index, 6) <> 0 Or Textint(Index, 7) <> 0 Then
  1404.                     Call Sjgskz(LrText(Index), Textint(Index, 6), Textint(Index, 7))
  1405.                 End If
  1406.         End Select
  1407.         
  1408.         TextChangeLock = False '解锁
  1409.      
  1410. End Sub
  1411. Private Sub LrText_GotFocus(Index As Integer)                                                 '文本框得到焦点,显示相应信息
  1412.     Call TextShow(Index)
  1413. End Sub
  1414. Private Sub LrText_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)            '字段按F2键提供帮助
  1415.     
  1416.     Select Case KeyCode
  1417.         Case vbKeyF2
  1418.             Call Text_Help(Index)
  1419.     End Select
  1420. End Sub
  1421. Private Sub LrText_KeyPress(Index As Integer, KeyAscii As Integer)                            '文本框录入事中控制
  1422.     Call InputFieldLimit(LrText(Index), Textint(Index, 1), KeyAscii)
  1423. End Sub
  1424. Private Sub LrText_LostFocus(Index As Integer)                                                '文本框失去焦点进行有效性判断及相应处理
  1425.     
  1426.     If Textint(Index, 9) = 0 Or Textint(Index, 9) = 1 Then '事中判断
  1427.         Call TextYxxpd(Index)
  1428.     End If
  1429. End Sub
  1430. Private Sub Ydcommand1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) '点击按钮
  1431.     Call Text_Help(Ydcommand1.Tag)
  1432. End Sub
  1433. Private Sub Text_Help(Index As Integer)                                                       '录入字段帮助
  1434.     
  1435.     If Not Ydcommand1.Visible Then
  1436.         Exit Sub
  1437.     End If
  1438.     TextValiLock = True
  1439.     Call Drbmhelp(Textint(Index, 2), Textstr(Index, 4), Trim(LrText(Index).Text))
  1440.     If Len(Xtfhcs) <> 0 Then
  1441.         If Textint(Index, 3) = 1 Then
  1442.             LrText(Index).Text = Xtfhcsfz
  1443.             LrText(Index).Tag = Xtfhcs
  1444.         Else
  1445.             LrText(Index).Text = Xtfhcs
  1446.             LrText(Index).Tag = Xtfhcsfz
  1447.         End If
  1448.     End If
  1449.     TextValiLock = False
  1450.     LrText(Index).SetFocus
  1451. End Sub
  1452. Private Sub TextShow(Index As Integer)        '文本框得到焦点,显示相应信息
  1453.     '如果文本框有帮助,则显示帮助按钮
  1454.     If Textboolean(Index, 1) Then
  1455.         Ydcommand1.Visible = True
  1456.         Ydcommand1.Move LrText(Index).Left + LrText(Index).Width, LrText(Index).Top
  1457.         Ydcommand1.Tag = Index
  1458.     Else
  1459.         Ydcommand1.Tag = ""
  1460.         Ydcommand1.Visible = False
  1461.     End If
  1462.     
  1463.     '[>>
  1464.     '可在此处定义其他处理动作
  1465.     '<<]
  1466. End Sub
  1467. Private Sub Wbkcsh()                          '录入文本框初始化
  1468.     Dim Int_TabIndex As Integer         'Tab焦点计数器
  1469.   
  1470.     '单据录入中文本框焦点由0开始
  1471.     LrText(0).TabIndex = 0
  1472.   
  1473.     '最大录入文本框索引值
  1474.     Max_Text_Index = Textvar(1)
  1475.   
  1476.     ReDim TextValiJudgeLock(Max_Text_Index)
  1477.     For Jsqte = 0 To Max_Text_Index
  1478.         
  1479.         '判断此文本框录入索引号是否存在,如存在则对其进行初始化
  1480.         If Len(Trim(Textstr(Jsqte, 1))) <> 0 Then
  1481.         
  1482.             '自动装入录入文本框和其解释标签
  1483.             If Jsqte <> 0 Then
  1484.                 Load LrText(Jsqte)
  1485.                 Load tsLabel(Jsqte)
  1486.            
  1487.                 '判断录入文本框是否显示
  1488.                 If Textboolean(Jsqte, 4) Then
  1489.                     LrText(Jsqte).Visible = True
  1490.                     tsLabel(Jsqte).Visible = True
  1491.                 Else
  1492.                     LrText(Jsqte).Visible = False
  1493.                     tsLabel(Jsqte).Visible = False
  1494.                 End If
  1495.             
  1496.                 '判断文本框是否可编辑
  1497.                 If Textboolean(Jsqte, 5) Then
  1498.                     LrText(Jsqte).Enabled = True
  1499.                 Else
  1500.                     LrText(Jsqte).Enabled = False
  1501.                 End If
  1502.             End If
  1503.            
  1504.            '初始化其内容
  1505.             TextChangeLock = True
  1506.             LrText(Jsqte).Text = ""
  1507.             LrText(Jsqte).Tag = ""
  1508.             If Textint(Jsqte, 5) <> 0 Then
  1509.                 LrText(Jsqte).MaxLength = Textint(Jsqte, 5)
  1510.             End If
  1511.             TextChangeLock = False
  1512.         
  1513.             '设置文本框位置及大小,并设置相应标签内容及其位置
  1514.             LrText(Jsqte).Move Textint(Jsqte, 13), Textint(Jsqte, 12), Textint(Jsqte, 11), Textint(Jsqte, 10)
  1515.             tsLabel(Jsqte).Caption = Textstr(Jsqte, 7) & ":"
  1516.             tsLabel(Jsqte).Move Textint(Jsqte, 13) - tsLabel(Jsqte).Width - 20, Textint(Jsqte, 12) + (Textint(Jsqte, 10) - tsLabel(Jsqte).Height) / 2 - 30
  1517.             
  1518.         End If
  1519.      
  1520.         '将文本框有效性判断进行加锁,在文本框内容发生变化时将锁打开
  1521.         TextValiJudgeLock(Jsqte) = True
  1522.         
  1523.     Next Jsqte
  1524.     
  1525.     '设置文本框焦点转移顺序(前提文本焦点从0至Max_Text_Index)
  1526.     For Int_TabIndex = 0 To Max_Text_Index
  1527.         For Jsqte = 0 To Max_Text_Index
  1528.             If Textint(Jsqte, 14) = Int_TabIndex Then
  1529.                LrText(Jsqte).TabIndex = Int_TabIndex
  1530.             End If
  1531.         Next Jsqte
  1532.     Next Int_TabIndex
  1533.   
  1534. End Sub
  1535. Private Function TextYxxpd(Index As Integer) As Boolean           '文本框有效性判断
  1536.   
  1537.     Dim SqlStr As String
  1538.     Dim Findrec As New ADODB.Recordset
  1539.   
  1540.     '按帮助不进行有效性判断
  1541.   
  1542.     If TextValiLock Then
  1543.         TextValiLock = False
  1544.         TextYxxpd = True
  1545.         Exit Function
  1546.     End If
  1547.   
  1548.     '文本框内容未曾改变不进行有效性判断
  1549.   
  1550.     If TextValiJudgeLock(Index) Then
  1551.         Ydcommand1.Visible = False
  1552.         TextYxxpd = True
  1553.         Exit Function
  1554.     End If
  1555.   
  1556.     '文本框内容为空认为有效,并清空其Tag值
  1557.   
  1558.     If Trim(LrText(Index)) = "" Then
  1559.         LrText(Index).Tag = ""
  1560.         Call Wbklrwbcl(Index)
  1561.         Ydcommand1.Visible = False
  1562.         TextValiJudgeLock(Index) = True
  1563.         TextYxxpd = True
  1564.         Exit Function
  1565.     End If
  1566.    
  1567.     '[>>
  1568.       
  1569.     '可在此加入不做有效性判断的理由(参照上面程序)
  1570.       
  1571.     '<<]
  1572.   
  1573.     Select Case Textint(Index, 4)
  1574.         Case 1      '编码型
  1575.             SqlStr = Trim(Textstr(Index, 5))
  1576.             SqlStr = Replace(SqlStr, "@", "'" + Trim(LrText(Index).Text) + "'")
  1577.             SqlStr = Replace(SqlStr, "$$", "'" + Trim(Xtczybm) + "'")
  1578.             Set Findrec = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  1579.             If Findrec.EOF Then
  1580.                 Call Xtxxts(Trim(Textstr(Index, 6)), 0, 1)
  1581.                 LrText(Index).SetFocus
  1582.                 Exit Function
  1583.             Else
  1584.                 Select Case Textint(Index, 3)
  1585.                     Case 0
  1586.                         If Len(Trim(Textstr(Index, 2))) <> 0 Then
  1587.                             LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
  1588.                         End If
  1589.                         If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  1590.                             LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
  1591.                         End If
  1592.                     Case 1
  1593.                         If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  1594.                             LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
  1595.                         End If
  1596.                         If Len(Trim(Textstr(Index, 2))) <> 0 Then
  1597.                             LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
  1598.                         End If
  1599.                 End Select
  1600.                 
  1601.                 
  1602.                 '调整网格显示格式
  1603.                 
  1604.             End If
  1605.             
  1606.         Case 2      '日期型
  1607.             If IsDate(LrText(Index).Text) Then
  1608.                 LrText(Index).Text = Format(LrText(Index).Text, "yyyy-mm-dd")
  1609.                 If Val(Mid(LrText(Index), 1, 4)) < 1900 Then
  1610.                     LrText(Index).Text = "1900" + Mid(LrText(Index), 5, 6)
  1611.                 End If
  1612.             Else
  1613.                 Tsxx = "非法公历日期!(格式:" + Format(Date, "yyyy-mm-dd") + ")"
  1614.                 Call Xtxxts(Tsxx, 0, 1)
  1615.                 LrText(Index).SetFocus
  1616.                 Exit Function
  1617.             End If
  1618.         Case 3      '其他类型
  1619.     End Select
  1620.     
  1621.     '隐藏帮助按钮
  1622.     Ydcommand1.Visible = False
  1623.    
  1624.     '如果有效则加锁,用户不改变内容则不再进行有效性判断
  1625.     TextValiJudgeLock(Index) = True
  1626.     '调用文本框事后处理程序
  1627.     Call Wbklrwbcl(Index)
  1628.    
  1629.     '有效性判断通过则返回True
  1630.     TextYxxpd = True
  1631.     
  1632. End Function
  1633. Private Function Fun_OperateGrid() As Boolean                '调整网格显示格式
  1634.     Dim Rectemp As New ADODB.Recordset
  1635.     
  1636.     Fun_OperateGrid = False
  1637.     
  1638.     With WglrGrid
  1639.     
  1640.         Set Rectemp = Cw_DataEnvi.DataConnect.Execute("select WhCode,WhName,EndDealFlagChhs,PriceMode from GY_WareHouse where WhCode='" & Trim(LrText(3).Tag) & "' or WhName='" & Trim(LrText(3)) & "'")
  1641.         
  1642.         If Not Rectemp.EOF Then
  1643.         
  1644.             '计价方法
  1645.             FGISPriceMode = Trim(Rectemp.Fields("PriceMode"))
  1646.             
  1647.             If FGISPriceMode = "计划价法" Then
  1648.                 .ColHidden(Sydz("006", GridStr(), Szzls)) = False
  1649.                 .ColHidden(Sydz("007", GridStr(), Szzls)) = False
  1650.             Else
  1651.                 .ColHidden(Sydz("006", GridStr(), Szzls)) = True
  1652.                 .ColHidden(Sydz("007", GridStr(), Szzls)) = True
  1653.             End If
  1654.             
  1655.             '调整合计网格
  1656.             Call Cshhjwg
  1657.             WglrGrid.LeftCol = HjGrid.LeftCol
  1658.             
  1659.             '期末处理后不允许调整
  1660.             If Rectemp.Fields("EndDealFlagChhs") Then
  1661.                 Fun_OperateGrid = True
  1662.                 Exit Function
  1663.             End If
  1664.         
  1665.             '网格可编辑
  1666.        
  1667.         Else
  1668.        
  1669.             '网格不可编辑
  1670.             Lab_OperStatus = "2"
  1671.         End If
  1672.     
  1673.     End With
  1674. End Function