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

企业管理

开发平台:

Visual Basic

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