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

企业管理

开发平台:

Visual Basic

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