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

企业管理

开发平台:

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