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

企业管理

开发平台:

Visual Basic

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