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

企业管理

开发平台:

Visual Basic

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