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

企业管理

开发平台:

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