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

企业管理

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{D76D7128-4A96-11D3-BD95-D296DC2DD072}#1.0#0"; "VSOCX7.OCX"
  3. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
  4. Begin VB.Form FrmJcsz_StoCheckStand 
  5.    BackColor       =   &H00E9F4FA&
  6.    BorderStyle     =   1  'Fixed Single
  7.    Caption         =   "进料检验标准"
  8.    ClientHeight    =   5205
  9.    ClientLeft      =   675
  10.    ClientTop       =   720
  11.    ClientWidth     =   9345
  12.    Icon            =   "基础_进料检验标准.frx":0000
  13.    KeyPreview      =   -1  'True
  14.    LinkTopic       =   "Form4"
  15.    MaxButton       =   0   'False
  16.    MinButton       =   0   'False
  17.    ScaleHeight     =   5205
  18.    ScaleWidth      =   9345
  19.    StartUpPosition =   1  '所有者中心
  20.    Begin VB.ComboBox YdCombo 
  21.       Height          =   300
  22.       Left            =   9000
  23.       Style           =   2  'Dropdown List
  24.       TabIndex        =   5
  25.       Top             =   960
  26.       Visible         =   0   'False
  27.       Width           =   1155
  28.    End
  29.    Begin VB.CommandButton Ydcommand1 
  30.       Height          =   300
  31.       Left            =   10680
  32.       Picture         =   "基础_进料检验标准.frx":1042
  33.       Style           =   1  'Graphical
  34.       TabIndex        =   4
  35.       Top             =   600
  36.       Visible         =   0   'False
  37.       Width           =   300
  38.    End
  39.    Begin VB.Timer Timer1 
  40.       Interval        =   1
  41.       Left            =   9690
  42.       Top             =   150
  43.    End
  44.    Begin VB.TextBox Ydtext 
  45.       BackColor       =   &H80000018&
  46.       BorderStyle     =   0  'None
  47.       Height          =   330
  48.       Left            =   7710
  49.       MultiLine       =   -1  'True
  50.       TabIndex        =   3
  51.       Top             =   960
  52.       Visible         =   0   'False
  53.       Width           =   1185
  54.    End
  55.    Begin VB.CommandButton Ydcommand 
  56.       Height          =   300
  57.       Left            =   10680
  58.       Picture         =   "基础_进料检验标准.frx":13CC
  59.       Style           =   1  'Graphical
  60.       TabIndex        =   2
  61.       Top             =   990
  62.       Visible         =   0   'False
  63.       Width           =   300
  64.    End
  65.    Begin VB.TextBox LrText 
  66.       ForeColor       =   &H00000000&
  67.       Height          =   300
  68.       Index           =   0
  69.       Left            =   1020
  70.       TabIndex        =   0
  71.       Text            =   "0"
  72.       Top             =   1500
  73.       Width           =   1650
  74.    End
  75.    Begin MSComctlLib.Toolbar Tlb_Action 
  76.       Align           =   1  'Align Top
  77.       Height          =   570
  78.       Left            =   0
  79.       TabIndex        =   1
  80.       Top             =   0
  81.       Width           =   9345
  82.       _ExtentX        =   16484
  83.       _ExtentY        =   1005
  84.       ButtonWidth     =   820
  85.       ButtonHeight    =   953
  86.       AllowCustomize  =   0   'False
  87.       Wrappable       =   0   'False
  88.       Appearance      =   1
  89.       Style           =   1
  90.       ImageList       =   "ImageList1"
  91.       _Version        =   393216
  92.       BeginProperty Buttons {66833FE8-8583-11D1-B16A-00C0F0283628} 
  93.          NumButtons      =   25
  94.          BeginProperty Button1 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  95.             Caption         =   "打印"
  96.             Key             =   "dy"
  97.             Object.ToolTipText     =   "打印当前单据或Ctrl+P"
  98.             ImageKey        =   "dy"
  99.          EndProperty
  100.          BeginProperty Button2 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  101.             Caption         =   "预览"
  102.             Key             =   "yl"
  103.             ImageKey        =   "yl"
  104.          EndProperty
  105.          BeginProperty Button3 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  106.             Key             =   "fgh0"
  107.             Style           =   3
  108.          EndProperty
  109.          BeginProperty Button4 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  110.             Caption         =   "新增"
  111.             Key             =   "xz"
  112.             Object.ToolTipText     =   "新增加一张单据或F5"
  113.             ImageKey        =   "xz"
  114.          EndProperty
  115.          BeginProperty Button5 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  116.             Caption         =   "修改"
  117.             Key             =   "xg"
  118.             Object.ToolTipText     =   "修改当前单据或F3"
  119.             ImageKey        =   "xg"
  120.          EndProperty
  121.          BeginProperty Button6 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  122.             Caption         =   "删除"
  123.             Key             =   "sc"
  124.             Object.ToolTipText     =   "删除当前单据"
  125.             ImageKey        =   "sc"
  126.          EndProperty
  127.          BeginProperty Button7 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  128.             Key             =   "fgh1"
  129.             Style           =   3
  130.          EndProperty
  131.          BeginProperty Button8 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  132.             Caption         =   "增行"
  133.             Key             =   "zh"
  134.             Object.ToolTipText     =   "插入一行或Insert"
  135.             ImageKey        =   "zh"
  136.          EndProperty
  137.          BeginProperty Button9 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  138.             Caption         =   "删行"
  139.             Key             =   "sh"
  140.             Object.ToolTipText     =   "删除当前记录行或Delete"
  141.             ImageKey        =   "sh"
  142.          EndProperty
  143.          BeginProperty Button10 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  144.             Key             =   "fgh2"
  145.             Style           =   3
  146.          EndProperty
  147.          BeginProperty Button11 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  148.             Caption         =   "查询"
  149.             Key             =   "find"
  150.             ImageKey        =   "cx"
  151.          EndProperty
  152.          BeginProperty Button12 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  153.             Key             =   "fgh4"
  154.             Style           =   3
  155.          EndProperty
  156.          BeginProperty Button13 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  157.             Caption         =   "保存"
  158.             Key             =   "bc"
  159.             Object.ToolTipText     =   "保存单据或F6"
  160.             ImageKey        =   "bc"
  161.          EndProperty
  162.          BeginProperty Button14 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  163.             Caption         =   "放弃"
  164.             Key             =   "fq"
  165.             Object.ToolTipText     =   "放弃此次操作"
  166.             ImageKey        =   "fq"
  167.          EndProperty
  168.          BeginProperty Button15 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  169.             Enabled         =   0   'False
  170.             Object.Visible         =   0   'False
  171.             Key             =   "fgh3"
  172.             Style           =   3
  173.          EndProperty
  174.          BeginProperty Button16 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  175.             Enabled         =   0   'False
  176.             Object.Visible         =   0   'False
  177.             Caption         =   "审核"
  178.             Key             =   "shsh"
  179.             ImageKey        =   "check"
  180.          EndProperty
  181.          BeginProperty Button17 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  182.             Style           =   3
  183.          EndProperty
  184.          BeginProperty Button18 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  185.             Enabled         =   0   'False
  186.             Object.Visible         =   0   'False
  187.             Caption         =   "弃审"
  188.             Key             =   "shqs"
  189.             ImageKey        =   "qs"
  190.          EndProperty
  191.          BeginProperty Button19 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  192.             Caption         =   "首张"
  193.             Key             =   "first"
  194.             ImageKey        =   "first"
  195.          EndProperty
  196.          BeginProperty Button20 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  197.             Caption         =   "上张"
  198.             Key             =   "prev"
  199.             ImageKey        =   "prev"
  200.          EndProperty
  201.          BeginProperty Button21 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  202.             Caption         =   "下张"
  203.             Key             =   "next"
  204.             ImageKey        =   "next"
  205.          EndProperty
  206.          BeginProperty Button22 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  207.             Caption         =   "末张"
  208.             Key             =   "last"
  209.             ImageKey        =   "last"
  210.          EndProperty
  211.          BeginProperty Button23 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  212.             Key             =   "fgh5"
  213.             Style           =   3
  214.          EndProperty
  215.          BeginProperty Button24 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  216.             Caption         =   "帮助"
  217.             Key             =   "bz"
  218.             ImageKey        =   "bz"
  219.          EndProperty
  220.          BeginProperty Button25 {66833FEA-8583-11D1-B16A-00C0F0283628} 
  221.             Caption         =   "退出"
  222.             Key             =   "fh"
  223.             ImageKey        =   "tc"
  224.          EndProperty
  225.       EndProperty
  226.       BorderStyle     =   1
  227.    End
  228.    Begin MSComctlLib.ImageList ImageList1 
  229.       Left            =   10410
  230.       Top             =   1350
  231.       _ExtentX        =   1005
  232.       _ExtentY        =   1005
  233.       BackColor       =   -2147483643
  234.       ImageWidth      =   16
  235.       ImageHeight     =   16
  236.       MaskColor       =   12632256
  237.       _Version        =   393216
  238.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  239.          NumListImages   =   37
  240.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  241.             Picture         =   "基础_进料检验标准.frx":1756
  242.             Key             =   "sz"
  243.          EndProperty
  244.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  245.             Picture         =   "基础_进料检验标准.frx":1AF0
  246.             Key             =   "dy"
  247.          EndProperty
  248.          BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  249.             Picture         =   "基础_进料检验标准.frx":1E8A
  250.             Key             =   "yl"
  251.          EndProperty
  252.          BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  253.             Picture         =   "基础_进料检验标准.frx":2224
  254.             Key             =   "xg"
  255.          EndProperty
  256.          BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  257.             Picture         =   "基础_进料检验标准.frx":25BE
  258.             Key             =   "zh"
  259.          EndProperty
  260.          BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  261.             Picture         =   "基础_进料检验标准.frx":2958
  262.             Key             =   "sh"
  263.          EndProperty
  264.          BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  265.             Picture         =   "基础_进料检验标准.frx":2CF2
  266.             Key             =   "bc"
  267.          EndProperty
  268.          BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  269.             Picture         =   "基础_进料检验标准.frx":308C
  270.             Key             =   "fq"
  271.          EndProperty
  272.          BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  273.             Picture         =   "基础_进料检验标准.frx":3426
  274.             Key             =   "bz"
  275.          EndProperty
  276.          BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  277.             Picture         =   "基础_进料检验标准.frx":37C0
  278.             Key             =   "tc"
  279.          EndProperty
  280.          BeginProperty ListImage11 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  281.             Picture         =   "基础_进料检验标准.frx":3B5A
  282.             Key             =   "bcgs"
  283.          EndProperty
  284.          BeginProperty ListImage12 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  285.             Picture         =   "基础_进料检验标准.frx":3EF4
  286.             Key             =   "mrlk"
  287.          EndProperty
  288.          BeginProperty ListImage13 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  289.             Picture         =   "基础_进料检验标准.frx":428E
  290.             Key             =   "xsxm"
  291.          EndProperty
  292.          BeginProperty ListImage14 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  293.             Picture         =   "基础_进料检验标准.frx":4628
  294.             Key             =   "first"
  295.          EndProperty
  296.          BeginProperty ListImage15 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  297.             Picture         =   "基础_进料检验标准.frx":49C2
  298.             Key             =   "prev"
  299.          EndProperty
  300.          BeginProperty ListImage16 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  301.             Picture         =   "基础_进料检验标准.frx":4D5C
  302.             Key             =   "next"
  303.          EndProperty
  304.          BeginProperty ListImage17 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  305.             Picture         =   "基础_进料检验标准.frx":50F6
  306.             Key             =   "last"
  307.          EndProperty
  308.          BeginProperty ListImage18 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  309.             Picture         =   "基础_进料检验标准.frx":5490
  310.             Key             =   "xx"
  311.          EndProperty
  312.          BeginProperty ListImage19 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  313.             Picture         =   "基础_进料检验标准.frx":582A
  314.             Key             =   "define"
  315.          EndProperty
  316.          BeginProperty ListImage20 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  317.             Picture         =   "基础_进料检验标准.frx":5BC4
  318.             Key             =   "exec"
  319.          EndProperty
  320.          BeginProperty ListImage21 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  321.             Picture         =   "基础_进料检验标准.frx":5F5E
  322.             Key             =   "xz"
  323.          EndProperty
  324.          BeginProperty ListImage22 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  325.             Picture         =   "基础_进料检验标准.frx":62F8
  326.             Key             =   "sc"
  327.          EndProperty
  328.          BeginProperty ListImage23 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  329.             Picture         =   "基础_进料检验标准.frx":6692
  330.             Key             =   "sx"
  331.          EndProperty
  332.          BeginProperty ListImage24 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  333.             Picture         =   "基础_进料检验标准.frx":6A2C
  334.             Key             =   "cx"
  335.          EndProperty
  336.          BeginProperty ListImage25 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  337.             Picture         =   "基础_进料检验标准.frx":6DC6
  338.             Key             =   "zd"
  339.          EndProperty
  340.          BeginProperty ListImage26 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  341.             Picture         =   "基础_进料检验标准.frx":7160
  342.             Key             =   "dz"
  343.          EndProperty
  344.          BeginProperty ListImage27 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  345.             Picture         =   "基础_进料检验标准.frx":74FA
  346.             Key             =   "ph"
  347.          EndProperty
  348.          BeginProperty ListImage28 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  349.             Picture         =   "基础_进料检验标准.frx":7894
  350.             Key             =   "fz"
  351.          EndProperty
  352.          BeginProperty ListImage29 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  353.             Picture         =   "基础_进料检验标准.frx":7C2E
  354.             Key             =   "dw"
  355.          EndProperty
  356.          BeginProperty ListImage30 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  357.             Picture         =   "基础_进料检验标准.frx":7FC8
  358.             Key             =   "hf"
  359.          EndProperty
  360.          BeginProperty ListImage31 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  361.             Picture         =   "基础_进料检验标准.frx":8362
  362.             Key             =   "pz"
  363.          EndProperty
  364.          BeginProperty ListImage32 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  365.             Picture         =   "基础_进料检验标准.frx":86FC
  366.             Key             =   "check"
  367.          EndProperty
  368.          BeginProperty ListImage33 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  369.             Picture         =   "基础_进料检验标准.frx":8A96
  370.             Key             =   "qs"
  371.          EndProperty
  372.          BeginProperty ListImage34 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  373.             Picture         =   "基础_进料检验标准.frx":8E30
  374.             Key             =   "fullcheck"
  375.          EndProperty
  376.          BeginProperty ListImage35 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  377.             Picture         =   "基础_进料检验标准.frx":91CA
  378.             Key             =   "qq"
  379.          EndProperty
  380.          BeginProperty ListImage36 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  381.             Picture         =   "基础_进料检验标准.frx":9564
  382.             Key             =   "bcw"
  383.          EndProperty
  384.          BeginProperty ListImage37 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  385.             Picture         =   "基础_进料检验标准.frx":98FE
  386.             Key             =   "ye"
  387.          EndProperty
  388.       EndProperty
  389.    End
  390.    Begin VSFlex8Ctl.VSFlexGrid WglrGrid 
  391.       Height          =   3345
  392.       Left            =   120
  393.       TabIndex        =   6
  394.       Top             =   2280
  395.       Width           =   10680
  396.       _ExtentX        =   18838
  397.       _ExtentY        =   5900
  398.       Appearance      =   1
  399.       BorderStyle     =   1
  400.       Enabled         =   -1  'True
  401.       BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  402.          Name            =   "宋体"
  403.          Size            =   9
  404.          Charset         =   134
  405.          Weight          =   400
  406.          Underline       =   0   'False
  407.          Italic          =   0   'False
  408.          Strikethrough   =   0   'False
  409.       EndProperty
  410.       MousePointer    =   0
  411.       BackColor       =   16777215
  412.       ForeColor       =   -2147483640
  413.       BackColorFixed  =   12640511
  414.       ForeColorFixed  =   -2147483630
  415.       BackColorSel    =   -2147483643
  416.       ForeColorSel    =   -2147483640
  417.       BackColorBkg    =   16777215
  418.       BackColorAlternate=   16777215
  419.       GridColor       =   -2147483633
  420.       GridColorFixed  =   -2147483632
  421.       TreeColor       =   -2147483632
  422.       FloodColor      =   192
  423.       SheetBorder     =   -2147483642
  424.       FocusRect       =   1
  425.       HighLight       =   1
  426.       AllowSelection  =   0   'False
  427.       AllowBigSelection=   0   'False
  428.       AllowUserResizing=   0
  429.       SelectionMode   =   0
  430.       GridLines       =   1
  431.       GridLinesFixed  =   2
  432.       GridLineWidth   =   1
  433.       Rows            =   5000
  434.       Cols            =   10
  435.       FixedRows       =   1
  436.       FixedCols       =   0
  437.       RowHeightMin    =   0
  438.       RowHeightMax    =   0
  439.       ColWidthMin     =   0
  440.       ColWidthMax     =   0
  441.       ExtendLastCol   =   0   'False
  442.       FormatString    =   ""
  443.       ScrollTrack     =   0   'False
  444.       ScrollBars      =   3
  445.       ScrollTips      =   0   'False
  446.       MergeCells      =   0
  447.       MergeCompare    =   0
  448.       AutoResize      =   -1  'True
  449.       AutoSizeMode    =   0
  450.       AutoSearch      =   0
  451.       MultiTotals     =   -1  'True
  452.       SubtotalPosition=   1
  453.       OutlineBar      =   0
  454.       OutlineCol      =   0
  455.       Ellipsis        =   0
  456.       ExplorerBar     =   0
  457.       PicturesOver    =   0   'False
  458.       FillStyle       =   0
  459.       RightToLeft     =   0   'False
  460.       PictureType     =   0
  461.       TabBehavior     =   0
  462.       OwnerDraw       =   0
  463.       Editable        =   0   'False
  464.       ShowComboButton =   -1  'True
  465.       WordWrap        =   -1  'True
  466.       TextStyle       =   0
  467.       TextStyleFixed  =   0
  468.       OleDragMode     =   0
  469.       OleDropMode     =   0
  470.       DataMode        =   0
  471.       VirtualData     =   -1  'True
  472.       Begin VSFlex8Ctl.VSFlexGrid HjGrid 
  473.          Height          =   885
  474.          Left            =   0
  475.          TabIndex        =   7
  476.          Top             =   2400
  477.          Width           =   7545
  478.          _ExtentX        =   13309
  479.          _ExtentY        =   1561
  480.          Appearance      =   1
  481.          BorderStyle     =   0
  482.          Enabled         =   -1  'True
  483.          BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  484.             Name            =   "宋体"
  485.             Size            =   9
  486.             Charset         =   134
  487.             Weight          =   400
  488.             Underline       =   0   'False
  489.             Italic          =   0   'False
  490.             Strikethrough   =   0   'False
  491.          EndProperty
  492.          MousePointer    =   0
  493.          BackColor       =   14671839
  494.          ForeColor       =   -2147483640
  495.          BackColorFixed  =   -2147483633
  496.          ForeColorFixed  =   -2147483630
  497.          BackColorSel    =   -2147483643
  498.          ForeColorSel    =   -2147483640
  499.          BackColorBkg    =   16777215
  500.          BackColorAlternate=   14671839
  501.          GridColor       =   -2147483633
  502.          GridColorFixed  =   -2147483632
  503.          TreeColor       =   -2147483632
  504.          FloodColor      =   192
  505.          SheetBorder     =   -2147483642
  506.          FocusRect       =   1
  507.          HighLight       =   1
  508.          AllowSelection  =   0   'False
  509.          AllowBigSelection=   0   'False
  510.          AllowUserResizing=   0
  511.          SelectionMode   =   0
  512.          GridLines       =   1
  513.          GridLinesFixed  =   2
  514.          GridLineWidth   =   1
  515.          Rows            =   5000
  516.          Cols            =   10
  517.          FixedRows       =   1
  518.          FixedCols       =   0
  519.          RowHeightMin    =   0
  520.          RowHeightMax    =   0
  521.          ColWidthMin     =   0
  522.          ColWidthMax     =   0
  523.          ExtendLastCol   =   0   'False
  524.          FormatString    =   ""
  525.          ScrollTrack     =   0   'False
  526.          ScrollBars      =   3
  527.          ScrollTips      =   0   'False
  528.          MergeCells      =   0
  529.          MergeCompare    =   0
  530.          AutoResize      =   -1  'True
  531.          AutoSizeMode    =   0
  532.          AutoSearch      =   0
  533.          MultiTotals     =   -1  'True
  534.          SubtotalPosition=   1
  535.          OutlineBar      =   0
  536.          OutlineCol      =   0
  537.          Ellipsis        =   0
  538.          ExplorerBar     =   0
  539.          PicturesOver    =   0   'False
  540.          FillStyle       =   0
  541.          RightToLeft     =   0   'False
  542.          PictureType     =   0
  543.          TabBehavior     =   0
  544.          OwnerDraw       =   0
  545.          Editable        =   0   'False
  546.          ShowComboButton =   -1  'True
  547.          WordWrap        =   -1  'True
  548.          TextStyle       =   0
  549.          TextStyleFixed  =   0
  550.          OleDragMode     =   0
  551.          OleDropMode     =   0
  552.          DataMode        =   0
  553.          VirtualData     =   -1  'True
  554.       End
  555.    End
  556.    Begin VB.Label TsLabel 
  557.       Alignment       =   1  'Right Justify
  558.       AutoSize        =   -1  'True
  559.       BackStyle       =   0  'Transparent
  560.       Caption         =   "单据号:"
  561.       Height          =   180
  562.       Index           =   0
  563.       Left            =   240
  564.       TabIndex        =   14
  565.       Top             =   1560
  566.       Width           =   765
  567.    End
  568.    Begin VB.Label Lab_Checker 
  569.       Appearance      =   0  'Flat
  570.       BackColor       =   &H80000005&
  571.       BackStyle       =   0  'Transparent
  572.       ForeColor       =   &H00000000&
  573.       Height          =   225
  574.       Left            =   7170
  575.       TabIndex        =   13
  576.       Top             =   6360
  577.       Width           =   735
  578.    End
  579.    Begin VB.Label Lab_Bill 
  580.       Appearance      =   0  'Flat
  581.       BackColor       =   &H80000005&
  582.       BackStyle       =   0  'Transparent
  583.       ForeColor       =   &H00000000&
  584.       Height          =   225
  585.       Left            =   9030
  586.       TabIndex        =   12
  587.       Top             =   6330
  588.       Width           =   735
  589.    End
  590.    Begin VB.Label Lab_OperStatus 
  591.       BackColor       =   &H000080FF&
  592.       Caption         =   "1"
  593.       Height          =   345
  594.       Left            =   10290
  595.       TabIndex        =   11
  596.       Top             =   960
  597.       Visible         =   0   'False
  598.       Width           =   345
  599.    End
  600.    Begin VB.Label Lab_Djclzt 
  601.       BackColor       =   &H0000FFFF&
  602.       Caption         =   "1"
  603.       ForeColor       =   &H00808080&
  604.       Height          =   255
  605.       Left            =   10320
  606.       TabIndex        =   10
  607.       Top             =   600
  608.       Visible         =   0   'False
  609.       Width           =   285
  610.    End
  611.    Begin VB.Label Lab_BillId 
  612.       AutoSize        =   -1  'True
  613.       BackColor       =   &H0080C0FF&
  614.       Height          =   270
  615.       Left            =   7680
  616.       TabIndex        =   9
  617.       Top             =   600
  618.       Visible         =   0   'False
  619.       Width           =   2490
  620.    End
  621.    Begin VB.Label Lab_Title 
  622.       AutoSize        =   -1  'True
  623.       BackColor       =   &H80000018&
  624.       BackStyle       =   0  'Transparent
  625.       Caption         =   "单据标题自动调整"
  626.       BeginProperty Font 
  627.          Name            =   "宋体"
  628.          Size            =   15
  629.          Charset         =   134
  630.          Weight          =   700
  631.          Underline       =   0   'False
  632.          Italic          =   0   'False
  633.          Strikethrough   =   0   'False
  634.       EndProperty
  635.       ForeColor       =   &H00000000&
  636.       Height          =   300
  637.       Left            =   2640
  638.       TabIndex        =   8
  639.       Top             =   780
  640.       Width           =   2520
  641.    End
  642. End
  643. Attribute VB_Name = "FrmJcsz_StoCheckStand"
  644. Attribute VB_GlobalNameSpace = False
  645. Attribute VB_Creatable = False
  646. Attribute VB_PredeclaredId = True
  647. Attribute VB_Exposed = False
  648. '***********************************************************************************************************
  649. '*    模 块 名 称 :进料检验标准
  650. '*    功 能 描 述 :此功能模块主要完成进料检验标准的录入、修改、删除、预览打印等。
  651. '*    程序员姓名  :张晶石
  652. '*    最后修改人  :张晶石
  653. '*    最后修改时间:2002/01/22
  654. '*    备        注:程序中所有依实际情况自定义部分均用[>>  <<]括起
  655. '*
  656. '*    1.每次调入外部功能窗体,均要加锁ChangeLock=True,窗体关闭后解锁ChangeLock=false
  657. '*                                    TextValiLock=True             TextValiLock=false
  658. '*
  659. '*    2.Lab_OperStatus 用此标签来标识单据录入状态(默认值为1) "1"-浏览 "2"-新增 "3"-修改
  660. '*
  661. '*    3.Lab_Djclzt 用此标签来标识单据处理状态(默认值为1) "1"-填制单据  "2"-查询单据列表  "3"-明细帐联查单据
  662. '*
  663. '*    4.原则:只要单据能够存盘(无论修改或新增)则其必须接受完整性及有效性规则检查
  664. '***********************************************************************************************************
  665.  
  666. '[以下为根据实际情况设置变量
  667. Dim Bln_BillChange As Boolean                   '标识单据是否发生改动
  668. Dim Rec_Query As New ADODB.Recordset            '单据组查询结果动态集(保存当前单据组ID)
  669. Public Str_QueryCondi As String                 '单据组查询条件(接收单据列表传递查询条件)
  670. Public bln_Help As Boolean
  671. Dim str_TempSql As String
  672. Dim rs_Temp As New ADODB.Recordset
  673. ']
  674. '以下为固定使用变量(单据)
  675. Dim BillCode As String                          '单据设计编码(索引号)
  676. Dim Var_Bill() As Variant                       '用来返回单据设计信息
  677. Dim ReportTitle As String                       '报表主标题
  678. Dim Tsxx As String                              '系统提示信息
  679. '以下为固定使用变量(网格)
  680. Dim Cxnrrec As New ADODB.Recordset              '显示查询内容动态集
  681. Dim Dyymctbl As New DY_Dyymsz                   '打印页面窗体变量
  682. Dim GridCode As String                          '显示网格网格代码
  683. Dim GridInf() As Variant                        '整个网格设置信息
  684. Dim Pmbcsjhs As Long                            '屏幕网格保持数据行数(大于等于1)
  685. Dim Fzxwghs As Integer                          '辅助项网格行数(包括合计行)
  686. Dim Sfxshjwg As Boolean                         '是否显示合计网格
  687. Dim Qslz As Long                                '网格隐藏(非操作显示)列数
  688. Dim Sjhgd As Double                             '网格数据行高度
  689. Dim GridBoolean() As Boolean                    '网格列信息(布尔型)
  690. Dim GridStr()  As String                        '网格列信息(字符型)
  691. Dim GridInt() As Integer                        '网格列信息(整型)
  692. Dim Sfblbzkd As Boolean                         '是否保留帮助宽度(字段提供帮助时,是否为按钮保留空间)
  693. Dim Dqlrwgh As Long                             '当前录入数据网格行
  694. Dim Dqlrwgl As Long                             '当前录入数据网格列
  695. Dim Dqlkwgh As Long                             '刚刚离开网格行(不一定为录入行)
  696. Dim Dqlkwgl As Long                             '刚刚离开网格列
  697. Dim Dqtoprow As Long                            '当前录入状态时最上端可视行
  698. Dim Dqleftcol As Long                           '当前录入状态时最左端可视列
  699. Dim Zdlrqnr As String                           '字段录入修改前内容(用来判断内容是否修改)
  700. Dim Wbkbhlock As Boolean                        '文本框改变值锁
  701. Dim Changelock As Boolean                       '网格行列改变控制锁(用来区别用户改变.程序改变)
  702. Dim Gdtlock As Boolean                          '滚动条滚动控制(用来区别用户改变.程序改变)
  703. Dim Yxxpdlock As Boolean                        '字段有效性判断锁(内容不修改不需进行字段有效性判断)
  704. Dim Hyxxpdlock As Boolean                       '行有效性判断锁(字段内容不修改不需进行行有效性判断)
  705. Dim Valilock As Boolean                         '文本框失去焦点是否进行有效性控制(TRUE 为锁定*限用网格录入)
  706. Dim Shsfts As Boolean                           '删除记录行是否提示
  707. Dim Szzls As Integer                            '网格信息数组最大下标值(网格列数-1)
  708. '以下为固定使用变量(文本框)
  709. Dim Textvar() As Variant                        '存储变体型文本框信息
  710. Dim Textboolean() As Boolean                    '存储布尔型文本框信息
  711. Dim Textint() As Integer                        '存储整型文本框信息
  712. Dim Textstr() As String                         '存储字符型文本框信息
  713. Dim Max_Text_Index As Integer                   '最大录入文本框索引值
  714. Dim TextGroupCode As String                     '文本框录入分组编码
  715. Dim TextValiLock As Boolean                     '文本框失去焦点是否进行有效性控制判断
  716. Dim TextValiJudgeLock() As Boolean              '文本框录入有效性判断控制锁
  717. Dim TextChangeLock As Boolean                   '文本框内容变换控制锁
  718.     
  719. Private Sub Form_KeyPress(KeyAscii As Integer)      '控 制 焦 点 转 移
  720.     
  721.     Dim jdzygs As Integer
  722.     jdzygs = 7                                       '在单据录入中,此焦点转移控制值一定小于等于文本框个数,否则网格回车键将不支持.
  723.     Select Case KeyAscii
  724.     Case vbKeyReturn
  725.         If Kjjdzy(jdzygs) Then
  726.             KeyAscii = 0
  727.         End If
  728.     Case 39           '屏蔽字符"'"
  729.         KeyAscii = 0
  730.     End Select
  731.     
  732. End Sub
  733. Private Sub Form_Load()                                                        '窗 体 装 入
  734.     
  735.     '初始化各种锁值(Fixed)
  736.     Changelock = False             '网格行列改变控制锁
  737.     Gdtlock = False                '滚动条滚动控制
  738.     Yxxpdlock = True               '字段有效性判断锁
  739.     Hyxxpdlock = True              '行有效性判断锁
  740.     Wbkbhlock = False              '文本框内容改变锁
  741.     
  742.     '调入单据信息(需要修改BillCode)
  743.     BillCode = "1501"
  744.     Call Sub_ReadBillInfo(BillCode, Me, Var_Bill())
  745.     Lab_Title = Var_Bill(2)
  746.     Lab_Title.Move (Me.Width - Lab_Title.Width) / 2, 800
  747.     
  748.     '报表编码
  749.     XtReportCode = Var_Bill(5)
  750.     Load Dyymctbl
  751.     
  752.     '以下为文本框处理程序(Fixed)
  753.     TextGroupCode = Var_Bill(3)
  754.     
  755.     Call Drwbkxx(TextGroupCode, Textvar(), Textboolean(), Textint(), Textstr())  '读入文本框录入信息
  756.     Call Wbkcsh
  757.     
  758.     '调入网格并记录一些网格信息(Fixed)
  759.     GridCode = Var_Bill(4)         '网格属性编码
  760.     Call BzWgcsh(WglrGrid, GridCode, GridInf(), GridBoolean(), GridInt(), GridStr())
  761.     
  762.     Qslz = GridInf(1)
  763.     Sjhgd = GridInf(2)
  764.     Fzxwghs = GridInf(4)
  765.     Sfblbzkd = GridInf(5)
  766.     Shsfts = GridInf(6)
  767.     Sfxshjwg = GridInf(7)
  768.     Szzls = WglrGrid.Cols - 1
  769.     Pmbcsjhs = Int((WglrGrid.Height - WglrGrid.FixedRows * WglrGrid.RowHeight(0)) / Sjhgd) - Fzxwghs - 1
  770.     
  771.     For Jsqte = WglrGrid.FixedRows To WglrGrid.Rows - 1
  772.         WglrGrid.RowHeight(Jsqte) = Sjhgd
  773.     Next Jsqte
  774.     
  775.     '初始化合计网格(Fixed)
  776.     Call Cshhjwg
  777.     
  778.     '单据变动置为False(Fixed)
  779.     Bln_BillChange = False
  780.     
  781.     '调入数据初始化模块(Fixed)
  782.     Lab_Djclzt.Caption = Xtcdcs
  783.     Call Sjcsh(Trim(Lab_Djclzt.Caption))
  784.     
  785. End Sub
  786. Private Sub Form_Unload(Cancel As Integer)           '窗体卸载
  787.     
  788.     '是否保存已修改单据
  789.      Dim YAnswer As Integer
  790.      If Lab_OperStatus.Caption = "2" Or Lab_OperStatus.Caption = "3" Then
  791.          Tsxx = "单据尚未保存,是否退出?"
  792.          YAnswer = Xtxxts(Tsxx, 2, 2)
  793.          If YAnswer <> 1 Then
  794.              Cancel = 1
  795.              Exit Sub
  796.          End If
  797.      End If
  798.     
  799.     '卸载打印页面窗体
  800.     Unload Dyymctbl
  801.     
  802.     '判断单据是否发生变化,并返回相应标识
  803.     If Bln_BillChange Then
  804.         Xtfhcs = "1"
  805.     Else
  806.         Xtfhcs = "0"
  807.     End If
  808.     
  809. End Sub
  810. Private Sub Sjcsh(Str_Pzclzt As String)              '数据初始化模块(根据实际情况)
  811.     
  812.     Dim Sqlstr As String       '查询单据列表条件
  813.     
  814.     '[>>根据实际情况初始化
  815.     Select Case Str_Pzclzt
  816.     Case "1"   '填制单据
  817.         '调入用户查询结果动态集(默认显示用户当前操作业务日期的单据)
  818.         Sqlstr = "SELECT stockstandmainid From QC_stockStandMain ORDER BY stockstandmainid "
  819.         Set Rec_Query = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  820.         
  821.         '新增单据
  822.         Call Sub_AddBill
  823.     Case "2"   '查询单据(单据列表)
  824.         
  825.         '填充查询单据标识
  826.         Lab_BillId.Caption = XT_BillID
  827.         Str_QueryCondi = Xtcdcsfz
  828.         
  829.         Call Sub_ShowBill
  830.         Call Sub_OperStatus("10")
  831.         
  832.         '调入用户查询结果动态集
  833.         Sqlstr = "SELECT DISTINCT stockstandmainid From qc_v_stostandsub a " & Str_QueryCondi & " ORDER BY stockstandmainid"
  834.         Set Rec_Query = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  835.         Rec_Query.Find "stockstandmainid=" & Val(Lab_BillId.Caption)
  836.     Case "3"   '明细帐联查单据
  837.         '设置工具条显示
  838.         With Tlb_Action
  839.             .Buttons("xz").Enabled = False             '新增
  840.             .Buttons("xg").Enabled = False             '修改
  841.             .Buttons("sc").Enabled = False             '删除
  842.             .Buttons("fgh0").Enabled = False           '分隔行
  843.             .Buttons("zh").Enabled = False             '增行
  844.             .Buttons("sh").Enabled = False             '删行
  845.             .Buttons("fgh1").Enabled = False           '分隔行
  846.             .Buttons("bc").Enabled = False             '保存
  847.             .Buttons("fq").Enabled = False             '放弃
  848.             .Buttons("shsh").Enabled = False           '审核
  849.             .Buttons("shqs").Enabled = False           '弃审
  850.             .Buttons("fgh2").Enabled = False           '分隔行
  851.             .Buttons("first").Enabled = False          '首张
  852.             .Buttons("prev").Enabled = False           '上张
  853.             .Buttons("next").Enabled = False           '下张
  854.             .Buttons("last").Enabled = False           '末张
  855.             .Buttons("fgh5").Enabled = False           '分割行
  856.         End With
  857.         
  858.         Call Sub_ShowBill
  859.         
  860.         '设置操作状态为浏览
  861.         Lab_OperStatus.Caption = "1"
  862.         
  863.         '录入文本框
  864.         For Jsqte = Max_Text_Index To 0 Step -1
  865.             LrText(Jsqte).Enabled = False
  866.         Next Jsqte
  867.     End Select
  868.     
  869.     '<<]
  870.     
  871. End Sub
  872. Private Sub Sub_ShowBill()                                          '根据当前单据ID显示整张单据内容
  873.     
  874.     '过程默认参数为当前窗体中单据ID:Lab_BillID
  875.     Dim Sqlstr As String                           '临时使用字符串
  876.     Dim RecTemp As New ADODB.Recordset             '临时使用动态集
  877.     Dim Jsqte As Long                              '临时计数器
  878.     
  879.     '禁止网格刷新动作,为加快网格显示速度(Fixed)
  880.     WglrGrid.Redraw = False
  881.     
  882.     '本张单据查询字符串
  883.     Sqlstr = "select * from qc_v_stockstandsub Where stockstandmainid='" & Val(Lab_BillId.Caption) & "' Order By qc_v_stockstandsub.stockStandSubId"
  884.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  885.     
  886.     With RecTemp
  887.         WglrGrid.Rows = WglrGrid.FixedRows
  888.         If .EOF Then
  889.             WglrGrid.Redraw = True
  890.             Exit Sub
  891.         Else
  892.             '[>>显示单据头
  893.             TextChangeLock = True     '文本框加锁
  894.             LrText(0).Text = Trim(.Fields("stockstandmainid"))                 '单据号
  895.             LrText(1).Text = Trim(.Fields("mnumber"))                          '物料编码
  896.             LrText(2).Text = Trim(.Fields("mName") & "")                       '物料名称
  897.             LrText(3).Text = Trim(.Fields("Model") & "")                       '规格型号
  898.             LrText(4).Text = Trim(.Fields("checksortname") & "")               '检验类别名称
  899.             LrText(4).Tag = Trim(.Fields("checksortcode"))                     '检验类别编码
  900.             LrText(5).Text = Trim(.Fields("gradename") & "")                   '质量等级名称
  901.             LrText(5).Tag = Trim(.Fields("gradecode") & "")                    '质量等级编码
  902.             TextChangeLock = False    '文本框解锁
  903.             '<<]
  904.         End If
  905.         Jsqte = WglrGrid.FixedRows
  906.         Do While Not .EOF
  907.             WglrGrid.AddItem ""
  908.             '[>>显示单据分录
  909.             WglrGrid.TextMatrix(Jsqte, 0) = "*"                                                        '数据有效行标识(必填)
  910.             WglrGrid.TextMatrix(Jsqte, 1) = Trim(.Fields("itemcode") & "")                             '检验项目代码
  911.             WglrGrid.TextMatrix(Jsqte, Sydz("001", GridStr(), Szzls)) = Trim(.Fields("itemname") & "") '检验项目名称
  912.             WglrGrid.TextMatrix(Jsqte, Sydz("002", GridStr(), Szzls)) = Trim(.Fields("stand") & "")    '检验标准
  913.             WglrGrid.TextMatrix(Jsqte, Sydz("003", GridStr(), Szzls)) = Trim(.Fields("unitname") & "") '计量单位
  914.             WglrGrid.TextMatrix(Jsqte, Sydz("004", GridStr(), Szzls)) = Trim(.Fields("Remark") & "")   '备注
  915.             
  916.             WglrGrid.RowHeight(Jsqte) = Sjhgd
  917.             .MoveNext
  918.             Jsqte = Jsqte + 1
  919.         Loop
  920.     End With
  921.     
  922.     
  923.     '调整网格(Fixed)
  924.     Call Sub_AdjustGrid
  925.     
  926.     '将网格刷新解禁(Fixed)
  927.     WglrGrid.Redraw = True
  928.     
  929. End Sub
  930. Private Sub Tlb_Action_ButtonClick(ByVal Button As MSComctlLib.Button)             '用户点击工具条
  931.     
  932.     '屏蔽文本框,下拉组合框有效性判断
  933.     Valilock = True
  934.     
  935.     '屏蔽网格失去焦点产生的有效性判断
  936.     Changelock = True
  937.     
  938.     Select Case Button.Key
  939.     Case "yl"                                            '预 览
  940.         If Fun_Drfrmyxxpd Then
  941.             BillGridPrint WglrGrid, LrText, GridStr(), Szzls, GridCode, TextGroupCode, XtReportCode, False
  942.         End If
  943.     Case "dy"                                            '打 印
  944.         If Fun_Drfrmyxxpd Then
  945.             Dim yhAnswer As Integer      '打印提示
  946.             
  947.             '用户确认是否打印单据
  948.             Tsxx = "请确认是否打印当前单据?"
  949.             yhAnswer = Xtxxts(Tsxx, 2, 2)
  950.             If yhAnswer = 2 Then
  951.                 Exit Sub
  952.             End If
  953.             BillGridPrint WglrGrid, LrText, GridStr(), Szzls, GridCode, TextGroupCode, XtReportCode, True
  954.         End If
  955.     Case "xz"                                            '新 增
  956.         Call Sub_AddBill
  957.     Case "xg"                                            '修 改
  958.         Call Sub_EditBill
  959.     Case "sc"                                            '删 除
  960.         Call Sub_DeleteBill
  961.     Case "zh"                                            '增 行
  962.         Call zjlrfl
  963.     Case "sh"                                            '删 行
  964.         Call Scdqfl
  965.     Case "bc"                                            '保 存
  966.         If Fun_Drfrmyxxpd Then
  967.             Call Sub_SaveBill
  968.         End If
  969.     Case "fq"                                            '放 弃
  970.         Call Sub_AbandonBill
  971.     Case "find"                                          '查 询
  972.         Call Drbmhelp(0, "Qc_StoCheckStand", "")
  973.         If Xtfhcs <> "" Then
  974.             Lab_BillId.Caption = Xtfhcs
  975.             Call Sub_ShowBill
  976.         End If
  977.     Case "first"                                         '首 张
  978.         Call Sub_First
  979.     Case "prev"                                          '上 张
  980.         Call Sub_Prev
  981.     Case "next"                                          '下 张
  982.         Call Sub_Next
  983.     Case "last"                                          '末 张
  984.         Call Sub_Last
  985.     Case "bz"                                            '帮 助
  986.         Call F1bz
  987.     Case "fh"                                            '退 出
  988.         Unload Me
  989.     End Select
  990.     
  991.     '解 锁
  992.     Valilock = False
  993.     Changelock = False
  994.     TextChangeLock = False
  995.     
  996. End Sub
  997. Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)     '支持热键操作
  998.     
  999.     Select Case KeyCode
  1000.     Case vbKeyF5          '增加单据
  1001.         If Tlb_Action.Buttons("xz").Enabled And Tlb_Action.Buttons("xz").Visible Then
  1002.             Call Sub_AddBill
  1003.         End If
  1004.     Case vbKeyF3          '修改单据
  1005.         If Tlb_Action.Buttons("xg").Enabled And Tlb_Action.Buttons("xg").Visible Then
  1006.             Call Sub_EditBill
  1007.         End If
  1008.     Case vbKeyF6          '保存单据
  1009.         If Tlb_Action.Buttons("bc").Enabled And Tlb_Action.Buttons("bc").Visible Then
  1010.             If Fun_Drfrmyxxpd Then Call Sub_SaveBill
  1011.         End If
  1012.     End Select
  1013.     
  1014. End Sub
  1015. Private Sub Sub_OperStatus(Str_Status As String)                 '工具条依据不同状态所进行的变化
  1016.     
  1017.     With Tlb_Action
  1018.         Select Case Str_Status
  1019.         Case "10"   '浏览((列表)调入单据处理时的进入状态、(列表)新增状态时放弃录入)
  1020.             '工具条
  1021.             .Buttons("dy").Enabled = True       '打印
  1022.             .Buttons("yl").Enabled = True       '预览
  1023.             .Buttons("xz").Enabled = True       '新增
  1024.             .Buttons("xg").Enabled = True       '修改
  1025.             .Buttons("sc").Enabled = True       '删除
  1026.             .Buttons("zh").Enabled = False      '增行
  1027.             .Buttons("sh").Enabled = False      '删行
  1028.             .Buttons("bc").Enabled = False      '保存
  1029.             .Buttons("fq").Enabled = False      '放弃
  1030.             .Buttons("find").Enabled = True     '查询
  1031.             .Buttons("first").Enabled = True    '首张
  1032.             .Buttons("prev").Enabled = True     '上张
  1033.             .Buttons("next").Enabled = True     '下张
  1034.             .Buttons("last").Enabled = True     '末张
  1035.             .Buttons("bz").Enabled = True       '帮助
  1036.             .Buttons("fh").Enabled = True       '退出
  1037.             
  1038.             '设置文本框浏览状态
  1039.             Call Sub_LrtextStatus(False)
  1040.         Case "20"   '新增单据((录入)新增一张单据 、(列表)新增一张单据)
  1041.             '工具条
  1042.             .Buttons("dy").Enabled = False      '打印
  1043.             .Buttons("yl").Enabled = False      '预览
  1044.             .Buttons("xz").Enabled = False      '新增
  1045.             .Buttons("xg").Enabled = False      '修改
  1046.             .Buttons("sc").Enabled = False      '删除
  1047.             .Buttons("zh").Enabled = True       '增行
  1048.             .Buttons("sh").Enabled = True       '删行
  1049.             .Buttons("bc").Enabled = True       '保存
  1050.             .Buttons("fq").Enabled = True       '放弃
  1051.             .Buttons("find").Enabled = False    '查询
  1052.             .Buttons("first").Enabled = False   '首张
  1053.             .Buttons("prev").Enabled = False    '上张
  1054.             .Buttons("next").Enabled = False    '下张
  1055.             .Buttons("last").Enabled = False    '末张
  1056.             .Buttons("bz").Enabled = True       '帮助
  1057.             .Buttons("fh").Enabled = True       '退出
  1058.             
  1059.             '设置文本框录入状态
  1060.             Call Sub_LrtextStatus(True)
  1061.         Case "30"   '修改((录入)调入修改功能、(列表)调入修改功能)
  1062.             '工具条
  1063.             .Buttons("dy").Enabled = False      '打印
  1064.             .Buttons("yl").Enabled = False      '预览
  1065.             .Buttons("xz").Enabled = False      '新增
  1066.             .Buttons("xg").Enabled = False      '修改
  1067.             .Buttons("sc").Enabled = False      '删除
  1068.             .Buttons("zh").Enabled = True       '增行
  1069.             .Buttons("sh").Enabled = True       '删行
  1070.             .Buttons("bc").Enabled = True       '保存
  1071.             .Buttons("fq").Enabled = True       '放弃
  1072.             .Buttons("find").Enabled = False    '查询
  1073.             .Buttons("first").Enabled = False   '首张
  1074.             .Buttons("prev").Enabled = False    '上张
  1075.             .Buttons("next").Enabled = False    '下张
  1076.             .Buttons("last").Enabled = False    '末张
  1077.             .Buttons("bz").Enabled = True       '帮助
  1078.             .Buttons("fh").Enabled = True       '退出
  1079.             
  1080.             '设置文本框录入状态
  1081.             Call Sub_LrtextStatus(False)
  1082.         End Select
  1083.     End With
  1084.     
  1085. End Sub
  1086. Private Sub Sub_LrtextStatus(TextEnabled As Boolean)                            '设置录入文本框状态
  1087.     
  1088.     '录入文本框状态设置
  1089.     If TextEnabled Then
  1090.         For Jsqte = Max_Text_Index To 0 Step -1
  1091.             '判断文本框是否可编辑
  1092.             If Textboolean(Jsqte, 5) Then
  1093.                 LrText(Jsqte).Enabled = True
  1094.             Else
  1095.                 LrText(Jsqte).Enabled = False
  1096.             End If
  1097.         Next Jsqte
  1098.     Else
  1099.         For Jsqte = Max_Text_Index To 0 Step -1
  1100.             LrText(Jsqte).Enabled = False
  1101.         Next Jsqte
  1102.     End If
  1103.     
  1104. End Sub
  1105. Private Sub Sub_CheckStatus()                                       '设置审核弃审按钮状态(亦可设置其他动作按钮状态)
  1106.     
  1107.     '根据当前单据状态来确定审核弃审按钮状态
  1108.     If Trim(LrText(5).Text) <> "" And Trim(LrText(6).Text) = "" Then
  1109.         Tlb_Action.Buttons("shsh").Enabled = True      '审核
  1110.     Else
  1111.         Tlb_Action.Buttons("shsh").Enabled = False     '审核
  1112.     End If
  1113.     
  1114.     If Trim(LrText(5).Text) <> "" And Trim(LrText(6).Text) <> "" Then
  1115.         Tlb_Action.Buttons("shqs").Enabled = True      '弃审
  1116.     Else
  1117.         Tlb_Action.Buttons("shqs").Enabled = False     '弃审
  1118.     End If
  1119.     
  1120. End Sub
  1121. Private Sub Wbkcl()                                                 '文本框录入之前处理(根据实际情况)
  1122.     
  1123.     Dim xswbrr As String
  1124.     With WglrGrid
  1125.         Zdlrqnr = Trim(.Text)
  1126.         xswbrr = Trim(.Text)
  1127.         If GridBoolean(.Col, 3) Then   '列表框录入
  1128.             '填充列表框程序
  1129.             Call FillCombo(YdCombo, GridStr(.Col, 5), xswbrr, 0)
  1130.         Else
  1131.             Wbkbhlock = True
  1132.             
  1133.             '====以下为用户自定义
  1134.             Ydtext.Text = xswbrr
  1135.             '====以上为用户自定义
  1136.             
  1137.             Wbkbhlock = False
  1138.             Ydtext.SelStart = Len(Ydtext.Text)
  1139.         End If
  1140.     End With
  1141.     
  1142. End Sub
  1143. Private Function sjzdyxxpd(Dqpdwgh As Long, Dqpdwgl As Long) As Boolean       '录入数据字段有效性判断,同时进行字段录入事后处理
  1144.     
  1145.     '函数参数:Dqpdwgh, Dqpdwgl 当前要判断网格单元所处行列值
  1146.     
  1147.     Dim Str_JudgeText As String                 '临时有效性判断字段内容
  1148.     Dim Coljsq As Long                          '临时列计数器
  1149.     Dim RecTemp As New ADODB.Recordset          '临时使用动态集
  1150.     Dim Sqlstr As String                        '临时使用查询字符串
  1151.     
  1152.     With WglrGrid
  1153.         '非录入状态或非数据行则其有效性为合法
  1154.         If Yxxpdlock Or .Row < .FixedRows Then
  1155.             sjzdyxxpd = True
  1156.             Exit Function
  1157.         End If
  1158.         
  1159.         '取得当前要判断字段内容
  1160.         Str_JudgeText = Trim(.TextMatrix(Dqpdwgh, Dqpdwgl))
  1161.         
  1162.         '根据不同字段进行相应的处理(依据其逻辑编号)
  1163.         Select Case GridStr(Dqpdwgl, 1)
  1164.             '[>>以下为自定义部分
  1165.         Case "001"                   '检验项目
  1166.             If Not Trim(Str_JudgeText) = "" Then
  1167.                 '1.放置字段有效性判断
  1168.                 Sqlstr = "SELECT itemcode,itemname,unitname From qc_checkitem Where itemcode='" & Str_JudgeText & "' Or itemName='" & Str_JudgeText & "'"
  1169.                 Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  1170.                 If RecTemp.EOF Then
  1171.                     Tsxx = "此检验项目不存在!"
  1172.                     GoTo Lrcwcl
  1173.                 End If
  1174.                 
  1175.                 For i = .FixedRows To .Rows - 1
  1176.                    If Trim(.TextMatrix(i, 0)) = "*" Then
  1177.                        str_temp1 = Trim(.TextMatrix(i, Sydz("001", GridStr(), Szzls)))
  1178.                        For j = i + 1 To .Rows - 1
  1179.                            If Trim(.TextMatrix(j, 0)) = "*" Then
  1180.                                str_temp2 = Trim(.TextMatrix(j, Sydz("001", GridStr(), Szzls)))
  1181.                                If str_temp1 = str_temp2 Then
  1182.                                    Tsxx = "检验项目不能重复!"
  1183.                                    GoTo Lrcwcl
  1184.                                End If
  1185.                            End If
  1186.                        Next j
  1187.                    End If
  1188.                 Next i
  1189.                 
  1190.                 '2.放置字段事后处理程序
  1191.                 .TextMatrix(Dqpdwgh, 1) = Trim(RecTemp.Fields("itemcode") & "")                              '显示检验项目编码
  1192.                 .TextMatrix(Dqpdwgh, Sydz("001", GridStr(), Szzls)) = Trim(RecTemp.Fields("itemName") & "")  '显示检验项目名称
  1193.                 .TextMatrix(Dqpdwgh, Sydz("003", GridStr(), Szzls)) = Trim(RecTemp.Fields("unitname") & "")  '显示检验项目计量单位
  1194.                 
  1195.             Else
  1196.                 '3.清空相关字段
  1197.                 .TextMatrix(Dqpdwgh, 0) = ""
  1198.                 .TextMatrix(Dqpdwgh, Sydz("001", GridStr(), Szzls)) = ""
  1199.                 .TextMatrix(Dqpdwgh, Sydz("002", GridStr(), Szzls)) = ""
  1200.                 .TextMatrix(Dqpdwgh, Sydz("003", GridStr(), Szzls)) = ""
  1201.                 .TextMatrix(Dqpdwgh, Sydz("004", GridStr(), Szzls)) = ""
  1202.             End If
  1203. '            '<<以上为自定义部分]
  1204.         End Select
  1205.         
  1206.         '字段录入正确后为零字段清空(Fixed)
  1207.         Call Qkwlzd(Dqpdwgh, Dqpdwgl)
  1208.         
  1209.         '字段有效性判断通过,将字段有效性判断加锁直至再次改变(Fixed)
  1210.         sjzdyxxpd = True
  1211.         Yxxpdlock = True
  1212.         Exit Function
  1213.     End With
  1214.     
  1215. Lrcwcl:    '录入错误处理
  1216.     With WglrGrid
  1217.         
  1218.         '给出错误提示信息
  1219.         Call Xtxxts(Tsxx, 0, 1)
  1220.         
  1221.         '返回网格错误位置(ChangeLock避免再次引发RowColChange有效性判断),装入录入载体
  1222.         Changelock = True
  1223.         .Select Dqpdwgh, Dqpdwgl
  1224.         Changelock = False
  1225.         Call xswbk
  1226.         
  1227.         '函数返回False
  1228.         sjzdyxxpd = False
  1229.         Exit Function
  1230.     End With
  1231.     
  1232. End Function
  1233. Private Function Sjhzyxxpd(ByVal Yxxpdh As Long) As Boolean                     '录入数据行有效性判断,同时进行行处理
  1234.     
  1235.     '函数参数:Yxxpdh 要进行有效性判断的网格数据行的行值
  1236.     
  1237.     Dim Lrywlz As Long                            '录入有误网格列值
  1238.     Dim RecTemp As New ADODB.Recordset            '临时使用动态集
  1239.     
  1240.     With WglrGrid
  1241.         '判断行为空(行中所有可编辑列数据均为空或为零)和无效数据行则清除当前行
  1242.         If .Rows <= .FixedRows Then Exit Function   ' 如果没有记录,则退出
  1243.         If .TextMatrix(Yxxpdh, 0) <> "*" Then
  1244.             Sjhzyxxpd = True
  1245.             Exit Function
  1246.         Else
  1247.             If pdhwk(Yxxpdh) And Yxxpdh + 1 <= .Rows - 1 Then
  1248.                 '当要判断行处于网格末行时才允许删行,否则要进行有效性判断
  1249.                 If .TextMatrix(Yxxpdh + 1, 0) <> "*" Then
  1250.                     Changelock = True
  1251.                     .RemoveItem Yxxpdh
  1252.                     If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  1253.                         .AddItem ""
  1254.                         .RowHeight(.Rows - 1) = Sjhgd
  1255.                     End If
  1256.                     Changelock = False
  1257.                     Sjhzyxxpd = True
  1258.                     Exit Function
  1259.                 End If
  1260.             End If
  1261.         End If
  1262.         
  1263.         '行没有发生变化则不进行有效性判断
  1264.         If Hyxxpdlock Then
  1265.             Sjhzyxxpd = True
  1266.             Exit Function
  1267.         End If
  1268.         
  1269.         '[>>以下为自定义部分
  1270.         
  1271.         '1.放置行有效性判断程序
  1272.         
  1273.         '1.1首先进行单个不能为空或不能为零判断(Fixed)
  1274.         For Jsqte = Qslz To .Cols - 1
  1275.             
  1276.             '字段不能为空
  1277.             If GridInt(Jsqte, 5) = 1 Then
  1278.                 If Len(Trim(.TextMatrix(Yxxpdh, Jsqte))) = 0 Then
  1279.                     Tsxx = GridStr(Jsqte, 2)
  1280.                     Lrywlz = Jsqte
  1281.                     GoTo Lrcwcl
  1282.                     Exit For
  1283.                 End If
  1284.             End If
  1285.             
  1286.             '字段不能为零
  1287.             If GridInt(Jsqte, 5) = 2 Then
  1288.                 If Val(Trim(.TextMatrix(Yxxpdh, Jsqte))) = 0 Then
  1289.                     Tsxx = GridStr(Jsqte, 2)
  1290.                     Lrywlz = Jsqte
  1291.                     GoTo Lrcwcl
  1292.                     Exit For
  1293.                 End If
  1294.             End If
  1295.         Next Jsqte
  1296.         
  1297.         '1.2进行其他有效性判断,编写格式同1.1
  1298.         
  1299.         '2.放置行处理程序(当数据行通过有效性判断)
  1300.         
  1301.         '以上为自定义部分<<]
  1302.     End With    'WglrGrid
  1303.     
  1304.     '如果此行通过行有效性判断则加锁,直至此行数据再次发生变化
  1305.     Sjhzyxxpd = True
  1306.     Hyxxpdlock = True
  1307.     Exit Function
  1308.     
  1309. Lrcwcl:      '录入错误处理
  1310.     With WglrGrid
  1311.         
  1312.         '给出错误提示信息
  1313.         Call Xtxxts(Tsxx, 0, 1)
  1314.         
  1315.         '返回网格错误位置 (ChangeLock避免再次引发RowColChange有效性判断), 装入录入载体
  1316.         Changelock = True
  1317.         .Select Yxxpdh, Lrywlz
  1318.         Changelock = False
  1319.         Call xswbk
  1320.         
  1321.         '函数返回False
  1322.         Sjhzyxxpd = False
  1323.         Exit Function
  1324.     End With
  1325.     
  1326. End Function
  1327. Private Sub Sub_AddBill()                         '新增一张单据
  1328.     
  1329.     Dim RecTemp As New ADODB.Recordset            '临时使用动态集
  1330.     Dim Jsqte As Long                             '临时计数器
  1331.     
  1332.     '设置操作状态为新增(Fixed)
  1333.     Lab_OperStatus.Caption = "2"
  1334.     
  1335.     '设置工具条状态(Fixed)
  1336.     Call Sub_OperStatus("20")
  1337.     
  1338.     '清空VouchID(Fixed)
  1339.     Lab_BillId.Caption = ""
  1340.     
  1341.     '录入文本框清除内容
  1342.     For Jsqte = Max_Text_Index To 0 Step -1
  1343.         LrText(Jsqte).Tag = ""
  1344.         LrText(Jsqte).Text = ""
  1345.     Next Jsqte
  1346.     
  1347.     '读取最新的单据编码
  1348.     LrText(0).Text = CreatBillCode(BillCode, False)
  1349.     
  1350.     '重置网格(Fixed)
  1351.     With WglrGrid
  1352.         .Rows = Pmbcsjhs + .FixedRows + Fzxwghs + 1
  1353.         For Jsqte = .FixedRows To .Rows - 1
  1354.             .RowHeight(Jsqte) = Sjhgd
  1355.         Next Jsqte
  1356.         WglrGrid.Clear 1
  1357.         Changelock = True
  1358.         .Select .FixedRows, Qslz
  1359.         Changelock = False
  1360.     End With
  1361.     
  1362.     '让第一个录入项得到焦点(Fixed)
  1363.     On Error Resume Next
  1364.     LrText(1).SetFocus
  1365.     
  1366. End Sub
  1367. Private Sub Sub_EditBill()                 '修改一张单据
  1368.     
  1369.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  1370.     
  1371.     '非有效单据不予进行修改动作
  1372.     If Val(Lab_BillId.Caption) = 0 Then
  1373.         Exit Sub
  1374.     End If
  1375.     
  1376.     '设置操作状态为修改
  1377.     Lab_OperStatus.Caption = "3"
  1378.     
  1379.     '设置工具条状态
  1380.     Call Sub_OperStatus("30")
  1381.     
  1382. End Sub
  1383. Private Sub Sub_DeleteBill()             '删除当前单据
  1384.     Dim YAnswer As Integer               '确认是否删除当前单据
  1385.     Dim Jsqte As Long                    '临时使用计数器
  1386.     
  1387.     '非有效单据不予进行删除动作
  1388.     If Val(Lab_BillId.Caption) = 0 Then
  1389.         Exit Sub
  1390.     End If
  1391.     
  1392.     Tsxx = "请确认是否删除当前单据?"
  1393.     YAnswer = Xtxxts(Tsxx, 2, 2)
  1394.     
  1395.     If YAnswer = 1 Then
  1396.         
  1397.         '进行事务处理
  1398.         On Error GoTo Swcwcl
  1399.         Cw_DataEnvi.DataConnect.BeginTrans
  1400.         
  1401.         '1.删除单据所有内容
  1402.         Cw_DataEnvi.DataConnect.Execute ("Delete QC_stockStandSub Where stockstandmainid=" & Val(Lab_BillId.Caption))
  1403.         Cw_DataEnvi.DataConnect.Execute ("Delete QC_stockStandMain Where stockstandmainid=" & Val(Lab_BillId.Caption))
  1404.         
  1405.         Cw_DataEnvi.DataConnect.CommitTrans
  1406.         
  1407.         '标识单据发生改动
  1408.         Bln_BillChange = True
  1409.         
  1410.         '单据ID置0
  1411.         Lab_BillId.Caption = 0
  1412.     Else
  1413.         Exit Sub
  1414.     End If
  1415.     
  1416.     '删除单据后重置状态
  1417.     
  1418.     '1.显示下一张单据
  1419.     Call Sub_Next
  1420.     
  1421.     '2.如果无下一张单据则搜索上一张单据
  1422.     If Val(Lab_BillId.Caption) = 0 Then
  1423.         Call Sub_Prev
  1424.     End If
  1425.     
  1426.     '3.如无单据则置单据为空状态
  1427.     If Val(Lab_BillId.Caption) = 0 Then
  1428.         '清除录入文本框
  1429.         For Jsqte = Max_Text_Index To 0 Step -1
  1430.             LrText(Jsqte).Tag = ""
  1431.             LrText(Jsqte).Text = ""
  1432.         Next Jsqte
  1433.         
  1434.         '重置网格(Fixed)
  1435.         With WglrGrid
  1436.             .Rows = Pmbcsjhs + .FixedRows + Fzxwghs + 1
  1437.             For Jsqte = .FixedRows To .Rows - 1
  1438.                 .RowHeight(Jsqte) = Sjhgd
  1439.             Next Jsqte
  1440.             WglrGrid.Clear 1
  1441.             Changelock = True
  1442.             .Select .FixedRows, Qslz
  1443.             Changelock = False
  1444.         End With
  1445.         
  1446.         '设置操作状态为浏览
  1447.         Lab_OperStatus = "1"
  1448.         Call Sub_OperStatus("10")
  1449.     End If
  1450.     
  1451.     Rec_Query.Requery
  1452.     Rec_Query.Find "stockstandmainid=" & Val(Lab_BillId.Caption)
  1453.     Exit Sub
  1454.     
  1455. Swcwcl:          '单据删除时出现错误
  1456.     Cw_DataEnvi.DataConnect.RollbackTrans
  1457.     Tsxx = "单据删除过程中出现未知错误,程序自动恢复保存前状态!"
  1458.     Call Xtxxts(Tsxx, 0, 1)
  1459.     Exit Sub
  1460.     
  1461. End Sub
  1462. Private Sub Sub_AbandonBill()                                              '放弃对当前单据的操作
  1463.     
  1464.     Dim Jsqte As Long                    '临时使用计数器
  1465.     
  1466.     '先关闭录入载体(Fixed)
  1467.     Changelock = True
  1468.     Valilock = True
  1469.     Call Ycwbk
  1470.     Changelock = False
  1471.     Valilock = False
  1472.     
  1473.     '如果单据有效则重新显示当前单据,置单据为空状态
  1474.     If Not Rec_Query.EOF Then
  1475.         Lab_BillId.Caption = Rec_Query.Fields("stockstandmainid")
  1476.         Call Sub_ShowBill
  1477.     Else
  1478.         '单据ID置为0
  1479.         Lab_BillId.Caption = 0
  1480.         
  1481.         '清除录入文本框
  1482.         For Jsqte = Max_Text_Index To 0 Step -1
  1483.             LrText(Jsqte).Tag = ""
  1484.             LrText(Jsqte).Text = ""
  1485.         Next Jsqte
  1486.         
  1487.         '重置网格(Fixed)
  1488.         With WglrGrid
  1489.             .Rows = Pmbcsjhs + .FixedRows + Fzxwghs + 1
  1490.             For Jsqte = .FixedRows To .Rows - 1
  1491.                 .RowHeight(Jsqte) = Sjhgd
  1492.             Next Jsqte
  1493.             
  1494.             WglrGrid.Clear 1
  1495.             Changelock = True
  1496.             .Select .FixedRows, Qslz
  1497.             Changelock = False
  1498.         End With
  1499.         
  1500.     End If
  1501.     
  1502.     '设置操作状态为浏览
  1503.     Lab_OperStatus = "1"
  1504.     Call Sub_OperStatus("10")
  1505. End Sub
  1506. Private Function Sub_SaveBill() As Boolean                                   '保 存 单 据
  1507.     
  1508.     Dim RecTemp As New ADODB.Recordset                    '临时使用动态集
  1509.     Dim Rec_VouchMain As New ADODB.Recordset              '单据主表动态集
  1510.     Dim Rec_VouchSub As New ADODB.Recordset               '单据子表动态集
  1511.     Dim Rowjsq As Long                                    '网格行计数器
  1512.     Dim Coljsq As Long                                    '网格列计数器
  1513.     Dim Jsqte As Integer                                  '临时计数器
  1514.     Dim Lng_RowCount As Long                              '有效数据行计数器
  1515.     Dim Lrywlz As Long                                    '录入有误列值
  1516.     
  1517.     Sub_SaveBill = False
  1518.     
  1519.     '一.============先对单据内容进行有效性判断==============='
  1520.     
  1521.     '先进行字段不能为空或不能为零有效性判断(Fixed)
  1522.     For Jsqte = 0 To Max_Text_Index
  1523.         If Textint(Jsqte, 8) = 1 Then     '字段不能为空
  1524.             If Len(Trim(LrText(Jsqte).Text)) = 0 Then
  1525.                 Tsxx = Textstr(Jsqte, 7) & "不能为空!"
  1526.                 Call Xtxxts(Tsxx, 0, 1)
  1527.                 LrText(Jsqte).SetFocus
  1528.                 Exit Function
  1529.             End If
  1530.         Else
  1531.             If Textint(Jsqte, 8) = 2 Then   '字段不能为零
  1532.                 If Val(Trim(LrText(Jsqte).Text)) = 0 Then
  1533.                     Tsxx = Textstr(Jsqte, 7) & "不能为零!"
  1534.                     Call Xtxxts(Tsxx, 0, 1)
  1535.                     LrText(Jsqte).SetFocus
  1536.                     Exit Function
  1537.                 End If
  1538.             End If
  1539.         End If
  1540.     Next Jsqte
  1541.     
  1542.     '对需要进行事后判断的文本框录入内容进行有效性判断 (Fixed)
  1543.     For Jsqte = 0 To Max_Text_Index
  1544.         If Textint(Jsqte, 9) = 0 Or Textint(Jsqte, 9) = 2 Then
  1545.             If Not TextYxxpd(Jsqte) Then
  1546.                 Call TextShow(Jsqte)
  1547.                 Exit Function
  1548.             End If
  1549.         End If
  1550.     Next Jsqte
  1551.     
  1552.     '[>>
  1553.     
  1554.     '可在此区域写入其他对单据表头内容的有效性判断.
  1555.     
  1556.     
  1557.     '<<]
  1558.     
  1559.     '[>>下面将对所有有效数据行进行有效性判断
  1560.     
  1561.     Lng_RowCount = 0
  1562.     
  1563.     With WglrGrid
  1564.         For Rowjsq = .FixedRows To .Rows - 1
  1565.             '带*号者为有效数据行(Fixed)
  1566.             If .TextMatrix(Rowjsq, 0) <> "*" Then
  1567.                 Exit For
  1568.             Else
  1569.                 Lng_RowCount = Lng_RowCount + 1
  1570.             End If
  1571.             
  1572.             '1.首先进行为空或为零判断(Fixed)
  1573.             
  1574.             For Jsqte = Qslz To .Cols - 1
  1575.                 
  1576.                 '字段不能为空
  1577.                 If GridInt(Jsqte, 5) = 1 Then
  1578.                     If Len(Trim(.TextMatrix(Rowjsq, Jsqte))) = 0 Then
  1579.                         Tsxx = GridStr(Jsqte, 2)
  1580.                         Lrywlz = Jsqte
  1581.                         GoTo Lrcwcl
  1582.                         Exit For
  1583.                     End If
  1584.                 End If
  1585.                 
  1586.                 '字段不能为零
  1587.                 If GridInt(Jsqte, 5) = 2 Then
  1588.                     If Val(Trim(.TextMatrix(Rowjsq, Jsqte))) = 0 Then
  1589.                         Tsxx = GridStr(Jsqte, 2)
  1590.                         Lrywlz = Jsqte
  1591.                         GoTo Lrcwcl
  1592.                         Exit For
  1593.                     End If
  1594.                 End If
  1595.             Next Jsqte
  1596.             
  1597.             '2.判断检验项目是否存在(Define)
  1598.             Sqlstr = "SELECT itemcode From qc_checkitem Where itemCode='" & Trim(.TextMatrix(Rowjsq, 1)) & "'"
  1599.             Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  1600.             If RecTemp.EOF Then
  1601.                 Tsxx = "此检验项目不存在!"
  1602.                 Lrywlz = Sydz("001", GridStr(), Szzls)
  1603.                 GoTo Lrcwcl
  1604.             End If
  1605.         Next Rowjsq
  1606.         
  1607.         '单据分录行数不能为零(Fixed)
  1608.         If Lng_RowCount = 0 Then
  1609.             Tsxx = "检验项目不能为空!"
  1610.             Call Xtxxts(Tsxx, 0, 1)
  1611.             Exit Function
  1612.         End If
  1613.         
  1614.         '[>>
  1615.         '此处可以定义整张单据不能通过有效性检查的理由
  1616.      For i = .FixedRows To .Rows - 1
  1617.         If Trim(.TextMatrix(i, 0)) = "*" Then
  1618.             str_temp1 = Trim(.TextMatrix(i, Sydz("001", GridStr(), Szzls)))
  1619.             For j = i + 1 To .Rows - 1
  1620.                 If Trim(.TextMatrix(j, 0)) = "*" Then
  1621.                     str_temp2 = Trim(.TextMatrix(j, Sydz("001", GridStr(), Szzls)))
  1622.                     If str_temp1 = str_temp2 Then
  1623.                         Call Xtxxts("检验项目不能重复!", 0, 1)
  1624.                         Exit Function
  1625.                     End If
  1626.                 End If
  1627.             Next j
  1628.         End If
  1629.     Next i
  1630.         '<<]
  1631.     End With  '网格
  1632.     
  1633.     
  1634.     '二.=============如果以上有效性检查均顺利通过,则执行存盘动作============'
  1635.     
  1636.     '对存盘进行事务处理(Fixed)
  1637.     On Error GoTo Swcwcl
  1638.     Cw_DataEnvi.DataConnect.BeginTrans
  1639.     
  1640.     '判断单据状态以进行不同处理
  1641.     
  1642.     '1.先对单据主表进行处理
  1643.     If Trim(Lab_OperStatus) = "2" Then
  1644.         
  1645.         '新增单据
  1646.         
  1647.         '1.对于某些单据号自动生成的单据则可在此处自动生成
  1648.         LrText(0).Text = CreatBillCode(BillCode, True)
  1649.         
  1650.         '2.开始存盘
  1651.         
  1652.         '打开单据主表动态集
  1653.         If Rec_VouchMain.State = 1 Then Rec_VouchMain.Close
  1654.         Rec_VouchMain.Open "Select * From QC_stockStandMain Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1655.         
  1656.         With Rec_VouchMain
  1657.             .AddNew
  1658.             .Fields("stockstandmainid") = CreatBillID(BillCode) '主表ID
  1659.             .Fields("mnumber") = Trim(LrText(1).Text)           '物料编码
  1660.             .Fields("gradecode") = Trim(LrText(5).Tag)          '质量等级编码
  1661.             .Update
  1662.             '系统读出单据ID写入Lab_BillID
  1663.             Lab_BillId.Caption = .Fields("stockstandmainid")
  1664.         End With
  1665.     Else
  1666.         '修改单据
  1667.         
  1668.         '1.删除原单据子表中所有内容
  1669.         
  1670.         Cw_DataEnvi.DataConnect.Execute ("Delete QC_stockStandSub Where stockstandmainid=" & Val(Lab_BillId.Caption))
  1671.         
  1672.         '打开单据主表动态集
  1673.         If Rec_VouchMain.State = 1 Then Rec_VouchMain.Close
  1674.         Rec_VouchMain.Open "Select * From QC_stockStandMain  Where stockstandmainid=" & Val(Lab_BillId.Caption), Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1675.         With Rec_VouchMain
  1676.             .Fields("mnumber") = Trim(LrText(1).Text)    '物料编码
  1677.             .Fields("gradecode") = Trim(LrText(5).Tag)   '质量等级编码
  1678.             .Update
  1679.         End With
  1680.     End If
  1681.     
  1682.     '2.对单据子表进行处理
  1683.     
  1684.     '打开单据子表动态集
  1685.     If Rec_VouchSub.State = 1 Then Rec_VouchSub.Close
  1686.     Rec_VouchSub.Open "Select * From QC_stockStandSub Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1687.     
  1688.     '将网格中有效数据行写入单据子表
  1689.     For Rowjsq = WglrGrid.FixedRows To WglrGrid.Rows - 1
  1690.         If WglrGrid.TextMatrix(Rowjsq, 0) <> "*" Then
  1691.             Exit For
  1692.         End If
  1693.         
  1694.         With Rec_VouchSub
  1695.             .AddNew
  1696.             .Fields("stockStandSubId") = Rowjsq - WglrGrid.FixedRows + 1                         '单据记录顺序号
  1697.             .Fields("stockstandmainid") = Val(Lab_BillId.Caption)                                '单据ID
  1698.             .Fields("ItemCode") = Trim(WglrGrid.TextMatrix(Rowjsq, 1))                           '检验项目
  1699.             .Fields("Stand") = Trim(WglrGrid.TextMatrix(Rowjsq, Sydz("002", GridStr(), Szzls)))  '检验标准
  1700.             .Fields("Remark") = Trim(WglrGrid.TextMatrix(Rowjsq, Sydz("004", GridStr(), Szzls))) '备注
  1701.             .Update
  1702.         End With
  1703.     Next Rowjsq
  1704.     Cw_DataEnvi.DataConnect.CommitTrans
  1705.     
  1706.     Sub_SaveBill = True
  1707.     Tsxx = "单据存盘完毕!"
  1708.     Call Xtxxts(Tsxx, 0, 4)
  1709.     
  1710.     '标识单据发生改动
  1711.     Bln_BillChange = True
  1712.     
  1713.     '设置单据改变后的状态
  1714.     Lab_OperStatus = "1"
  1715.     Call Sub_OperStatus("10")
  1716.     Rec_Query.Requery
  1717.     Rec_Query.Find "stockstandmainid=" & Val(Lab_BillId.Caption)
  1718.     
  1719.     Exit Function
  1720.     
  1721. Swcwcl:       '数据存盘时出现错误
  1722.     Cw_DataEnvi.DataConnect.RollbackTrans
  1723.     With WglrGrid
  1724.         Tsxx = "存盘过程中出现未知错误,程序自动恢复保存前状态!"
  1725.         Call Xtxxts(Tsxx, 0, 1)
  1726.         Exit Function
  1727.     End With
  1728.     
  1729. Lrcwcl:        '录入错误处理(存盘前逐行有效性判断)
  1730.     With WglrGrid
  1731.         Call Xtxxts("(第 " & Trim(Str(Rowjsq - .FixedRows + 1)) & " 条单据分录)-" & Tsxx, 0, 1)
  1732.         Changelock = True
  1733.         .Select Rowjsq, Lrywlz
  1734.         WglrGrid.SetFocus
  1735.         Changelock = False
  1736.         Exit Function
  1737.     End With
  1738.     
  1739. End Function
  1740. '选择首张,上张,下张,末张(此4个过程只需用您的单据ID字段名替换"stockstandmainid"即可)
  1741. Private Sub Sub_First()             '首 张
  1742.     
  1743.     With Rec_Query
  1744.         If .RecordCount = 0 Then
  1745.             Exit Sub
  1746.         End If
  1747.         .MoveFirst
  1748.         Lab_BillId.Caption = .Fields("stockstandmainid")
  1749.         Call Sub_ShowBill
  1750.     End With
  1751.     
  1752. End Sub
  1753. Private Sub Sub_Prev()             '上 张
  1754.     
  1755.     With Rec_Query
  1756.         If .RecordCount = 0 Then
  1757.             Exit Sub
  1758.         End If
  1759.         If Not .BOF Then
  1760.             .MovePrevious
  1761.         End If
  1762.         If Not .BOF Then
  1763.             Lab_BillId.Caption = .Fields("stockstandmainid")
  1764.         Else
  1765.             .MoveNext
  1766.         End If
  1767.         Call Sub_ShowBill
  1768.     End With
  1769.     
  1770. End Sub
  1771. Private Sub Sub_Next()             '下 张
  1772.     With Rec_Query
  1773.         If .RecordCount = 0 Then
  1774.             Exit Sub
  1775.         End If
  1776.         If Not .EOF Then
  1777.             .MoveNext
  1778.         End If
  1779.         If Not .EOF Then
  1780.             Lab_BillId.Caption = .Fields("stockstandmainid")
  1781.         Else
  1782.             .MovePrevious
  1783.         End If
  1784.         Call Sub_ShowBill
  1785.     End With
  1786.     
  1787. End Sub
  1788. Private Sub Sub_Last()              '末 张
  1789.     
  1790.     With Rec_Query
  1791.         If .RecordCount = 0 Then
  1792.             Exit Sub
  1793.         End If
  1794.         .MoveLast
  1795.         Lab_BillId.Caption = .Fields("stockstandmainid")
  1796.         Call Sub_ShowBill
  1797.     End With
  1798.     
  1799. End Sub
  1800.     
  1801. '[>>===================以下为根据实际业务需要自定义过程区域=============================<<]
  1802. '[>>===================以上为根据实际业务需要自定义过程区域=============================<<]
  1803. '===================以 下 程 序 为 通 用 部 分 ,一 般 不 需 更 改(程序动作部分)======================='
  1804. Private Sub Sub_AdjustGrid()
  1805.     
  1806.     '调 整 网 格
  1807.     With WglrGrid
  1808.         '加 1 保持一行录入行
  1809.         If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  1810.             .Rows = Pmbcsjhs + .FixedRows + Fzxwghs + 1
  1811.             For Jsqte = .FixedRows To .Rows - 1
  1812.                 .RowHeight(Jsqte) = Sjhgd
  1813.             Next Jsqte
  1814.         End If
  1815.         
  1816.         '判断是否有辅助行和录入行,如没有则加行
  1817.         Do While .TextMatrix(.Rows - 1 - Fzxwghs, 0) = "*"
  1818.             .AddItem ""
  1819.             .RowHeight(.Rows - 1) = Sjhgd
  1820.         Loop
  1821.     
  1822.     End With
  1823.     
  1824. End Sub
  1825. Private Sub Lrzdbz()                                                      '录入字段帮助
  1826.     
  1827.     If Not Ydcommand.Visible Then
  1828.         Exit Sub
  1829.     End If
  1830.     
  1831.     With WglrGrid
  1832.         Valilock = True
  1833.         
  1834.         '处理通用部分
  1835.         Changelock = True        '调入另外窗体必须加锁
  1836.         Call Drbmhelp(GridInt(.Col, 6), GridStr(.Col, 3), Trim(Ydtext.Text))
  1837.         Changelock = False
  1838.         
  1839.         If Len(Xtfhcs) <> 0 Then
  1840.             If GridInt(.Col, 7) = 0 Then
  1841.                 Ydtext.Text = Xtfhcs
  1842.             Else
  1843.                 Ydtext.Text = Xtfhcsfz
  1844.             End If
  1845.         End If
  1846.         
  1847.         Valilock = False
  1848.         If Ydtext.Visible Then
  1849.             Ydtext.SetFocus
  1850.         End If
  1851.     End With
  1852.     
  1853. End Sub
  1854. Private Sub Cshhjwg()                                                     '初始化合计网格(*对合计网格来说,录入网格为容器)
  1855.     
  1856.     With HjGrid
  1857.         
  1858.         '是否显示合计网格
  1859.         If Not Sfxshjwg Then
  1860.             .Visible = False
  1861.             Exit Sub
  1862.         Else
  1863.             .Visible = True
  1864.         End If
  1865.         
  1866.         '设置网格相关属性
  1867.         .Enabled = False
  1868.         .Appearance = flexFlat
  1869.         .BorderStyle = flexBorderNone
  1870.         .ScrollBars = flexScrollBarNone
  1871.         .Width = WglrGrid.Width
  1872.         .FixedRows = 0
  1873.         .Rows = 1
  1874.         .Cols = WglrGrid.Cols
  1875.         .LeftCol = WglrGrid.LeftCol
  1876.         .TextMatrix(0, Qslz) = "合  计"
  1877.         For Jsqte = 0 To WglrGrid.Cols - 1
  1878.             .ColHidden(Jsqte) = WglrGrid.ColHidden(Jsqte)
  1879.             .ColWidth(Jsqte) = WglrGrid.ColWidth(Jsqte)
  1880.             .ColAlignment(Jsqte) = WglrGrid.ColAlignment(Jsqte)
  1881.             .ColFormat(Jsqte) = WglrGrid.ColFormat(Jsqte)
  1882.         Next Jsqte
  1883.         .ColAlignment(Qslz) = flexAlignCenterTop
  1884.         For Jsqte = .FixedRows To .Rows - 1
  1885.             .RowHeight(Jsqte) = .Height / .Rows
  1886.         Next Jsqte
  1887.         
  1888.         '程序自动调整网格高度(自动设置为网格剩余高度+辅助项网格行数(默认为1)*数据行高度)、并设置其位置信息
  1889.         .Height = Fzxwghs * Sjhgd + ((WglrGrid.Height - WglrGrid.FixedRows * WglrGrid.RowHeight(0)) Mod Sjhgd)
  1890.         .RowHeight(0) = .Height
  1891.         .Move 0, WglrGrid.Height - .Height, WglrGrid.Width, .Height
  1892.     End With
  1893.     
  1894. End Sub
  1895. Private Sub Form_Resize()                                                '窗体大小发生变化时,重新显示文本框
  1896.     Call Cxxswbk
  1897. End Sub
  1898. Private Function Fun_Drfrmyxxpd() As Boolean                             '调入其它窗体或功能产生的有效性判断(包括数据回写)
  1899.     Fun_Drfrmyxxpd = True
  1900.     With WglrGrid
  1901.         
  1902.         '如果当前网格处于编辑状态,则先进行数据回写再进行有效性判断
  1903.         If Ydtext.Visible Or YdCombo.Visible Then
  1904.             Call Lrsjhx
  1905.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  1906.                 Fun_Drfrmyxxpd = False
  1907.                 Exit Function
  1908.             End If
  1909.         End If
  1910.         
  1911.         '进行行有效性判断
  1912.         If Not Sjhzyxxpd(.Row) Then
  1913.             Fun_Drfrmyxxpd = False
  1914.             Exit Function
  1915.         End If
  1916.         
  1917.     End With
  1918.     
  1919. End Function
  1920. Private Sub WglrGrid_AfterUserResize(ByVal Row As Long, ByVal Col As Long)       '调整列宽
  1921.     
  1922.     If HjGrid.Visible Then
  1923.         With HjGrid
  1924.             .ColWidth(Col) = WglrGrid.ColWidth(Col)
  1925.         End With
  1926.     End If
  1927.     
  1928. End Sub
  1929. Private Sub WglrGrid_EnterCell()                                                 '显示当前数据行相关信息
  1930.     
  1931.     With WglrGrid
  1932.         If .Row >= .FixedRows Then
  1933.             '[>>
  1934.             '此处可以填写显示与此网格行相关信息
  1935.             '<<]
  1936.         End If
  1937.     End With
  1938.     
  1939. End Sub
  1940. Private Sub WglrGrid_GotFocus()                                     '网格得到焦点
  1941.     
  1942.     '网格得到焦点,如果当前选择行为非数据行
  1943.     '则调整当前焦点至有效数据行
  1944.     
  1945.     With WglrGrid
  1946.         If .Row < .FixedRows And .Rows > .FixedRows Then
  1947.             Changelock = True
  1948.             .Select .FixedRows, .Col
  1949.             Changelock = False
  1950.         End If
  1951.         If .Col < Qslz Then
  1952.             Changelock = True
  1953.             .Select .Row, Qslz
  1954.             Changelock = False
  1955.         End If
  1956.     End With
  1957.     
  1958. End Sub
  1959. Private Sub WglrGrid_LostFocus()                                    '录入网格失去焦点
  1960.     
  1961.     '用以屏蔽调用其它窗体时发生网格失去焦点事件
  1962.     If Changelock Then
  1963.         Exit Sub
  1964.     End If
  1965.     
  1966.     '引发网格RowcolChange事件
  1967.     With WglrGrid
  1968.         If Not (Ydtext.Visible Or YdCombo.Visible) Then
  1969.             .Select 0, 0
  1970.         End If
  1971.     End With
  1972.     
  1973. End Sub
  1974. Private Sub WglrGrid_AfterScroll(ByVal OldTopRow As Long, ByVal OldLeftCol As Long, ByVal NewTopRow As Long, ByVal NewLeftCol As Long)                                       '限制用户在录入过程中滚动鼠标
  1975.     
  1976.     If Gdtlock Then
  1977.         Exit Sub
  1978.     End If
  1979.     
  1980.     With WglrGrid
  1981.         If Ydtext.Visible Or YdCombo.Visible Then
  1982.             Gdtlock = True
  1983.             .TopRow = Dqtoprow
  1984.             .LeftCol = Dqleftcol
  1985.             Gdtlock = False
  1986.             Exit Sub
  1987.         End If
  1988.         HjGrid.LeftCol = .LeftCol
  1989.     End With
  1990.     
  1991. End Sub
  1992. Private Sub WglrGrid_LeaveCell()                                    '离开单元格
  1993.     
  1994.     If Changelock Then
  1995.         Exit Sub
  1996.     End If
  1997.     
  1998.     '记录刚刚离开网格单元的行列值
  1999.     Dqlkwgh = WglrGrid.Row
  2000.     Dqlkwgl = WglrGrid.Col
  2001.     
  2002.     '判断是否需要录入数据回写
  2003.     If Not (Ydtext.Visible Or YdCombo.Visible) Then
  2004.         Exit Sub
  2005.     End If
  2006.     Call Lrsjhx
  2007.     
  2008. End Sub
  2009. Private Sub WglrGrid_RowColChange()                                '网格录入行列发生变化时,进行有效性判断
  2010.     Valilock = True       '屏蔽文本框失去焦点进行有效性判断
  2011.     With WglrGrid
  2012.         If Changelock Then
  2013.             Exit Sub
  2014.         End If
  2015.         If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  2016.             Exit Sub
  2017.         End If
  2018.         If .Row <> Dqlkwgh Then
  2019.             If Not Sjhzyxxpd(Dqlkwgh) Then
  2020.                 Exit Sub
  2021.             End If
  2022.         End If
  2023.     End With
  2024.     
  2025.     Call fhyxh
  2026.     Call Xldql
  2027.     
  2028. End Sub
  2029. Private Sub WglrGrid_DblClick()          '鼠标双击网格显示文本框
  2030.     
  2031.     With WglrGrid
  2032.         Call xswbk
  2033.     End With
  2034.     
  2035. End Sub
  2036. Private Sub Ycwbk()                      '隐藏文本框,帮助按钮,列表组合框
  2037.     
  2038.     Valilock = True
  2039.     Ydtext.Visible = False
  2040.     YdCombo.Visible = False
  2041.     Ydcommand.Visible = False
  2042.     
  2043. End Sub
  2044. Private Sub YdCombo_KeyDown(KeyCode As Integer, Shift As Integer)        '列表框移动
  2045.     With WglrGrid
  2046.         Select Case KeyCode
  2047.         Case vbKeyEscape                'ESC 键放弃录入
  2048.             Valilock = True
  2049.             .SetFocus
  2050.             Call Ycwbk
  2051.             Valilock = False
  2052.         Case vbKeyReturn                '回 车 键 =13
  2053.             KeyCode = 0
  2054.             .SetFocus
  2055.             Call Lrsjhx
  2056.             Rowjsq = .Row
  2057.             Coljsq = .Col + 1
  2058.             If Coljsq > .Cols - 1 Then
  2059.                 If Rowjsq < .Rows - 1 Then
  2060.                     Rowjsq = Rowjsq + 1
  2061.                 End If
  2062.                 Coljsq = Qslz
  2063.             End If
  2064.             Do While Rowjsq <= .Rows - 1
  2065.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  2066.                     Coljsq = Coljsq + 1
  2067.                     If Coljsq > .Cols - 1 Then
  2068.                         Rowjsq = Rowjsq + 1
  2069.                         Coljsq = Qslz
  2070.                     End If
  2071.                 Else
  2072.                     Exit Do
  2073.                 End If
  2074.             Loop
  2075.             .Select Rowjsq, Coljsq
  2076.         Case vbKeyLeft                  '左 箭 头 =37
  2077.             If .Col - 1 = Qslz Then
  2078.                 If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  2079.                     GoTo jzzx
  2080.                 End If
  2081.             End If
  2082.             If .Col > Qslz Then
  2083.                 KeyCode = 0
  2084.                 .SetFocus
  2085.                 Call Lrsjhx
  2086.                 Coljsq = .Col - 1
  2087.                 Do While Coljsq > Qslz
  2088.                     If Coljsq - 1 = Qslz Then
  2089.                         If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  2090.                             GoTo jzzx
  2091.                         End If
  2092.                     End If
  2093.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  2094.                         Coljsq = Coljsq - 1
  2095.                     Else
  2096.                         Exit Do
  2097.                     End If
  2098.                 Loop
  2099.                 .Select .Row, Coljsq
  2100.             End If
  2101.         Case vbKeyRight                 '右 箭 头 =39
  2102.             KeyCode = 0
  2103.             .SetFocus
  2104.             Call Lrsjhx
  2105.             Rowjsq = .Row
  2106.             Coljsq = .Col + 1
  2107.             If Coljsq > .Cols - 1 Then
  2108.                 If Rowjsq < .Rows - 1 Then
  2109.                     Rowjsq = Rowjsq + 1
  2110.                 End If
  2111.                 Coljsq = Qslz
  2112.             End If
  2113.             Do While Rowjsq <= .Rows - 1
  2114.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  2115.                     Coljsq = Coljsq + 1
  2116.                     If Coljsq > .Cols - 1 Then
  2117.                         Rowjsq = Rowjsq + 1
  2118.                         Coljsq = Qslz
  2119.                     End If
  2120.                 Else
  2121.                     Exit Do
  2122.                 End If
  2123.             Loop
  2124.             .Select Rowjsq, Coljsq
  2125.         Case Else
  2126.         End Select
  2127.         
  2128. jzzx:
  2129.         
  2130.     End With
  2131.     
  2132. End Sub
  2133. Private Sub YdCombo_LostFocus()
  2134.     
  2135.     With WglrGrid                                    '因为选中网格会先发生Rowcolchange事件置Valiock
  2136.         If Not Valilock Then                           '为TRUE
  2137.             Call Lrsjhx
  2138.             If Not Sjhzyxxpd(Dqlrwgh) Then
  2139.                 Exit Sub
  2140.             End If
  2141.         End If
  2142.     End With
  2143.     
  2144. End Sub
  2145. Private Sub Ydcommand_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2146.     Call Lrzdbz
  2147. End Sub
  2148. Private Sub ydtext_KeyDown(KeyCode As Integer, Shift As Integer)
  2149.     Dim Rowjsq As Long, Coljsq As Long
  2150.     With WglrGrid
  2151.         Select Case KeyCode
  2152.         Case vbKeyF2
  2153.             Call Lrzdbz
  2154.         Case vbKeyEscape                'ESC 键放弃录入
  2155.             Valilock = True
  2156.             Call Ycwbk
  2157.             .SetFocus
  2158.         Case vbKeyReturn                '回 车 键 =13
  2159.             KeyCode = 0
  2160.             .SetFocus
  2161.             Call Lrsjhx
  2162.             Rowjsq = .Row
  2163.             Coljsq = .Col + 1
  2164.             If Coljsq > .Cols - 1 Then
  2165.                 If Rowjsq < .Rows - 1 Then
  2166.                     Rowjsq = Rowjsq + 1
  2167.                 End If
  2168.                 Coljsq = Qslz
  2169.             End If
  2170.             Do While Rowjsq <= .Rows - 1
  2171.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  2172.                     Coljsq = Coljsq + 1
  2173.                     If Coljsq > .Cols - 1 Then
  2174.                         Rowjsq = Rowjsq + 1
  2175.                         Coljsq = Qslz
  2176.                     End If
  2177.                 Else
  2178.                     Exit Do
  2179.                 End If
  2180.             Loop
  2181.             If Rowjsq <= .Rows - 1 Then
  2182.                 .Select Rowjsq, Coljsq
  2183.             End If
  2184.         Case vbKeyUp                    '上 箭 头 =38
  2185.             KeyCode = 0
  2186.             .SetFocus
  2187.             Call Lrsjhx
  2188.             If .Row > .FixedRows Then
  2189.                 .Row = .Row - 1
  2190.             End If
  2191.         Case vbKeyDown                  '下 箭 头 =40
  2192.             KeyCode = 0
  2193.             .SetFocus
  2194.             Call Lrsjhx
  2195.             If .Row < .Rows - 1 Then
  2196.                 .Row = .Row + 1
  2197.             End If
  2198.         Case vbKeyLeft                  '左 箭 头 =37
  2199.             If .Col - 1 = Qslz Then
  2200.                 If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  2201.                     GoTo jzzx
  2202.                 End If
  2203.             End If
  2204.             If Ydtext.SelStart = 0 And .Col > Qslz Then
  2205.                 KeyCode = 0
  2206.                 .SetFocus
  2207.                 Call Lrsjhx
  2208.                 Coljsq = .Col - 1
  2209.                 Do While Coljsq > Qslz
  2210.                     If Coljsq - 1 = Qslz Then
  2211.                         If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  2212.                             GoTo jzzx
  2213.                         End If
  2214.                     End If
  2215.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  2216.                         Coljsq = Coljsq - 1
  2217.                     Else
  2218.                         Exit Do
  2219.                     End If
  2220.                 Loop
  2221.                 .Select .Row, Coljsq
  2222.             End If
  2223. jzzx:
  2224.         Case vbKeyRight                 '右 箭 头 =39
  2225.             wblong = Len(Ydtext.Text)
  2226.             If (Ydtext.SelStart = wblong Or Ydtext.SelLength = wblong) Then
  2227.                 KeyCode = 0
  2228.                 .SetFocus
  2229.                 Call Lrsjhx
  2230.                 Rowjsq = .Row
  2231.                 Coljsq = .Col + 1
  2232.                 If Coljsq > .Cols - 1 Then
  2233.                     If Rowjsq < .Rows - 1 Then
  2234.                         Rowjsq = Rowjsq + 1
  2235.                     End If
  2236.                     Coljsq = Qslz
  2237.                 End If
  2238.                 Do While Rowjsq <= .Rows - 1
  2239.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  2240.                         Coljsq = Coljsq + 1
  2241.                         If Coljsq > .Cols - 1 Then
  2242.                             Rowjsq = Rowjsq + 1
  2243.                             Coljsq = Qslz
  2244.                         End If
  2245.                     Else
  2246.                         Exit Do
  2247.                     End If
  2248.                 Loop
  2249.                 .Select Rowjsq, Coljsq
  2250.             End If
  2251.         Case Else
  2252.         End Select
  2253.     End With
  2254.     
  2255. End Sub
  2256. Private Sub ydtext_KeyPress(KeyAscii As Integer)         '录入字符事中控制
  2257.     
  2258.     Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  2259.     If KeyAscii <> 0 Then
  2260.         Call Xyxhbz(Dqlrwgh)
  2261.     End If
  2262.     
  2263. End Sub
  2264. Private Sub ydtext_Change()                              '录入事中变化处理
  2265.     
  2266.     '防止程序改变但不进行处理
  2267.     
  2268.     If Wbkbhlock Then
  2269.         Exit Sub
  2270.     End If
  2271.     
  2272.     With WglrGrid
  2273.         '限制字段录入长度
  2274.         Wbkbhlock = True
  2275.         
  2276.         Call TextChangeLimit(Ydtext, GridInt(.Col, 1))  '去掉无效字符
  2277.         
  2278.         Select Case GridInt(.Col, 1)
  2279.         Case 8, 11   '金额型
  2280.             Call Sjgskz(Ydtext, Xtjezws - Xtjexsws - 1, Xtjexsws)
  2281.         Case 9, 12   '数量型
  2282.             Call Sjgskz(Ydtext, Xtslzws - Xtslxsws - 1, Xtslxsws)
  2283.         Case 10      '单价型
  2284.             Call Sjgskz(Ydtext, Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  2285.         Case Else    '其他类型
  2286.             If GridInt(.Col, 3) <> 0 Or GridInt(.Col, 4) <> 0 Then
  2287.                 Call Sjgskz(Ydtext, GridInt(.Col, 3), GridInt(.Col, 4))
  2288.             End If
  2289.         End Select
  2290.         Wbkbhlock = False
  2291.     End With
  2292.     
  2293. End Sub
  2294. Private Sub ydtext_LostFocus()            '如果由于选中网格之外的控件而发生有效性判断(选中网格会先发生Rowcolchange事件置Valiock为TRUE)
  2295.     
  2296.     With WglrGrid
  2297.         If Not Valilock Then
  2298.             Call Lrsjhx
  2299.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  2300.                 Exit Sub
  2301.             End If
  2302.             If Not Sjhzyxxpd(Dqlrwgh) Then
  2303.                 Exit Sub
  2304.             End If
  2305.         End If
  2306.     End With
  2307.     
  2308. End Sub
  2309. Private Sub xswbk()                       '在当前选中单元显示文本框,列表框,帮助按钮(通用)
  2310.     
  2311.     Dim Wbkpy As Integer, Wbkpy1 As Integer '文本框偏移量
  2312.     
  2313.     '当某种条件成立时禁止文本框激活使单据处于录入状态
  2314.     If Not Fun_AllowInput Then
  2315.         Exit Sub
  2316.     End If
  2317.     
  2318.     '显示文本框前返回有效行列(解决滚动条问题)
  2319.     Call Xldqh
  2320.     Call Xldql
  2321.     
  2322.     '隐藏文本框,帮助按钮,列表组合框
  2323.     Call Ycwbk
  2324.     
  2325.     With WglrGrid
  2326.         Dqlrwgh = .Row
  2327.         Dqlrwgl = .Col
  2328.         If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  2329.             Exit Sub
  2330.         End If
  2331.         
  2332.         Wbkpy = 30
  2333.         Wbkpy1 = 15
  2334.         
  2335.         On Error Resume Next
  2336.         
  2337.         If GridBoolean(.Col, 3) Then
  2338.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  2339.             YdCombo.Top = .CellTop + .Top + Wbkpy
  2340.             YdCombo.Width = .CellWidth - Wbkpy1
  2341.             Call Wbkcl
  2342.             YdCombo.Visible = True
  2343.             YdCombo.SetFocus
  2344.             Ydcommand.Visible = False
  2345.             Ydtext.Visible = False
  2346.         Else
  2347.             If GridBoolean(.Col, 2) Then
  2348.                 Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  2349.                 Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  2350.                 Ydcommand.Visible = True
  2351.             Else
  2352.                 Ydcommand.Visible = False
  2353.             End If
  2354.             
  2355.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  2356.             Ydtext.Top = .CellTop + .Top + Wbkpy
  2357.             If Ydcommand.Visible Then
  2358.                 If Sfblbzkd Then
  2359.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  2360.                 Else
  2361.                     Ydtext.Width = .CellWidth - Wbkpy1
  2362.                 End If
  2363.             Else
  2364.                 Ydtext.Width = .CellWidth - Wbkpy1
  2365.             End If
  2366.             Ydtext.Height = .CellHeight - Wbkpy1
  2367.             
  2368.             If GridInt(.Col, 2) <> 0 Then
  2369.                 Ydtext.MaxLength = GridInt(.Col, 2)
  2370.             Else
  2371.                 Ydtext.MaxLength = 3000
  2372.             End If
  2373.             
  2374.             Call Wbkcl
  2375.             
  2376.             Ydtext.Visible = True
  2377.             Ydtext.SetFocus
  2378.         End If
  2379.         Dqtoprow = .TopRow
  2380.         Dqleftcol = .LeftCol
  2381.         
  2382.         '重置锁值
  2383.         Valilock = False
  2384.         Wbkbhlock = False
  2385.     End With
  2386.     
  2387. End Sub
  2388. Private Function Fun_AllowInput() As Boolean                           '当某种条件成立时禁止文本框激活使单据处于录入状态
  2389.     
  2390.     '如果单据操作状态为浏览状态则不能显示录入载体(通用)
  2391.     If Trim(Lab_OperStatus.Caption) = "1" Then
  2392.         Exit Function
  2393.     End If
  2394.     
  2395.     '[>>
  2396.     
  2397.     '此处可以填写禁止文本框激活使单据处于录入状态的理由
  2398.     
  2399.     '<<]
  2400.     
  2401.     Fun_AllowInput = True
  2402.     
  2403. End Function
  2404. Private Sub Cxxswbk()                                                  'Formresize中重新显示文本框,列表框,帮助按钮(通用)
  2405.     
  2406.     Dim Wbkpy As Integer, Wbkpy1 As Integer
  2407.     Wbkpy = 30
  2408.     Wbkpy1 = 15
  2409.     With WglrGrid
  2410.         If YdCombo.Visible Then
  2411.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  2412.             YdCombo.Top = .CellTop + .Top + Wbkpy
  2413.             YdCombo.Width = .CellWidth - Wbkpy1
  2414.         End If
  2415.         If Ydcommand.Visible Then
  2416.             Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  2417.             Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  2418.         End If
  2419.         If Ydtext.Visible Then
  2420.             If Ydcommand.Visible Then
  2421.                 If Sfblbzkd Then
  2422.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  2423.                 Else
  2424.                     Ydtext.Width = .CellWidth - Wbkpy1
  2425.                 End If
  2426.             Else
  2427.                 Ydtext.Width = .CellWidth - Wbkpy1
  2428.             End If
  2429.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  2430.             Ydtext.Top = .CellTop + .Top + Wbkpy
  2431.             Ydtext.Height = .CellHeight - Wbkpy1
  2432.         End If
  2433.     End With
  2434.     
  2435. End Sub
  2436. Private Sub Lrsjhx()                                                   '文本框录入数据回写
  2437.     
  2438.     With WglrGrid
  2439.         If YdCombo.Visible Then
  2440.             .Text = Trim(YdCombo.Text)
  2441.         End If
  2442.         If Ydtext.Visible Then
  2443.             .Text = Trim(Ydtext.Text)
  2444.         End If
  2445.         
  2446.         '(如果字段录入内容发生变化,则打开有效性判断锁)
  2447.         If Zdlrqnr <> Trim(.Text) Then
  2448.             Yxxpdlock = False
  2449.             Hyxxpdlock = False
  2450.         End If
  2451.         
  2452.         '如果字段录入内容不为空则写数据行有效性标志
  2453.         If Len(Trim(.Text)) <> 0 Then
  2454.             Call Xyxhbz(.Row)
  2455.         End If
  2456.         
  2457.         '隐藏文本框,帮助按钮,列表组合框
  2458.         Call Ycwbk
  2459.     End With
  2460.     
  2461. End Sub
  2462. Private Sub WglrGrid_KeyDown(KeyCode As Integer, Shift As Integer)    '网格录入增行,删行快捷键
  2463.     
  2464.     '如果单据操作状态为浏览状态则不能显示录入载体
  2465.     If Trim(Lab_OperStatus.Caption) = "1" Then
  2466.         Exit Sub
  2467.     End If
  2468.     
  2469.     Select Case KeyCode
  2470.     Case vbKeyF2                   '按F2键参照
  2471.         Call xswbk
  2472.         Call Lrzdbz
  2473.     Case vbKeyDelete               '删行
  2474.         Call Scdqfl
  2475.     Case vbKeyInsert               '增行
  2476.         Call zjlrfl
  2477.     End Select
  2478.     
  2479. End Sub
  2480. Private Sub WglrGrid_KeyPress(KeyAscii As Integer)                             '网格接受键盘录入
  2481.     
  2482.     '当某种条件成立时禁止文本框激活使单据处于录入状态
  2483.     If Not Fun_AllowInput Then
  2484.         Exit Sub
  2485.     End If
  2486.     
  2487.     With WglrGrid
  2488.         '屏 蔽 回 车 键
  2489.         If KeyAscii = vbKeyReturn Then
  2490.             KeyAscii = 0
  2491.             Rowjsq = .Row
  2492.             Coljsq = .Col + 1
  2493.             If Coljsq > .Cols - 1 Then
  2494.                 If Rowjsq < .Rows - 1 Then
  2495.                     Rowjsq = Rowjsq + 1
  2496.                 End If
  2497.                 Coljsq = Qslz
  2498.             End If
  2499.             Do While Rowjsq <= .Rows - 1
  2500.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  2501.                     Coljsq = Coljsq + 1
  2502.                     If Coljsq > .Cols - 1 Then
  2503.                         Rowjsq = Rowjsq + 1
  2504.                         Coljsq = Qslz
  2505.                     End If
  2506.                 Else
  2507.                     Exit Do
  2508.                 End If
  2509.             Loop
  2510.             If Rowjsq <= .Rows - 1 Then
  2511.                 .Select Rowjsq, Coljsq
  2512.             End If
  2513.             Exit Sub
  2514.         End If
  2515.         
  2516.         '接受用户录入
  2517.         Select Case KeyAscii
  2518.         Case 0 To 32             '用户输入KeyAscii为0-32的键 如空格
  2519.             '显示录入载体
  2520.             Call xswbk
  2521.         Case Else
  2522.             '防止非编辑字段SendKeys()出现死循环
  2523.             If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  2524.                 Exit Sub
  2525.             End If
  2526.             '如果此字段为列表框录入则调入相应列表框
  2527.             If GridBoolean(.Col, 3) Then
  2528.                 '列表框录入
  2529.                 Call xswbk
  2530.             Else
  2531.                 Ydtext.Text = ""
  2532.                 '录入限制
  2533.                 Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  2534.                 If KeyAscii = 0 Then
  2535.                     Exit Sub
  2536.                 End If
  2537.                 '如果录入字符有效则写有效行数据标志
  2538.                 Call Xyxhbz(.Row)
  2539.                 Call xswbk
  2540.                 Ydtext.Text = ""
  2541.                 Valilock = True
  2542.                 SendKeys Chr(KeyAscii), True
  2543.                 DoEvents
  2544.                 Valilock = False
  2545.             End If
  2546.         End Select
  2547.     End With
  2548.     
  2549. End Sub
  2550. Private Sub zjlrfl()                                                    '增加录入分录
  2551.     
  2552.     With WglrGrid
  2553.         If Not (Ydtext.Visible Or YdCombo.Visible) Then
  2554.             If Not Fun_Drfrmyxxpd Then
  2555.                 Exit Sub
  2556.             End If
  2557.         Else
  2558.             Exit Sub
  2559.         End If
  2560.         If .Row < .FixedRows Then
  2561.             Exit Sub
  2562.         End If
  2563.         .AddItem "", .Row
  2564.         .RowHeight(.Row) = Sjhgd
  2565.         If .Row <> .Rows - 1 Then
  2566.             If .TextMatrix(.Row + 1, 0) = "*" Then
  2567.                 .TextMatrix(.Row, 0) = "*"
  2568.             Else
  2569.                 .RemoveItem .Rows - 1
  2570.             End If
  2571.         End If
  2572.         Call Xldqh
  2573.         Call Xldql
  2574.         Hyxxpdlock = False
  2575.     End With
  2576.     
  2577. End Sub
  2578. Private Sub Scdqfl()                                                    '删除当前分录
  2579.     Dim Answer As Integer, Scqwghz As Long, Scqwglz As Long, Hjlzte As Long, Sflrzt As Boolean
  2580.     With WglrGrid
  2581.         Scqwghz = .Row
  2582.         Scqwglz = .Col
  2583.         If .TextMatrix(.Row, 0) = "*" Then
  2584.             '判断是否为录入状态
  2585.             If Ydtext.Visible Or YdCombo.Visible Then
  2586.                 Sflrzt = True
  2587.                 Validate = True
  2588.                 Call Lrsjhx
  2589.                 Validate = False
  2590.             End If
  2591.             Call Xldqh
  2592.             Changelock = True
  2593.             .Select .Row, 0
  2594.             Changelock = False
  2595.             If Shsfts Then
  2596.                 .Cell(flexcpBackColor, .Row, Qslz, .Row, .Cols - 1) = QBColor(12)
  2597.                 Tsxx = "请确认是否删除当前记录?"
  2598.                 yhAnswer = Xtxxts(Tsxx, 2, 2)
  2599.                 If yhAnswer = 2 Then
  2600.                     .Cell(flexcpBackColor, .Row, Qslz, .Row, .Cols - 1) = &H80000005
  2601.                     Changelock = True
  2602.                     .Select Scqwghz, Scqwglz
  2603.                     Changelock = False
  2604.                     
  2605.                     '如为录入状态,则恢复录入
  2606.                     If Sflrzt Then
  2607.                         Call xswbk
  2608.                     End If
  2609.                     Exit Sub
  2610.                 End If
  2611.             End If
  2612.             .RemoveItem .Row
  2613.             If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  2614.                 .AddItem ""
  2615.                 .RowHeight(.Rows - 1) = Sjhgd
  2616.             End If
  2617.             Changelock = True
  2618.             .Select .Row, Scqwglz
  2619.             Changelock = False
  2620.             
  2621.         End If
  2622.     End With
  2623.     
  2624. End Sub
  2625. Private Sub Sjhj(Hjwgl As Long)                                         '网格列数据合计
  2626.     
  2627.     Dim Hjjg As Double
  2628.     If Not GridBoolean(Hjwgl, 4) Then
  2629.         Exit Sub
  2630.     End If
  2631.     With WglrGrid
  2632.         Hjjg = 0
  2633.         For Jsqte = .FixedRows To .Rows - 1
  2634.             If .TextMatrix(Jsqte, 0) = "*" Then
  2635.                 Hjjg = Hjjg + Val(.TextMatrix(Jsqte, Hjwgl))
  2636.             End If
  2637.         Next Jsqte
  2638.         If GridBoolean(Hjwgl, 5) And Hjjg = 0 Then
  2639.             HjGrid.TextMatrix(0, Hjwgl) = ""
  2640.         Else
  2641.             HjGrid.TextMatrix(0, Hjwgl) = Hjjg
  2642.         End If
  2643.     End With
  2644.     
  2645. End Sub
  2646. Private Sub Qkwlzd(sjh As Long, Sjl As Long)                            '清空为零字段
  2647.     
  2648.     If Not GridBoolean(Sjl, 5) Then
  2649.         Exit Sub
  2650.     End If
  2651.     With WglrGrid
  2652.         If Val(Trim(.TextMatrix(sjh, Sjl))) = 0 Then
  2653.             .TextMatrix(sjh, Sjl) = ""
  2654.         End If
  2655.     End With
  2656.     
  2657. End Sub
  2658. Private Sub fhyxh()                                                     '返回录入数据有效行,同时让得到焦点网格可见
  2659.     
  2660.     With WglrGrid
  2661.         If .Row >= .FixedRows Then
  2662.             If .TextMatrix(.Row, 0) <> "*" Then
  2663.                 For Rowjsq = .FixedRows To .Rows - 1
  2664.                     If .TextMatrix(Rowjsq, 0) <> "*" Then
  2665.                         Exit For
  2666.                     End If
  2667.                 Next Rowjsq
  2668.                 If Rowjsq <= .Rows - 1 Then
  2669.                     Changelock = True
  2670.                     .Select Rowjsq, .Col
  2671.                     Changelock = False
  2672.                 Else
  2673.                     Changelock = True
  2674.                     .Select .Rows - 1, .Col
  2675.                     Changelock = False
  2676.                 End If
  2677.             End If
  2678.             Call Xldqh
  2679.         End If
  2680.     End With
  2681.     
  2682. End Sub
  2683. Private Sub Xldqh()                                                      '显露当前行
  2684.     
  2685.     Dim Toprowte As Long
  2686.     With WglrGrid
  2687.         Toprowte = 0
  2688.         Do While .CellTop + .RowHeight(.Row) + Fzxwghs * Sjhgd > .Height And .TopRow <> Toprowte
  2689.             Toprowte = .TopRow
  2690.             .TopRow = .TopRow + 1
  2691.         Loop
  2692.         Toprowte = 0
  2693.         Do While .CellTop < .FixedRows * .RowHeight(0) And .TopRow <> Toprowte
  2694.             Toprowte = .TopRow
  2695.             If .TopRow > 1 Then
  2696.                 .TopRow = .TopRow - 1
  2697.             End If
  2698.         Loop
  2699.     End With
  2700.     
  2701. End Sub
  2702. Private Sub Xldql()                                                     '显露当前列
  2703.     
  2704.     Dim Leftcolte As Long
  2705.     With WglrGrid
  2706.         If .Col >= Qslz And .Col >= .FixedCols Then
  2707.             If .LeftCol > .Col Then
  2708.                 .LeftCol = .Col
  2709.             End If
  2710.             Leftcolte = 0
  2711.             Do While .CellLeft + .CellWidth > .Width And .LeftCol <> Leftcolte
  2712.                 Leftcolte = .LeftCol
  2713.                 .LeftCol = .LeftCol + 1
  2714.             Loop
  2715.         End If
  2716.     End With
  2717.     
  2718. End Sub
  2719. Private Function pdhwk(sjh As Long)                                     '判断网格行是否为空行(所有录入字段均为空*非录入字段除外)
  2720.     
  2721.     With WglrGrid
  2722.         For Coljsq = Qslz To .Cols - 1
  2723.             If Len(Trim(.TextMatrix(sjh, Coljsq))) <> 0 And GridBoolean(Coljsq, 1) Then
  2724.                 pdhwk = False
  2725.                 Exit Function
  2726.             End If
  2727.         Next Coljsq
  2728.         pdhwk = True
  2729.     End With
  2730.     
  2731. End Function
  2732. Private Sub Xyxhbz(sjh As Long)                                         '写行有效性标志,并判断是否增行
  2733.     
  2734.     With WglrGrid
  2735.         If .TextMatrix(sjh, 0) = "*" Then
  2736.             Exit Sub
  2737.         End If
  2738.         .TextMatrix(sjh, 0) = "*"
  2739.         If sjh >= .Rows - Fzxwghs - 1 Then
  2740.             .AddItem ""
  2741.             .RowHeight(.Rows - 1) = Sjhgd
  2742.         End If
  2743.     End With
  2744.     
  2745. End Sub
  2746. '*****************************以下为文本框录入处理程序(固定不变部分)*******************************'
  2747. Private Sub Wbklrwbcl(Index As Integer)    '文本框录入事后处理程序
  2748.     
  2749.     '以下为依据实际情况自定义部分[
  2750.     '在此填写文本框录入事后处理程序
  2751.   If LrText(1).Enabled = False Or LrText(1) = "" Then Exit Sub
  2752.   Select Case Index
  2753.     Case 1
  2754.       str_TempSql = "select a.*,b.mname,b.model from qc_stockmaterial a left join gy_material b on a.mnumber=b.mnumber where a.mnumber='" & Trim(LrText(1)) & "' "
  2755.       Set rs_Temp = Cw_DataEnvi.DataConnect.Execute(str_TempSql)
  2756.       With rs_Temp
  2757.         If .EOF() Then
  2758.           Call Xtxxts("请先在进料物料编码中定义该物料属性!", 0, 1)
  2759.           LrText(1).Text = ""
  2760.           Exit Sub
  2761.         Else
  2762.           LrText(2) = Trim(rs_Temp.Fields("mname") & "")
  2763.           LrText(3) = Trim(rs_Temp.Fields("model") & "")
  2764.           LrText(4).Tag = Trim(rs_Temp.Fields("checksortcode") & "")
  2765.         End If
  2766.         str_TempSql = "select a.gradecode,a.gradename,b.checksortname from qc_grade a left join qc_checksort b on a.checksortcode=b.checksortcode where a.checksortcode='" & Trim(LrText(4).Tag & "") & "' and a.gradecode not in (select distinct gradecode from QC_stockStandMain where mnumber='" & Trim(LrText(1) & "") & "') order by a.gradecode"
  2767.         If .State = 1 Then .Close
  2768.         Set rs_Temp = Cw_DataEnvi.DataConnect.Execute(str_TempSql)
  2769.            If rs_Temp.RecordCount > 0 Then      '有尚未建立的等级
  2770.              LrText(4) = Trim(rs_Temp.Fields("checksortname"))
  2771.              LrText(5) = Trim(rs_Temp.Fields("gradename"))
  2772.              LrText(5).Tag = Trim(rs_Temp.Fields("gradecode"))
  2773.            Else
  2774.              Call Xtxxts("此物料所有等级的标准都已建立,不能新建!", 0, 4)
  2775.              TextValiLock = True
  2776.              LrText(1) = ""
  2777.              If LrText(1).Enabled = True Then LrText(1).SetFocus
  2778.              TextShow (1)
  2779.              LrText(2) = ""
  2780.              LrText(3) = ""
  2781.              LrText(4) = ""
  2782.              LrText(4).Tag = ""
  2783.              LrText(5) = ""
  2784.              LrText(5).Tag = ""
  2785.              TextValiLock = False
  2786.              Exit Sub
  2787.            End If
  2788.      End With
  2789.   End Select
  2790.     ']以上为依据实际情况自定义部分
  2791.     
  2792. End Sub
  2793. Private Sub LrText_Change(Index As Integer)
  2794.     
  2795.     '屏蔽程序改变控制
  2796.     If TextChangeLock Then
  2797.         Exit Sub
  2798.     End If
  2799.     
  2800.     TextValiJudgeLock(Index) = False    '打开有效性判断锁
  2801.     
  2802.     '限制字段录入长度
  2803.     
  2804.     TextChangeLock = True  '加锁(防止执行Lrtext_Change)
  2805.     
  2806.     Call TextChangeLimit(LrText(Index), Textint(Index, 1))  '去掉无效字符
  2807.     
  2808.     Select Case Textint(Index, 1)
  2809.     Case 8, 11       '金额型
  2810.         Call Sjgskz(LrText(Index), Xtjezws - Xtjexsws - 1, Xtjexsws)
  2811.     Case 9, 12       '数量型
  2812.         Call Sjgskz(LrText(Index), Xtslzws - Xtslxsws - 1, Xtslxsws)
  2813.     Case 10          '单价型
  2814.         Call Sjgskz(LrText(Index), Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  2815.     Case Else        '其他小数类型控制
  2816.         If Textint(Index, 6) <> 0 Or Textint(Index, 7) <> 0 Then
  2817.             Call Sjgskz(LrText(Index), Textint(Index, 6), Textint(Index, 7))
  2818.         End If
  2819.     End Select
  2820.     
  2821.     TextChangeLock = False '解锁
  2822.     
  2823. End Sub
  2824. Private Sub LrText_GotFocus(Index As Integer)                                                 '文本框得到焦点,显示相应信息
  2825.     Call TextShow(Index)
  2826. End Sub
  2827. Private Sub LrText_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)            '字段按F2键提供帮助
  2828.     
  2829.     Select Case KeyCode
  2830.     Case vbKeyF2
  2831.         Call Text_Help(Index)
  2832.     End Select
  2833.     
  2834. End Sub
  2835. Private Sub LrText_KeyPress(Index As Integer, KeyAscii As Integer)                            '文本框录入事中控制
  2836.     Call InputFieldLimit(LrText(Index), Textint(Index, 1), KeyAscii)
  2837. End Sub
  2838. Private Sub LrText_LostFocus(Index As Integer)                                                '文本框失去焦点进行有效性判断及相应处理
  2839.     
  2840.     If Textint(Index, 9) = 0 Or Textint(Index, 9) = 1 Then '事中判断
  2841.         Call TextYxxpd(Index)
  2842.     End If
  2843.     
  2844. End Sub
  2845. Private Sub Ydcommand1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) '点击按钮
  2846.   Me.bln_Help = True
  2847.     Call Text_Help(Ydcommand1.Tag)
  2848.   Me.bln_Help = False
  2849. End Sub
  2850. Private Sub Text_Help(Index As Integer)                                                       '录入字段帮助
  2851.     
  2852.     If Not Ydcommand1.Visible Then
  2853.         Exit Sub
  2854.     End If
  2855.     TextValiLock = True
  2856.     Call Drbmhelp(Textint(Index, 2), Textstr(Index, 4), Trim(LrText(Index).Text))
  2857.     If Len(Xtfhcs) <> 0 Then
  2858.         If Textint(Index, 3) = 1 Then
  2859.             LrText(Index).Text = Xtfhcsfz
  2860.             LrText(Index).Tag = Xtfhcs
  2861.         Else
  2862.             LrText(Index).Text = Xtfhcs
  2863.             LrText(Index).Tag = Xtfhcsfz
  2864.         End If
  2865.     End If
  2866.     TextValiLock = False
  2867.     LrText(Index).SetFocus
  2868.     
  2869.     '[<<   zjs  加下   '为了能使其自动带出
  2870.     If (Index = 1) And Len(Xtfhcs) <> 0 Then
  2871.         Call LrText_LostFocus(Index)
  2872.     End If
  2873.     '>>] zjs 加上
  2874. End Sub
  2875. Private Sub TextShow(Index As Integer)        '文本框得到焦点,显示相应信息
  2876.     
  2877.     '如果文本框有帮助,则显示帮助按钮
  2878.     If Textboolean(Index, 1) Then
  2879.         Ydcommand1.Visible = True
  2880.         Ydcommand1.Move LrText(Index).Left + LrText(Index).Width, LrText(Index).Top
  2881.         Ydcommand1.Tag = Index
  2882.     Else
  2883.         Ydcommand1.Tag = ""
  2884.         Ydcommand1.Visible = False
  2885.     End If
  2886.     
  2887.     '[>>
  2888.     '可在此处定义其他处理动作
  2889.     '<<]
  2890.     
  2891. End Sub
  2892. Private Sub Wbkcsh()                          '录入文本框初始化
  2893.     
  2894.     Dim Int_TabIndex As Integer         'Tab焦点计数器
  2895.     
  2896.     '单据录入中文本框焦点由0开始
  2897.     LrText(0).TabIndex = 0
  2898.     
  2899.     '最大录入文本框索引值
  2900.     Max_Text_Index = Textvar(1)
  2901.     
  2902.     ReDim TextValiJudgeLock(Max_Text_Index)
  2903.     For Jsqte = 0 To Max_Text_Index
  2904.         
  2905.         '判断此文本框录入索引号是否存在,如存在则对其进行初始化
  2906.         If Len(Trim(Textstr(Jsqte, 1))) <> 0 Then
  2907.             
  2908.             '自动装入录入文本框和其解释标签
  2909.             If Jsqte <> 0 Then
  2910.                 Load LrText(Jsqte)
  2911.                 Load TsLabel(Jsqte)
  2912.                 
  2913.                 '判断录入文本框是否显示
  2914.                 If Textboolean(Jsqte, 4) Then
  2915.                     LrText(Jsqte).Visible = True
  2916.                     TsLabel(Jsqte).Visible = True
  2917.                 End If
  2918.                 
  2919.                 '判断文本框是否可编辑
  2920.                 If Textboolean(Jsqte, 5) Then
  2921.                     LrText(Jsqte).Enabled = True
  2922.                 Else
  2923.                     LrText(Jsqte).Enabled = False
  2924.                 End If
  2925.             End If
  2926.             
  2927.             '初始化其内容
  2928.             TextChangeLock = True
  2929.             LrText(Jsqte).Text = ""
  2930.             LrText(Jsqte).Tag = ""
  2931.             If Textint(Jsqte, 5) <> 0 Then
  2932.                 LrText(Jsqte).MaxLength = Textint(Jsqte, 5)
  2933.             End If
  2934.             TextChangeLock = False
  2935.             
  2936.             '设置文本框位置及大小,并设置相应标签内容及其位置
  2937.             LrText(Jsqte).Move Textint(Jsqte, 13), Textint(Jsqte, 12), Textint(Jsqte, 11), Textint(Jsqte, 10)
  2938.             TsLabel(Jsqte).Caption = Textstr(Jsqte, 7) & ":"
  2939.             TsLabel(Jsqte).Move Textint(Jsqte, 13) - TsLabel(Jsqte).Width - 20, Textint(Jsqte, 12) + (Textint(Jsqte, 10) - TsLabel(Jsqte).Height) / 2 - 30
  2940.             
  2941.         End If
  2942.         
  2943.         '将文本框有效性判断进行加锁,在文本框内容发生变化时将锁打开
  2944.         TextValiJudgeLock(Jsqte) = True
  2945.         
  2946.     Next Jsqte
  2947.     
  2948.     '设置文本框焦点转移顺序(前提文本焦点从0至Max_Text_Index)
  2949.     For Int_TabIndex = 0 To Max_Text_Index
  2950.         For Jsqte = 0 To Max_Text_Index
  2951.             If Textint(Jsqte, 14) = Int_TabIndex Then
  2952.                 LrText(Jsqte).TabIndex = Int_TabIndex
  2953.             End If
  2954.         Next Jsqte
  2955.     Next Int_TabIndex
  2956.     
  2957. End Sub
  2958. Private Function TextYxxpd(Index As Integer) As Boolean           '文本框有效性判断
  2959.     
  2960.     Dim Sqlstr As String
  2961.     Dim Findrec As New ADODB.Recordset
  2962.     
  2963.     '按帮助不进行有效性判断
  2964.     
  2965.     If TextValiLock Then
  2966.         TextValiLock = False
  2967.         TextYxxpd = True
  2968.         Exit Function
  2969.     End If
  2970.     
  2971.     '文本框内容未曾改变不进行有效性判断
  2972.     
  2973.     If TextValiJudgeLock(Index) Then
  2974.         Ydcommand1.Visible = False
  2975.         TextYxxpd = True
  2976.         Exit Function
  2977.     End If
  2978.     
  2979.     '文本框内容为空认为有效,并清空其Tag值
  2980.     
  2981.     If Trim(LrText(Index)) = "" Then
  2982.         LrText(Index).Tag = ""
  2983.         Call Wbklrwbcl(Index)
  2984.         Ydcommand1.Visible = False
  2985.         TextValiJudgeLock(Index) = True
  2986.         TextYxxpd = True
  2987.         Exit Function
  2988.     End If
  2989.     
  2990.     '[>>
  2991.     
  2992.     '可在此加入不做有效性判断的理由(参照上面程序)
  2993.     
  2994.     '<<]
  2995.     
  2996.     Select Case Textint(Index, 4)
  2997.     Case 1      '编码型
  2998.         Sqlstr = Trim(Textstr(Index, 5))
  2999.         Sqlstr = Replace(Sqlstr, "@", "'" + Trim(LrText(Index).Text) + "'")
  3000.         Set Findrec = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  3001.         If Findrec.EOF Then
  3002.             Sqlstr = "select mnumber,mname from gy_material where mnumber=@ or mname=@"
  3003.             Sqlstr = Replace(Sqlstr, "@", "'" + Trim(LrText(Index).Text) + "'")
  3004.             Set Findrec = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  3005.             If Findrec.EOF Then
  3006.                 Call Xtxxts("此物料编码不存在!", 0, 1)
  3007.             Else
  3008.                 Call Xtxxts(Trim(Textstr(Index, 6)), 0, 1)
  3009.             End If
  3010.             LrText(Index).SetFocus
  3011.             Exit Function
  3012.         Else
  3013.             Select Case Textint(Index, 3)
  3014.             Case 0
  3015.                 If Len(Trim(Textstr(Index, 2))) <> 0 Then
  3016.                     LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
  3017.                 End If
  3018.                 If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  3019.                     LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
  3020.                 End If
  3021.             Case 1
  3022.                 If Len(Trim(Textstr(Index, 3) & "")) <> 0 Then
  3023.                     LrText(Index).Text = Trim(Findrec.Fields(Trim(Textstr(Index, 3))))
  3024.                 End If
  3025.                 If Len(Trim(Textstr(Index, 2))) <> 0 Then
  3026.                     LrText(Index).Tag = Trim(Findrec.Fields(Trim(Textstr(Index, 2))))
  3027.                 End If
  3028.             End Select
  3029.         End If
  3030.     Case 2      '日期型
  3031.         If IsDate(LrText(Index).Text) Then
  3032.             LrText(Index).Text = Format(LrText(Index).Text, "yyyy-mm-dd")
  3033.             If Val(Mid(LrText(Index), 1, 4)) < 1900 Then
  3034.                 LrText(Index).Text = "1900" + Mid(LrText(Index), 5, 6)
  3035.             End If
  3036.         Else
  3037.             Tsxx = "非法公历日期!(格式:" + Format(Date, "yyyy-mm-dd") + ")"
  3038.             Call Xtxxts(Tsxx, 0, 1)
  3039.             LrText(Index).SetFocus
  3040.             Exit Function
  3041.         End If
  3042.     Case 3      '其他类型
  3043.     End Select
  3044.     
  3045.     '隐藏帮助按钮
  3046.     Ydcommand1.Visible = False
  3047.     
  3048.     '如果有效则加锁,用户不改变内容则不再进行有效性判断
  3049.     TextValiJudgeLock(Index) = True
  3050.     
  3051.     '调用文本框事后处理程序
  3052.     Call Wbklrwbcl(Index)
  3053.     
  3054.     '有效性判断通过则返回True
  3055.     TextYxxpd = True
  3056.     
  3057. End Function