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

企业管理

开发平台:

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 XJ_FrmXjllsjtz 
  5.    BackColor       =   &H00C0C0C0&
  6.    BorderStyle     =   1  'Fixed Single
  7.    Caption         =   "现金流量_数据调整"
  8.    ClientHeight    =   1620
  9.    ClientLeft      =   2970
  10.    ClientTop       =   300
  11.    ClientWidth     =   8910
  12.    Icon            =   "现金流量_数据调整.frx":0000
  13.    KeyPreview      =   -1  'True
  14.    LinkTopic       =   "Form4"
  15.    MaxButton       =   0   'False
  16.    MinButton       =   0   'False
  17.    ScaleHeight     =   1620
  18.    ScaleWidth      =   8910
  19.    StartUpPosition =   1  '所有者中心
  20.    Begin VB.CommandButton QdCommand 
  21.       Caption         =   "确定(&O)"
  22.       Height          =   300
  23.       Left            =   6540
  24.       TabIndex        =   1
  25.       Top             =   1200
  26.       Width           =   1120
  27.    End
  28.    Begin VB.CommandButton QxCommand 
  29.       Caption         =   "取消(&C)"
  30.       Height          =   300
  31.       Left            =   7710
  32.       TabIndex        =   2
  33.       Top             =   1200
  34.       Width           =   1120
  35.    End
  36.    Begin MSComctlLib.ImageList ImageList1 
  37.       Left            =   5100
  38.       Top             =   840
  39.       _ExtentX        =   1005
  40.       _ExtentY        =   1005
  41.       BackColor       =   -2147483643
  42.       ImageWidth      =   16
  43.       ImageHeight     =   16
  44.       MaskColor       =   12632256
  45.       _Version        =   393216
  46.       BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628} 
  47.          NumListImages   =   25
  48.          BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  49.             Picture         =   "现金流量_数据调整.frx":1042
  50.             Key             =   "sz"
  51.          EndProperty
  52.          BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  53.             Picture         =   "现金流量_数据调整.frx":13DC
  54.             Key             =   "dy"
  55.          EndProperty
  56.          BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  57.             Picture         =   "现金流量_数据调整.frx":1776
  58.             Key             =   "yl"
  59.          EndProperty
  60.          BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  61.             Picture         =   "现金流量_数据调整.frx":1B10
  62.             Key             =   "xg"
  63.          EndProperty
  64.          BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  65.             Picture         =   "现金流量_数据调整.frx":1EAA
  66.             Key             =   "zh"
  67.          EndProperty
  68.          BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  69.             Picture         =   "现金流量_数据调整.frx":2244
  70.             Key             =   "sh"
  71.          EndProperty
  72.          BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  73.             Picture         =   "现金流量_数据调整.frx":25DE
  74.             Key             =   "bc"
  75.          EndProperty
  76.          BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  77.             Picture         =   "现金流量_数据调整.frx":2978
  78.             Key             =   "fq"
  79.          EndProperty
  80.          BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  81.             Picture         =   "现金流量_数据调整.frx":2D12
  82.             Key             =   "bz"
  83.          EndProperty
  84.          BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  85.             Picture         =   "现金流量_数据调整.frx":30AC
  86.             Key             =   "tc"
  87.          EndProperty
  88.          BeginProperty ListImage11 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  89.             Picture         =   "现金流量_数据调整.frx":3446
  90.             Key             =   "bcgs"
  91.          EndProperty
  92.          BeginProperty ListImage12 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  93.             Picture         =   "现金流量_数据调整.frx":37E0
  94.             Key             =   "mrlk"
  95.          EndProperty
  96.          BeginProperty ListImage13 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  97.             Picture         =   "现金流量_数据调整.frx":3B7A
  98.             Key             =   "xsxm"
  99.          EndProperty
  100.          BeginProperty ListImage14 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  101.             Picture         =   "现金流量_数据调整.frx":3F14
  102.             Key             =   "first"
  103.          EndProperty
  104.          BeginProperty ListImage15 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  105.             Picture         =   "现金流量_数据调整.frx":42AE
  106.             Key             =   "prev"
  107.          EndProperty
  108.          BeginProperty ListImage16 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  109.             Picture         =   "现金流量_数据调整.frx":4648
  110.             Key             =   "next"
  111.          EndProperty
  112.          BeginProperty ListImage17 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  113.             Picture         =   "现金流量_数据调整.frx":49E2
  114.             Key             =   "last"
  115.          EndProperty
  116.          BeginProperty ListImage18 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  117.             Picture         =   "现金流量_数据调整.frx":4D7C
  118.             Key             =   "xx"
  119.          EndProperty
  120.          BeginProperty ListImage19 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  121.             Picture         =   "现金流量_数据调整.frx":5116
  122.             Key             =   "define"
  123.          EndProperty
  124.          BeginProperty ListImage20 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  125.             Picture         =   "现金流量_数据调整.frx":54B0
  126.             Key             =   "exec"
  127.          EndProperty
  128.          BeginProperty ListImage21 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  129.             Picture         =   "现金流量_数据调整.frx":584A
  130.             Key             =   "xz"
  131.          EndProperty
  132.          BeginProperty ListImage22 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  133.             Picture         =   "现金流量_数据调整.frx":5BE4
  134.             Key             =   "sc"
  135.          EndProperty
  136.          BeginProperty ListImage23 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  137.             Picture         =   "现金流量_数据调整.frx":5F7E
  138.             Key             =   "sx"
  139.          EndProperty
  140.          BeginProperty ListImage24 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  141.             Picture         =   "现金流量_数据调整.frx":6318
  142.             Key             =   "cx"
  143.          EndProperty
  144.          BeginProperty ListImage25 {2C247F27-8591-11D1-B16A-00C0F0283628} 
  145.             Picture         =   "现金流量_数据调整.frx":66B2
  146.             Key             =   "zd"
  147.          EndProperty
  148.       EndProperty
  149.    End
  150.    Begin VB.TextBox Ydtext 
  151.       BackColor       =   &H00C0FFFF&
  152.       BorderStyle     =   0  'None
  153.       Height          =   330
  154.       Left            =   5070
  155.       MultiLine       =   -1  'True
  156.       TabIndex        =   3
  157.       Top             =   390
  158.       Visible         =   0   'False
  159.       Width           =   1185
  160.    End
  161.    Begin VB.ComboBox YdCombo 
  162.       Height          =   300
  163.       Left            =   3030
  164.       Style           =   2  'Dropdown List
  165.       TabIndex        =   5
  166.       Top             =   390
  167.       Visible         =   0   'False
  168.       Width           =   1155
  169.    End
  170.    Begin VB.Timer Timer1 
  171.       Interval        =   1
  172.       Left            =   3360
  173.       Top             =   870
  174.    End
  175.    Begin VB.CommandButton Ydcommand 
  176.       Height          =   300
  177.       Left            =   4350
  178.       Picture         =   "现金流量_数据调整.frx":6A4C
  179.       Style           =   1  'Graphical
  180.       TabIndex        =   4
  181.       Top             =   930
  182.       Visible         =   0   'False
  183.       Width           =   300
  184.    End
  185.    Begin VSFlex8Ctl.VSFlexGrid WglrGrid 
  186.       Height          =   1575
  187.       Left            =   30
  188.       TabIndex        =   0
  189.       Top             =   30
  190.       Width           =   6345
  191.       _ExtentX        =   11192
  192.       _ExtentY        =   2778
  193.       Appearance      =   1
  194.       BorderStyle     =   1
  195.       Enabled         =   -1  'True
  196.       BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  197.          Name            =   "宋体"
  198.          Size            =   9
  199.          Charset         =   134
  200.          Weight          =   400
  201.          Underline       =   0   'False
  202.          Italic          =   0   'False
  203.          Strikethrough   =   0   'False
  204.       EndProperty
  205.       MousePointer    =   0
  206.       BackColor       =   16777215
  207.       ForeColor       =   -2147483640
  208.       BackColorFixed  =   12632256
  209.       ForeColorFixed  =   -2147483630
  210.       BackColorSel    =   -2147483635
  211.       ForeColorSel    =   -2147483634
  212.       BackColorBkg    =   -2147483636
  213.       BackColorAlternate=   16777215
  214.       GridColor       =   -2147483633
  215.       GridColorFixed  =   -2147483632
  216.       TreeColor       =   -2147483632
  217.       FloodColor      =   192
  218.       SheetBorder     =   -2147483642
  219.       FocusRect       =   1
  220.       HighLight       =   1
  221.       AllowSelection  =   -1  'True
  222.       AllowBigSelection=   -1  'True
  223.       AllowUserResizing=   0
  224.       SelectionMode   =   0
  225.       GridLines       =   1
  226.       GridLinesFixed  =   2
  227.       GridLineWidth   =   1
  228.       Rows            =   50
  229.       Cols            =   10
  230.       FixedRows       =   1
  231.       FixedCols       =   1
  232.       RowHeightMin    =   0
  233.       RowHeightMax    =   0
  234.       ColWidthMin     =   0
  235.       ColWidthMax     =   0
  236.       ExtendLastCol   =   0   'False
  237.       FormatString    =   ""
  238.       ScrollTrack     =   0   'False
  239.       ScrollBars      =   3
  240.       ScrollTips      =   0   'False
  241.       MergeCells      =   0
  242.       MergeCompare    =   0
  243.       AutoResize      =   -1  'True
  244.       AutoSizeMode    =   0
  245.       AutoSearch      =   0
  246.       MultiTotals     =   -1  'True
  247.       SubtotalPosition=   1
  248.       OutlineBar      =   0
  249.       OutlineCol      =   0
  250.       Ellipsis        =   0
  251.       ExplorerBar     =   0
  252.       PicturesOver    =   0   'False
  253.       FillStyle       =   0
  254.       RightToLeft     =   0   'False
  255.       PictureType     =   0
  256.       TabBehavior     =   0
  257.       OwnerDraw       =   0
  258.       Editable        =   0   'False
  259.       ShowComboButton =   -1  'True
  260.       WordWrap        =   0   'False
  261.       TextStyle       =   0
  262.       TextStyleFixed  =   0
  263.       OleDragMode     =   0
  264.       OleDropMode     =   0
  265.       DataMode        =   0
  266.       VirtualData     =   -1  'True
  267.    End
  268.    Begin VB.Label Lab_Fpje 
  269.       BackStyle       =   0  'Transparent
  270.       ForeColor       =   &H00C00000&
  271.       Height          =   255
  272.       Left            =   7680
  273.       TabIndex        =   10
  274.       Top             =   540
  275.       Width           =   1245
  276.    End
  277.    Begin VB.Label Label1 
  278.       BackStyle       =   0  'Transparent
  279.       Caption         =   "分配金额合计:"
  280.       Height          =   225
  281.       Index           =   1
  282.       Left            =   6480
  283.       TabIndex        =   9
  284.       Top             =   540
  285.       Width           =   1215
  286.    End
  287.    Begin VB.Label Lab_Pzjehj 
  288.       BackStyle       =   0  'Transparent
  289.       ForeColor       =   &H00C00000&
  290.       Height          =   225
  291.       Left            =   7680
  292.       TabIndex        =   8
  293.       Top             =   150
  294.       Width           =   1095
  295.    End
  296.    Begin VB.Label Label1 
  297.       BackStyle       =   0  'Transparent
  298.       Caption         =   "凭证金额合计:"
  299.       Height          =   225
  300.       Index           =   0
  301.       Left            =   6480
  302.       TabIndex        =   7
  303.       Top             =   150
  304.       Width           =   1215
  305.    End
  306.    Begin VB.Label Lab_OperStatus 
  307.       BackColor       =   &H000080FF&
  308.       Caption         =   "1"
  309.       Height          =   345
  310.       Left            =   3750
  311.       TabIndex        =   6
  312.       Top             =   990
  313.       Visible         =   0   'False
  314.       Width           =   345
  315.    End
  316. End
  317. Attribute VB_Name = "XJ_FrmXjllsjtz"
  318. Attribute VB_GlobalNameSpace = False
  319. Attribute VB_Creatable = False
  320. Attribute VB_PredeclaredId = True
  321. Attribute VB_Exposed = False
  322. '**************************************************************************************
  323. '*    模 块 名 称 :现金流量_数据调整
  324. '*    功 能 描 述 :
  325. '*    程序员姓名  :张建忠
  326. '*    最后修改人  :张建忠
  327. '*    最后修改时间:2001/12/03
  328. '*    备        注:程序中所有依实际情况自定义部分均用[>> <<]括起
  329. '*
  330. '*    1.每次调入外部功能窗体,均要加锁ChangeLock=True,窗体关闭后解锁ChangeLock=false
  331. '*
  332. '*    2.网格列存储内容注解
  333. '*
  334. '*      0-行有效标识  1-现金流量项目编码ID
  335. '*
  336. '*    3.Lab_OperStatus 用此标签来标识单据录入状态(默认值为1) 1-浏览 2-修改
  337. '***************************************************************************************
  338.  '以下为自定义变量
  339.     Dim Lng_VouchId As Long                         '分配现金流量凭证ID
  340.     Dim Int_Year As Integer                         '凭证所属年度
  341.     Dim Int_Period As Integer                       '凭证所属会计期间
  342.     
  343.  '以下为固定使用变量(网格)
  344.     Dim Cxnrrec As New ADODB.Recordset              '显示查询内容动态集
  345.     Dim Dyymctbl As New DY_Dyymsz                   '打印页面窗体变量
  346.     Dim GridCode As String                          '显示网格网格代码
  347.     Dim GridInf() As Variant                        '整个网格设置信息
  348.     Dim ReportTitle As String                       '报表主标题
  349.     Dim Tsxx As String                              '系统提示信息
  350.     Dim Pmbcsjhs As Long                            '屏幕网格保持数据行数(大于等于1)
  351.     Dim Fzxwghs As Integer                          '辅助项网格行数(包括合计行)
  352.     Dim Sfxshjwg As Boolean                         '是否显示合计网格
  353.     Dim Qslz As Long                                '网格隐藏(非操作显示)列数
  354.     Dim Sjhgd As Double                             '网格数据行高度
  355.     Dim GridBoolean() As Boolean                    '网格列信息(布尔型)
  356.     Dim GridStr()  As String                        '网格列信息(字符型)
  357.     Dim GridInt() As Integer                        '网格列信息(整型)
  358.     Dim Sfblbzkd As Boolean                         '是否保留帮助宽度(字段提供帮助时,是否为按钮保留空间)
  359.     Dim Dqlrwgh As Long                             '当前录入数据网格行
  360.     Dim Dqlrwgl As Long                             '当前录入数据网格列
  361.     Dim Dqlkwgh As Long                             '刚刚离开网格行(不一定为录入行)
  362.     Dim Dqlkwgl As Long                             '刚刚离开网格列
  363.     Dim Dqtoprow As Long                            '当前录入状态时最上端可视行
  364.     Dim Dqleftcol As Long                           '当前录入状态时最左端可视列
  365.     Dim Zdlrqnr As String                           '字段录入修改前内容(用来判断内容是否修改)
  366.     Dim Wbkbhlock As Boolean                        '文本框改变值锁
  367.     Dim changelock As Boolean                       '网格行列改变控制锁(用来区别用户改变.程序改变)
  368.     Dim Gdtlock As Boolean                          '滚动条滚动控制(用来区别用户改变.程序改变)
  369.     Dim Yxxpdlock As Boolean                        '字段有效性判断锁(内容不修改不需进行字段有效性判断)
  370.     Dim Hyxxpdlock As Boolean                       '行有效性判断锁(字段内容不修改不需进行行有效性判断)
  371.     Dim Valilock As Boolean                         '文本框失去焦点是否进行有效性控制(TRUE 为锁定*限用网格录入)
  372.     Dim Shsfts As Boolean                           '删除记录行是否提示
  373.     Dim Szzls As Integer                            '网格信息数组最大下标值(网格列数-1)
  374. Private Sub Form_KeyPress(KeyAscii As Integer)      '控制焦点转移和限制录入字符"'"
  375.     Select Case KeyAscii
  376.     Case 39           '屏蔽字符"'"
  377.         KeyAscii = 0
  378.     End Select
  379. End Sub
  380. Private Sub Form_Load()                              '窗 体 装 入
  381.     Dim RecTemp As New ADODB.Recordset
  382.     
  383.     '得到分配现金流量凭证ID并显示凭证合计金额
  384.     Lng_VouchId = Val(Xtcdcs)
  385.     
  386.     SqlStr = "SELECT Jfjehj=isnull(sum(Jfje),0) From Cwzz_AccVouchSub Where VouchID=" & Lng_VouchId
  387.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  388.     If Not RecTemp.EOF Then
  389.         Lab_Pzjehj.Caption = RecTemp.Fields("Jfjehj")
  390.     End If
  391.     
  392.     SqlStr = "SELECT Year,Period From Cwzz_AccVouchMain Where VouchID=" & Lng_VouchId
  393.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  394.     If Not RecTemp.EOF Then
  395.         Int_Year = RecTemp.Fields("Year")
  396.         Int_Period = RecTemp.Fields("Period")
  397.     End If
  398.     
  399.     '初始化各种锁值
  400.     changelock = False             '网格行列改变控制锁
  401.     Gdtlock = False                '滚动条滚动控制
  402.     Yxxpdlock = True               '字段有效性判断锁
  403.     Hyxxpdlock = True              '行有效性判断锁
  404.     Wbkbhlock = False              '文本框内容改变锁
  405.     
  406.     '调 入 网 格
  407.     GridCode = "Cwzz_xjllsjtz"     '网格属性编码
  408.     Call BzWgcsh(WglrGrid, GridCode, GridInf(), GridBoolean(), GridInt(), GridStr())
  409.     
  410.     Qslz = GridInf(1)
  411.     Sjhgd = GridInf(2)
  412.     Pmbcsjhs = GridInf(3)
  413.     Fzxwghs = GridInf(4)
  414.     Sfblbzkd = GridInf(5)
  415.     Shsfts = GridInf(6)
  416.     Sfxshjwg = GridInf(7)
  417.     Szzls = WglrGrid.Cols - 1
  418.     
  419.     '生成查询结果
  420.     Call Sub_Query(Lng_VouchId)
  421.     
  422.     '设置状态为修改状态
  423.     Lab_OperStatus = "2"
  424.     
  425. End Sub
  426. Private Sub Form_Unload(Cancel As Integer)           '窗体卸载
  427.     
  428.     '卸载打印页面窗体
  429.     Unload Dyymctbl
  430.     
  431. End Sub
  432. Private Sub Sub_Query(Lng_VouchId1 As Long)                              '显示当前凭证分配金额
  433.     Dim SqlStr As String                   '查询字符串
  434.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  435.     Dim Jsqte  As Long                     '临时计数器
  436.     
  437.     SqlStr = "SELECT Cwzz_CashFlowData.*,Cwzz_CashFlowItem.CashFlowName From Cwzz_CashFlowData LEFT OUTER JOIN Cwzz_CashFlowItem ON" & _
  438.     " Cwzz_CashFlowData.CashFlowId = Cwzz_CashFlowItem.CashFlowId Where Cwzz_CashFlowData.VouchID=" & Lng_VouchId1 & " Order By CashFlowDataID"
  439.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  440.     
  441.     With RecTemp
  442.         
  443.         WglrGrid.Clear 1
  444.         
  445.         WglrGrid.Rows = .RecordCount + WglrGrid.FixedRows
  446.         
  447.         Jsqte = WglrGrid.FixedRows
  448.         Do While Not .EOF
  449.             If Jsqte >= WglrGrid.Rows Then
  450.                 WglrGrid.AddItem ""
  451.             End If
  452.             
  453.             WglrGrid.TextMatrix(Jsqte, 0) = "*"                                                              '有效记录标识
  454.             
  455.             WglrGrid.TextMatrix(Jsqte, 1) = Trim(.Fields("CashFlowID") & "")                                 '现金流量项目ID
  456.             WglrGrid.TextMatrix(Jsqte, Sydz("001", GridStr(), Szzls)) = Trim(.Fields("CashFlowName") & "")                                   '部门编码
  457.             
  458.             If .Fields("Fpje") <> 0 Then                                                                     '分配金额
  459.                 WglrGrid.TextMatrix(Jsqte, Sydz("002", GridStr(), Szzls)) = .Fields("Fpje")
  460.             End If
  461.             
  462.             '<<]
  463.             WglrGrid.RowHeight(Jsqte) = Sjhgd
  464.             .MoveNext
  465.             Jsqte = Jsqte + 1
  466.         Loop
  467.     End With
  468.     
  469.     '调整网格
  470.     Call Sub_AdjustGrid
  471.     
  472.     '计算分配金额
  473.     Call Sub_Jsfpje
  474.     
  475. End Sub
  476. Private Sub Wbkcl()                                                 '文本框录入之前处理(根据实际情况)
  477.     Dim xswbrr As String
  478.     With WglrGrid
  479.         Zdlrqnr = Trim(.Text)
  480.         xswbrr = Trim(.Text)
  481.         
  482.         If GridBoolean(.Col, 3) Then   '列表框录入
  483.             
  484.             '填充列表框程序
  485.             Call FillCombo(YdCombo, GridStr(.Col, 5), xswbrr, 0)
  486.         Else
  487.             Wbkbhlock = True
  488.             
  489.             '====以下为用户自定义
  490.             Ydtext.Text = xswbrr
  491.             '====以上为用户自定义
  492.             
  493.             Wbkbhlock = False
  494.             Ydtext.SelStart = Len(Ydtext.Text)
  495.         End If
  496.     End With
  497. End Sub
  498. Private Function sjzdyxxpd(Dqpdwgh As Long, Dqpdwgl As Long)        '录入数据字段有效性判断,同时进行字段录入事后处理
  499.     Dim Str_JudgeText As String  '临时有效性判断字段内容
  500.     Dim Coljsq As Long           '临时列计数器
  501.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  502.     Dim Dbl_Qcye As Double                 '临时期初余额
  503.     
  504.     With WglrGrid
  505.         
  506.         '非录入状态有效性为合法
  507.         If Yxxpdlock Or .Row < .FixedRows Then
  508.             sjzdyxxpd = True
  509.             Exit Function
  510.         End If
  511.         
  512.         Str_JudgeText = Trim(.TextMatrix(Dqpdwgh, Dqpdwgl))
  513.         Select Case GridStr(Dqpdwgl, 1)
  514.             
  515.             '以下为自定义部分[
  516.             '1.放置字段有效性判断程序
  517.         Case "001"          '现金流量项目(如有效则调入现金流量项目名称)
  518.             If Len(Str_JudgeText) <> 0 Then
  519.                 SqlStr = "Select CashFlowID,CashFlowCode,CashFlowName FROM Cwzz_CashFlowItem Where ltrim(CashFlowCode)='" & Str_JudgeText & "' OR ltrim(CashFlowName)='" & Str_JudgeText & "'"
  520.                 Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  521.                 With RecTemp
  522.                     If .EOF Then
  523.                         Tsxx = "此现金流量项目不存在!"
  524.                         GoTo Lrcwcl
  525.                     End If
  526.                     
  527.                     '1.如果现金流量项目存在则存储相应现金流量编码
  528.                     WglrGrid.TextMatrix(Dqpdwgh, 1) = Trim(RecTemp.Fields("CashFlowID"))
  529.                     WglrGrid.TextMatrix(Dqpdwgh, Sydz("001", GridStr(), Szzls)) = Trim(RecTemp.Fields("CashFlowName"))
  530.                 End With
  531.             End If
  532.             '2.放置字段事后处理程序
  533.             
  534.             '以上为自定义部分]
  535.             
  536.         End Select
  537.         
  538.         '字段录入正确后为零字段清空
  539.         Call Qkwlzd(Dqpdwgh, Dqpdwgl)
  540.         
  541.         sjzdyxxpd = True
  542.         Yxxpdlock = True
  543.         Exit Function
  544.     End With
  545.     
  546. Lrcwcl:    '录入错误处理
  547.     With WglrGrid
  548.         Call Xtxxts(Tsxx, 0, 1)
  549.         changelock = True
  550.         .Select Dqpdwgh, Dqpdwgl
  551.         changelock = False
  552.         Call xswbk
  553.         sjzdyxxpd = False
  554.         Exit Function
  555.     End With
  556. End Function
  557. Private Function Sjhzyxxpd(ByVal Yxxpdh As Long) As Boolean                  '录入数据行有效性判断,同时进行行处理
  558.     Dim Lrywlz As Long
  559.     Dim RecTemp As New ADODB.Recordset             '临时使用动态集
  560.     Dim SqlStr As String                           '临时连接字符串
  561.     Dim Rec_AccSumAssi As New ADODB.Recordset      '辅助总帐动态集
  562.     Dim Dbl_Now(1 To 16) As Double                 '科目记录现数据
  563.     Dim Str_OriItemCode As String                  '辅助核算项目编码(原)
  564.     Dim Str_NowItemCode As String                  '辅助核算项目编码(现)
  565.     
  566.     With WglrGrid
  567.         
  568.         '判断行为空和无效数据行则清除当前行
  569.         If Yxxpdh > (.Rows - .FixedRows) Then Exit Function
  570.         If .TextMatrix(Yxxpdh, 0) <> "*" Then
  571.             Sjhzyxxpd = True
  572.             Exit Function
  573.         Else
  574.             If pdhwk(Yxxpdh) And Yxxpdh + 1 <= .Rows - 1 Then
  575.                 If .TextMatrix(Yxxpdh + 1, 0) <> "*" Then
  576.                     changelock = True
  577.                     .RemoveItem Yxxpdh
  578.                     If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  579.                         .AddItem ""
  580.                         .RowHeight(.Rows - 1) = Sjhgd
  581.                     End If
  582.                     changelock = False
  583.                     Sjhzyxxpd = True
  584.                     Exit Function
  585.                 End If
  586.             End If
  587.         End If
  588.         
  589.         '行没有发生变化则不进行有效性判断
  590.         If Hyxxpdlock Then
  591.             Sjhzyxxpd = True
  592.             Exit Function
  593.         End If
  594.         
  595.         '以下为自定义部分[
  596.         
  597.         '1.放置行有效性判断程序
  598.         
  599.         '首先进行为空判断(固定不变)
  600.         For Jsqte = Qslz To .Cols - 1
  601.             If (GridInt(Jsqte, 5) = 1 And Len(Trim(.TextMatrix(Yxxpdh, Jsqte))) = 0) Or (GridInt(Jsqte, 5) = 2 And Val(Trim(.TextMatrix(Yxxpdh, Jsqte))) = 0) Then
  602.                 Tsxx = GridStr(Jsqte, 2)
  603.                 Lrywlz = Jsqte
  604.                 GoTo Lrcwcl
  605.                 Exit For
  606.             End If
  607.         Next Jsqte
  608.         
  609.         '计算分配金额
  610.         Call Sub_Jsfpje
  611.         
  612.         '以上为自定义部分]
  613.     End With
  614.     
  615.     Sjhzyxxpd = True
  616.     Hyxxpdlock = True
  617.     Exit Function
  618.     
  619. Lrcwcl:      '录入错误处理
  620.     With WglrGrid
  621.         Call Xtxxts(Tsxx, 0, 1)
  622.         changelock = True
  623.         .Select Yxxpdh, Lrywlz
  624.         changelock = False
  625.         Call xswbk
  626.         
  627.         Sjhzyxxpd = False
  628.         Exit Function
  629.     End With
  630. End Function
  631. Private Sub Sub_Jsfpje()                                        '计算凭证分配现金流量金额
  632.     Dim Dbl_Fpje As Double
  633.     Dbl_Fpje = 0
  634.     With WglrGrid
  635.         For Jsqte = .FixedRows To .Rows - 1
  636.             If .TextMatrix(Jsqte, 0) = "*" Then
  637.                 Dbl_Fpje = Dbl_Fpje + Val(.TextMatrix(Jsqte, Sydz("002", GridStr(), Szzls)))
  638.             End If
  639.         Next Jsqte
  640.     End With
  641.     If Dbl_Fpje = 0 Then
  642.         Lab_Fpje.Caption = ""
  643.     Else
  644.         Lab_Fpje.Caption = Dbl_Fpje
  645.     End If
  646. End Sub
  647. Private Sub QdCommand_Click()                                                                     '确定
  648.     Dim Rec_CashFlowData As New ADODB.Recordset      '现金流量表动态集
  649.     
  650.     '计算分配金额
  651.     Call Sub_Jsfpje
  652.     
  653.     '分配金额不能大于凭证合计金额
  654.     If Val(Lab_Fpje.Caption) > Val(Lab_Pzjehj.Caption) Then
  655.         Tsxx = "现金流量分配金额不能大于凭证合计金额"
  656.         Call Xtxxts(Tsxx, 0, 4)
  657.         Exit Sub
  658.     End If
  659.     
  660.     '数据回写
  661.     On Error GoTo Swcwcl
  662.     
  663.     Cw_DataEnvi.DataConnect.BeginTrans
  664.     
  665.     '1.删除原此凭证所分配现金流量
  666.     Cw_DataEnvi.DataConnect.Execute ("Delete Cwzz_CashFlowData Where VouchID=" & Lng_VouchId)
  667.     
  668.     '2.添加目前分配现金流量
  669.     If Rec_CashFlowData.State = 1 Then Rec_CashFlowData.Close
  670.     Rec_CashFlowData.Open "Select * From Cwzz_CashFlowData Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  671.     
  672.     For Rowjsq = WglrGrid.FixedRows To WglrGrid.Rows - 1
  673.         
  674.         If WglrGrid.TextMatrix(Rowjsq, 0) <> "*" Then
  675.             Exit For
  676.         End If
  677.         
  678.         With Rec_CashFlowData
  679.             .AddNew
  680.             .Fields("VouchID") = Lng_VouchId                                                    '凭证ID
  681.             .Fields("Year") = Int_Year                                                          '会计年度
  682.             .Fields("Period") = Int_Period                                                      '会计期间
  683.             .Fields("CashFlowID") = Val(WglrGrid.TextMatrix(Rowjsq, 1))                          '现金流量项目
  684.             .Fields("Fpje") = Val(WglrGrid.TextMatrix(Rowjsq, Sydz("002", GridStr(), Szzls)))    '现金流量分配金额
  685.             .Update
  686.             
  687.         End With
  688.         
  689.     Next Rowjsq
  690.     
  691.     
  692.     Cw_DataEnvi.DataConnect.CommitTrans
  693.     
  694.     Unload Me
  695.     Exit Sub
  696.     
  697. Swcwcl:
  698.     Cw_DataEnvi.DataConnect.RollbackTrans
  699.     Tsxx = "存盘过程中出现未知错误,程序自动恢复保存前状态!"
  700.     Call Xtxxts(Tsxx, 0, 1)
  701.     Exit Sub
  702. End Sub
  703. Private Sub QxCommand_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)    '取消
  704.     changelock = True              '网格行列改变控制锁
  705.     Yxxpdlock = True               '字段有效性判断锁
  706.     Hyxxpdlock = True              '行有效性判断锁
  707.     Wbkbhlock = True               '文本框内容改变锁
  708.     Unload Me
  709. End Sub
  710. '===================以 下 程 序 为 通 用 部 分 ,一 般 不 需 更 改======================='
  711. Private Sub Sub_AdjustGrid()
  712.     '调 整 网 格
  713.     With WglrGrid
  714.         '加 1 保持一行录入行
  715.         If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  716.             .Rows = Pmbcsjhs + .FixedRows + Fzxwghs + 1
  717.             For Jsqte = .FixedRows To .Rows - 1
  718.                 .RowHeight(Jsqte) = Sjhgd
  719.             Next Jsqte
  720.         Else
  721.             '判断是否有辅助行和录入行,如没有则加行
  722.             Do While .TextMatrix(.Rows - 1 - Fzxwghs, 0) = "*"
  723.                 .AddItem ""
  724.                 .RowHeight(.Rows - 1) = Sjhgd
  725.             Loop
  726.         End If
  727.     End With
  728. End Sub
  729. Private Sub Lrzdbz()                                                      '录入字段帮助
  730.     If Not Ydcommand.Visible Then
  731.         Exit Sub
  732.     End If
  733.     Valilock = True
  734.     With WglrGrid
  735.         
  736.         changelock = True        '调入另外窗体必须加锁
  737.         Call Drbmhelp(GridInt(.Col, 6), GridStr(.Col, 3), Trim(Ydtext.Text))
  738.         changelock = False
  739.         If Len(Xtfhcs) <> 0 Then
  740.             If GridInt(.Col, 7) = 0 Then
  741.                 Ydtext.Text = Xtfhcs
  742.             Else
  743.                 Ydtext.Text = Xtfhcsfz
  744.             End If
  745.         End If
  746.         
  747.         Valilock = False
  748.         If Ydtext.Visible Then
  749.             Ydtext.SetFocus
  750.         End If
  751.     End With
  752. End Sub
  753. Private Sub Form_Resize()                                                '窗体大小发生变化时,重新显示文本框
  754.     Call Cxxswbk
  755. End Sub
  756. Private Function Fun_Drfrmyxxpd() As Boolean                             '调入其它窗体或功能产生的有效性判断(包括数据回写)
  757.     Fun_Drfrmyxxpd = True
  758.     With WglrGrid
  759.         
  760.         '如果当前网格处于编辑状态,则先进行数据回写再进行有效性判断
  761.         
  762.         If Ydtext.Visible Or YdCombo.Visible Then
  763.             Call Lrsjhx
  764.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  765.                 Fun_Drfrmyxxpd = False
  766.                 Exit Function
  767.             End If
  768.         End If
  769.         
  770.         '进行行有效性判断
  771.         If Not Sjhzyxxpd(.Row) Then
  772.             Fun_Drfrmyxxpd = False
  773.             Exit Function
  774.         End If
  775.         
  776.     End With
  777. End Function
  778. Private Sub WglrGrid_GotFocus()                                     '网格得到焦点
  779.     
  780.     '网格得到焦点,如果当前选择行为非数据行
  781.     '则调整当前焦点至有效数据行
  782.     
  783.     With WglrGrid
  784.         If .Row < .FixedRows And .Rows > .FixedRows Then
  785.             changelock = True
  786.             .Select .FixedRows, .Col
  787.             changelock = False
  788.         End If
  789.         If .Col < Qslz Then
  790.             changelock = True
  791.             .Select .Row, Qslz
  792.             changelock = False
  793.         End If
  794.     End With
  795.     
  796. End Sub
  797. Private Sub WglrGrid_LostFocus()                                    '录入网格失去焦点
  798.     
  799.     '用以屏蔽调用其它窗体时发生网格失去焦点事件
  800.     If changelock Then
  801.         Exit Sub
  802.     End If
  803.     
  804.     '引发网格RowcolChange事件
  805.     With WglrGrid
  806.         If Not (Ydtext.Visible Or YdCombo.Visible) Then
  807.             .Select 0, 0
  808.         End If
  809.     End With
  810.     
  811. End Sub
  812. Private Sub WglrGrid_AfterScroll(ByVal OldTopRow As Long, ByVal OldLeftCol As Long, ByVal NewTopRow As Long, ByVal NewLeftCol As Long)                                       '限制用户在录入过程中滚动鼠标
  813.     
  814.     If Gdtlock Then
  815.         Exit Sub
  816.     End If
  817.     
  818.     With WglrGrid
  819.         If Ydtext.Visible Or YdCombo.Visible Then
  820.             Gdtlock = True
  821.             .TopRow = Dqtoprow
  822.             .LeftCol = Dqleftcol
  823.             Gdtlock = False
  824.             Exit Sub
  825.         End If
  826.         
  827.     End With
  828. End Sub
  829. Private Sub WglrGrid_LeaveCell()                                    '离开单元格
  830.     If changelock Then
  831.         Exit Sub
  832.     End If
  833.     
  834.     '记录刚刚离开网格单元的行列值
  835.     Dqlkwgh = WglrGrid.Row
  836.     Dqlkwgl = WglrGrid.Col
  837.     
  838.     '判断是否需要录入数据回写
  839.     If Not (Ydtext.Visible Or YdCombo.Visible) Then
  840.         Exit Sub
  841.     End If
  842.     Call Lrsjhx
  843. End Sub
  844. Private Sub WglrGrid_RowColChange()                                '网格录入行列发生变化时,进行有效性判断
  845.     Valilock = True       '屏蔽文本框失去焦点进行有效性判断
  846.     With WglrGrid
  847.         If changelock Then
  848.             Exit Sub
  849.         End If
  850.         If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  851.             Exit Sub
  852.         End If
  853.         If .Row <> Dqlkwgh Then
  854.             If Not Sjhzyxxpd(Dqlkwgh) Then
  855.                 Exit Sub
  856.             End If
  857.         End If
  858.     End With
  859.     Call fhyxh
  860.     Call Xldql
  861.     
  862. End Sub
  863. Private Sub WglrGrid_DblClick()          '鼠标双击网格显示文本框
  864.     With WglrGrid
  865.         Call xswbk
  866.     End With
  867. End Sub
  868. Private Sub Ycwbk()                      '隐藏文本框,帮助按钮,列表组合框
  869.     Valilock = True
  870.     Ydtext.Visible = False
  871.     YdCombo.Visible = False
  872.     Ydcommand.Visible = False
  873. End Sub
  874. Private Sub YdCombo_KeyDown(KeyCode As Integer, Shift As Integer)        '列表框移动
  875.     With WglrGrid
  876.         Select Case KeyCode
  877.         Case vbKeyEscape                'ESC 键放弃录入
  878.             Valilock = True
  879.             .SetFocus
  880.             Call Ycwbk
  881.             Valilock = False
  882.         Case vbKeyReturn                '回 车 键 =13
  883.             KeyCode = 0
  884.             .SetFocus
  885.             Call Lrsjhx
  886.             Rowjsq = .Row
  887.             Coljsq = .Col + 1
  888.             If Coljsq > .Cols - 1 Then
  889.                 If Rowjsq < .Rows - 1 Then
  890.                     Rowjsq = Rowjsq + 1
  891.                 End If
  892.                 Coljsq = Qslz
  893.             End If
  894.             Do While Rowjsq <= .Rows - 1
  895.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  896.                     Coljsq = Coljsq + 1
  897.                     If Coljsq > .Cols - 1 Then
  898.                         Rowjsq = Rowjsq + 1
  899.                         Coljsq = Qslz
  900.                     End If
  901.                 Else
  902.                     Exit Do
  903.                 End If
  904.             Loop
  905.             .Select Rowjsq, Coljsq
  906.         Case vbKeyLeft                  '左 箭 头 =37
  907.             If .Col - 1 = Qslz Then
  908.                 If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  909.                     GoTo jzzx
  910.                 End If
  911.             End If
  912.             If .Col > Qslz Then
  913.                 KeyCode = 0
  914.                 .SetFocus
  915.                 Call Lrsjhx
  916.                 Coljsq = .Col - 1
  917.                 Do While Coljsq > Qslz
  918.                     If Coljsq - 1 = Qslz Then
  919.                         If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  920.                             GoTo jzzx
  921.                         End If
  922.                     End If
  923.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  924.                         Coljsq = Coljsq - 1
  925.                     Else
  926.                         Exit Do
  927.                     End If
  928.                 Loop
  929.                 .Select .Row, Coljsq
  930.             End If
  931.             
  932.         Case vbKeyRight                 '右 箭 头 =39
  933.             KeyCode = 0
  934.             .SetFocus
  935.             Call Lrsjhx
  936.             Rowjsq = .Row
  937.             Coljsq = .Col + 1
  938.             If Coljsq > .Cols - 1 Then
  939.                 If Rowjsq < .Rows - 1 Then
  940.                     Rowjsq = Rowjsq + 1
  941.                 End If
  942.                 Coljsq = Qslz
  943.             End If
  944.             Do While Rowjsq <= .Rows - 1
  945.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  946.                     Coljsq = Coljsq + 1
  947.                     If Coljsq > .Cols - 1 Then
  948.                         Rowjsq = Rowjsq + 1
  949.                         Coljsq = Qslz
  950.                     End If
  951.                 Else
  952.                     Exit Do
  953.                 End If
  954.             Loop
  955.             .Select Rowjsq, Coljsq
  956.         Case Else
  957.         End Select
  958.         
  959. jzzx:
  960.         
  961.     End With
  962. End Sub
  963. Private Sub YdCombo_LostFocus()
  964.     With WglrGrid                                    '因为选中网格会先发生Rowcolchange事件置Valiock
  965.         If Not Valilock Then                           '为TRUE
  966.             Call Lrsjhx
  967.             If Not Sjhzyxxpd(Dqlrwgh) Then
  968.                 Exit Sub
  969.             End If
  970.         End If
  971.     End With
  972. End Sub
  973. Private Sub Ydcommand_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  974.     Call Lrzdbz
  975. End Sub
  976. Private Sub ydtext_KeyDown(KeyCode As Integer, Shift As Integer)
  977.     Dim Rowjsq As Long, Coljsq As Long
  978.     With WglrGrid
  979.         Select Case KeyCode
  980.         Case vbKeyF2
  981.             Call Lrzdbz
  982.         Case vbKeyEscape                'ESC 键放弃录入
  983.             Valilock = True
  984.             Call Ycwbk
  985.             .SetFocus
  986.         Case vbKeyReturn                '回 车 键 =13
  987.             KeyCode = 0
  988.             .SetFocus
  989.             Call Lrsjhx
  990.             Rowjsq = .Row
  991.             Coljsq = .Col + 1
  992.             If Coljsq > .Cols - 1 Then
  993.                 If Rowjsq < .Rows - 1 Then
  994.                     Rowjsq = Rowjsq + 1
  995.                 End If
  996.                 Coljsq = Qslz
  997.             End If
  998.             Do While Rowjsq <= .Rows - 1
  999.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1000.                     Coljsq = Coljsq + 1
  1001.                     If Coljsq > .Cols - 1 Then
  1002.                         Rowjsq = Rowjsq + 1
  1003.                         Coljsq = Qslz
  1004.                     End If
  1005.                 Else
  1006.                     Exit Do
  1007.                 End If
  1008.             Loop
  1009.             If Rowjsq <= .Rows - 1 Then
  1010.                 .Select Rowjsq, Coljsq
  1011.             End If
  1012.         Case vbKeyUp                    '上 箭 头 =38
  1013.             KeyCode = 0
  1014.             .SetFocus
  1015.             Call Lrsjhx
  1016.             If .Row > .FixedRows Then
  1017.                 .Row = .Row - 1
  1018.             End If
  1019.         Case vbKeyDown                  '下 箭 头 =40
  1020.             KeyCode = 0
  1021.             .SetFocus
  1022.             Call Lrsjhx
  1023.             If .Row < .Rows - 1 Then
  1024.                 .Row = .Row + 1
  1025.             End If
  1026.         Case vbKeyLeft                  '左 箭 头 =37
  1027.             If .Col - 1 = Qslz Then
  1028.                 If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  1029.                     GoTo jzzx
  1030.                 End If
  1031.             End If
  1032.             If Ydtext.SelStart = 0 And .Col > Qslz Then
  1033.                 KeyCode = 0
  1034.                 .SetFocus
  1035.                 Call Lrsjhx
  1036.                 Coljsq = .Col - 1
  1037.                 Do While Coljsq > Qslz
  1038.                     If Coljsq - 1 = Qslz Then
  1039.                         If .ColHidden(Qslz) Or (Not GridBoolean(Qslz, 1)) Then
  1040.                             GoTo jzzx
  1041.                         End If
  1042.                     End If
  1043.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1044.                         Coljsq = Coljsq - 1
  1045.                     Else
  1046.                         Exit Do
  1047.                     End If
  1048.                 Loop
  1049.                 .Select .Row, Coljsq
  1050.             End If
  1051. jzzx:
  1052.             
  1053.             
  1054.         Case vbKeyRight                 '右 箭 头 =39
  1055.             wblong = Len(Ydtext.Text)
  1056.             If (Ydtext.SelStart = wblong Or Ydtext.SelLength = wblong) Then
  1057.                 KeyCode = 0
  1058.                 .SetFocus
  1059.                 Call Lrsjhx
  1060.                 Rowjsq = .Row
  1061.                 Coljsq = .Col + 1
  1062.                 If Coljsq > .Cols - 1 Then
  1063.                     If Rowjsq < .Rows - 1 Then
  1064.                         Rowjsq = Rowjsq + 1
  1065.                     End If
  1066.                     Coljsq = Qslz
  1067.                 End If
  1068.                 Do While Rowjsq <= .Rows - 1
  1069.                     If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1070.                         Coljsq = Coljsq + 1
  1071.                         If Coljsq > .Cols - 1 Then
  1072.                             Rowjsq = Rowjsq + 1
  1073.                             Coljsq = Qslz
  1074.                         End If
  1075.                     Else
  1076.                         Exit Do
  1077.                     End If
  1078.                 Loop
  1079.                 .Select Rowjsq, Coljsq
  1080.             End If
  1081.         Case Else
  1082.         End Select
  1083.     End With
  1084. End Sub
  1085. Private Sub ydtext_KeyPress(KeyAscii As Integer)         '录入字符事中控制
  1086.     Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  1087.     If KeyAscii <> 0 Then
  1088.         Call Xyxhbz(Dqlrwgh)
  1089.     End If
  1090. End Sub
  1091. Private Sub ydtext_Change()                              '录入事中变化处理
  1092.     
  1093.     '防止程序改变但不进行处理
  1094.     
  1095.     If Wbkbhlock Then
  1096.         Exit Sub
  1097.     End If
  1098.     
  1099.     With WglrGrid
  1100.         
  1101.         '限制字段录入长度
  1102.         Wbkbhlock = True
  1103.         Select Case GridInt(.Col, 1)
  1104.         Case 8
  1105.             Call Sjgskz(Ydtext, Xtjezws - Xtjexsws - 1, Xtjexsws)
  1106.         Case 9
  1107.             Call Sjgskz(Ydtext, Xtslzws - Xtslxsws - 1, Xtslxsws)
  1108.         Case 10
  1109.             Call Sjgskz(Ydtext, Xtdjzws - Xtdjxsws - 1, Xtdjxsws)
  1110.         Case Else
  1111.             If GridInt(.Col, 3) <> 0 Or GridInt(.Col, 4) <> 0 Then
  1112.                 Call Sjgskz(Ydtext, GridInt(.Col, 3), GridInt(.Col, 4))
  1113.             End If
  1114.         End Select
  1115.         Wbkbhlock = False
  1116.     End With
  1117. End Sub
  1118. Private Sub ydtext_LostFocus()            '如果由于选中网格之外的控件而发生有效性判断(选中网格会先发生Rowcolchange事件置Valiock为TRUE)
  1119.     With WglrGrid
  1120.         If Not Valilock Then
  1121.             Call Lrsjhx
  1122.             If Not sjzdyxxpd(Dqlrwgh, Dqlrwgl) Then
  1123.                 Exit Sub
  1124.             End If
  1125.             If Not Sjhzyxxpd(Dqlrwgh) Then
  1126.                 Exit Sub
  1127.             End If
  1128.         End If
  1129.     End With
  1130. End Sub
  1131. Private Sub xswbk()                       '在当前选中单元显示文本框,列表框,帮助按钮(通用)
  1132.     Dim Wbkpy As Integer, Wbkpy1 As Integer '文本框偏移量
  1133.     
  1134.     '如果单据操作状态为浏览状态则不能显示录入载体
  1135.     If Trim(Lab_OperStatus.Caption) = "1" Then
  1136.         Exit Sub
  1137.     End If
  1138.     
  1139.     '显示文本框前返回有效行列(解决滚动条问题)
  1140.     Call Xldqh
  1141.     Call Xldql
  1142.     
  1143.     '隐藏文本框,帮助按钮,列表组合框
  1144.     Call Ycwbk
  1145.     
  1146.     With WglrGrid
  1147.         Dqlrwgh = .Row
  1148.         Dqlrwgl = .Col
  1149.         If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  1150.             Exit Sub
  1151.         End If
  1152.         
  1153.         Wbkpy = 30
  1154.         Wbkpy1 = 15
  1155.         
  1156.         If GridBoolean(.Col, 3) Then
  1157.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  1158.             YdCombo.Top = .CellTop + .Top + Wbkpy
  1159.             YdCombo.Width = .CellWidth - Wbkpy1
  1160.             Call Wbkcl
  1161.             YdCombo.Visible = True
  1162.             YdCombo.SetFocus
  1163.             Ydcommand.Visible = False
  1164.             Ydtext.Visible = False
  1165.         Else
  1166.             If GridBoolean(.Col, 2) Then
  1167.                 Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  1168.                 Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  1169.                 Ydcommand.Visible = True
  1170.             Else
  1171.                 Ydcommand.Visible = False
  1172.             End If
  1173.             
  1174.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  1175.             Ydtext.Top = .CellTop + .Top + Wbkpy
  1176.             If Ydcommand.Visible Then
  1177.                 If Sfblbzkd Then
  1178.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  1179.                 Else
  1180.                     Ydtext.Width = .CellWidth - Wbkpy1
  1181.                 End If
  1182.             Else
  1183.                 Ydtext.Width = .CellWidth - Wbkpy1
  1184.             End If
  1185.             Ydtext.Height = .CellHeight - Wbkpy1
  1186.             
  1187.             If GridInt(.Col, 2) <> 0 Then
  1188.                 Ydtext.MaxLength = GridInt(.Col, 2)
  1189.             Else
  1190.                 Ydtext.MaxLength = 3000
  1191.             End If
  1192.             
  1193.             Call Wbkcl
  1194.             
  1195.             Ydtext.Visible = True
  1196.             Ydtext.SetFocus
  1197.         End If
  1198.         Dqtoprow = .TopRow
  1199.         Dqleftcol = .LeftCol
  1200.         
  1201.         '重置锁值
  1202.         Valilock = False
  1203.         Wbkbhlock = False
  1204.     End With
  1205. End Sub
  1206. Private Sub Cxxswbk()                                                  'Formresize中重新显示文本框,列表框,帮助按钮(通用)
  1207.     
  1208.     Dim Wbkpy As Integer, Wbkpy1 As Integer
  1209.     Wbkpy = 30
  1210.     Wbkpy1 = 15
  1211.     With WglrGrid
  1212.         If YdCombo.Visible Then
  1213.             YdCombo.Left = .CellLeft + .Left + Wbkpy
  1214.             YdCombo.Top = .CellTop + .Top + Wbkpy
  1215.             YdCombo.Width = .CellWidth - Wbkpy1
  1216.         End If
  1217.         If Ydcommand.Visible Then
  1218.             Ydcommand.Left = .Left + .CellLeft + .CellWidth - Ydcommand.Width + Wbkpy
  1219.             Ydcommand.Top = .Top + .CellTop + .CellHeight - Ydcommand.Height + Wbkpy
  1220.         End If
  1221.         If Ydtext.Visible Then
  1222.             If Ydcommand.Visible Then
  1223.                 If Sfblbzkd Then
  1224.                     Ydtext.Width = .CellWidth - Ydcommand.Width
  1225.                 Else
  1226.                     Ydtext.Width = .CellWidth - Wbkpy1
  1227.                 End If
  1228.             Else
  1229.                 Ydtext.Width = .CellWidth - Wbkpy1
  1230.             End If
  1231.             
  1232.             Ydtext.Left = .CellLeft + .Left + Wbkpy
  1233.             Ydtext.Top = .CellTop + .Top + Wbkpy
  1234.             Ydtext.Height = .CellHeight - Wbkpy1
  1235.         End If
  1236.     End With
  1237.     
  1238. End Sub
  1239. Private Sub Lrsjhx()                                                   '文本框录入数据回写
  1240.     With WglrGrid
  1241.         If YdCombo.Visible Then
  1242.             .Text = Trim(YdCombo.Text)
  1243.         End If
  1244.         If Ydtext.Visible Then
  1245.             .Text = Trim(Ydtext.Text)
  1246.         End If
  1247.         
  1248.         '(如果字段录入内容发生变化,则打开有效性判断锁)
  1249.         If Zdlrqnr <> Trim(.Text) Then
  1250.             Yxxpdlock = False
  1251.             Hyxxpdlock = False
  1252.         End If
  1253.         
  1254.         '如果字段录入内容不为空则写数据行有效性标志
  1255.         
  1256.         If Len(Trim(.Text)) <> 0 Then
  1257.             Call Xyxhbz(.Row)
  1258.         End If
  1259.         
  1260.         '隐藏文本框,帮助按钮,列表组合框
  1261.         Call Ycwbk
  1262.         
  1263.     End With
  1264. End Sub
  1265. Private Sub WglrGrid_KeyDown(KeyCode As Integer, Shift As Integer)    '网格录入增行,删行快捷键
  1266.     
  1267.     '如果单据操作状态为浏览状态则不能显示录入载体
  1268.     If Trim(Lab_OperStatus.Caption) = "1" Then
  1269.         Exit Sub
  1270.     End If
  1271.     
  1272.     Select Case KeyCode
  1273.     Case vbKeyDelete               '删行
  1274.         Call Scdqfl
  1275.     Case vbKeyInsert               '增行
  1276.         Call zjlrfl
  1277.     End Select
  1278. End Sub
  1279. Private Sub WglrGrid_KeyPress(KeyAscii As Integer)                     '网格接受键盘录入
  1280.     Dim Str_ChangeTe As String    '临时交换内容
  1281.     Dim Coljsq As Long            '临时列计数器
  1282.     Dim Int_SaveKey As Integer    '保存KeyAscii值
  1283.     
  1284.     '如果单据操作状态为浏览状态则不能显示录入载体
  1285.     If Trim(Lab_OperStatus.Caption) = "1" Then
  1286.         Exit Sub
  1287.     End If
  1288.     
  1289.     Int_SaveKey = KeyAscii
  1290.     
  1291.     With WglrGrid
  1292.         '屏 蔽 回 车 键
  1293.         If KeyAscii = vbKeyReturn Then
  1294.             KeyAscii = 0
  1295.             Rowjsq = .Row
  1296.             Coljsq = .Col + 1
  1297.             If Coljsq > .Cols - 1 Then
  1298.                 If Rowjsq < .Rows - 1 Then
  1299.                     Rowjsq = Rowjsq + 1
  1300.                 End If
  1301.                 Coljsq = Qslz
  1302.             End If
  1303.             Do While Rowjsq <= .Rows - 1
  1304.                 If .ColHidden(Coljsq) Or (Not GridBoolean(Coljsq, 1)) Then
  1305.                     Coljsq = Coljsq + 1
  1306.                     If Coljsq > .Cols - 1 Then
  1307.                         Rowjsq = Rowjsq + 1
  1308.                         Coljsq = Qslz
  1309.                     End If
  1310.                 Else
  1311.                     Exit Do
  1312.                 End If
  1313.             Loop
  1314.             If Rowjsq <= .Rows - 1 Then
  1315.                 .Select Rowjsq, Coljsq
  1316.             End If
  1317.             Exit Sub
  1318.         End If
  1319.         '接受用户录入
  1320.         Select Case KeyAscii
  1321.         Case 0 To 32
  1322.             
  1323.             '显示录入载体
  1324.             Call xswbk
  1325.             
  1326.         Case Else
  1327.             
  1328.             '防止非编辑字段SendKeys()出现死循环
  1329.             If Not GridBoolean(.Col, 1) Or .Row < .FixedRows Then
  1330.                 Exit Sub
  1331.             End If
  1332.             
  1333.             If GridBoolean(.Col, 3) Then
  1334.                 
  1335.                 '列表框录入
  1336.                 Call xswbk
  1337.                 
  1338.             Else
  1339.                 
  1340.                 Ydtext.Text = ""
  1341.                 Call InputFieldLimit(Ydtext, GridInt(WglrGrid.Col, 1), KeyAscii)
  1342.                 If KeyAscii = 0 Then
  1343.                     Exit Sub
  1344.                 End If
  1345.                 
  1346.                 '写有效行数据标志
  1347.                 Call Xyxhbz(.Row)
  1348.                 Call xswbk
  1349.                 Ydtext.Text = ""
  1350.                 Valilock = True
  1351.                 SendKeys Chr(KeyAscii), wait
  1352.                 DoEvents
  1353.                 Valilock = False
  1354.                 
  1355.             End If
  1356.         End Select
  1357.     End With
  1358. End Sub
  1359. Private Sub zjlrfl()                                                    '增加录入分录
  1360.     With WglrGrid
  1361.         If Not (Ydtext.Visible Or YdCombo.Visible) Then
  1362.             If Not Fun_Drfrmyxxpd Then
  1363.                 Exit Sub
  1364.             End If
  1365.         Else
  1366.             Exit Sub
  1367.         End If
  1368.         If .Row < .FixedRows Then
  1369.             Exit Sub
  1370.         End If
  1371.         .AddItem "", .Row
  1372.         .RowHeight(.Row) = Sjhgd
  1373.         
  1374.         
  1375.         If .Row <> .Rows - 1 Then
  1376.             If .TextMatrix(.Row + 1, 0) = "*" Then
  1377.                 .TextMatrix(.Row, 0) = "*"
  1378.             Else
  1379.                 .RemoveItem .Rows - 1
  1380.             End If
  1381.         End If
  1382.         Call Xldqh
  1383.         Call Xldql
  1384.         Hyxxpdlock = False
  1385.     End With
  1386. End Sub
  1387. Private Sub Scdqfl()                                                    '删除当前分录
  1388.     Dim Answer As Integer, Scqwghz As Long, Scqwglz As Long, Hjlzte As Long, Sflrzt As Boolean
  1389.     Dim RecTemp As New ADODB.Recordset             '临时使用动态集
  1390.     Dim SqlStr As String                           '临时连接字符串
  1391.     Dim Str_NowItemCode As String                  '辅助核算项目编码(现)
  1392.     
  1393.     With WglrGrid
  1394.         Scqwghz = .Row
  1395.         Scqwglz = .Col
  1396.         If .TextMatrix(.Row, 0) = "*" Then
  1397.             
  1398.             '判断是否为录入状态
  1399.             If Ydtext.Visible Or YdCombo.Visible Then
  1400.                 Sflrzt = True
  1401.                 Validate = True
  1402.                 Call Lrsjhx
  1403.                 Validate = False
  1404.             End If
  1405.             
  1406.             Call Xldqh
  1407.             changelock = True
  1408.             .Select .Row, 0
  1409.             changelock = False
  1410.             If Shsfts Then
  1411.                 .Cell(flexcpBackColor, .Row, Qslz, .Row, .Cols - 1) = QBColor(12)
  1412.                 Tsxx = "请确认是否删除当前记录?"
  1413.                 Yhanswer = Xtxxts(Tsxx, 2, 2)
  1414.                 If Yhanswer = 2 Then
  1415.                     .Cell(flexcpBackColor, .Row, Qslz, .Row, .Cols - 1) = &H80000005
  1416.                     changelock = True
  1417.                     .Select Scqwghz, Scqwglz
  1418.                     changelock = False
  1419.                     
  1420.                     '如为录入状态,则恢复录入
  1421.                     If Sflrzt Then
  1422.                         Call xswbk
  1423.                     End If
  1424.                     
  1425.                     Exit Sub
  1426.                 End If
  1427.             End If
  1428.             
  1429.             .RemoveItem .Row
  1430.             
  1431.             If .Rows < Pmbcsjhs + .FixedRows + Fzxwghs + 1 Then
  1432.                 .AddItem ""
  1433.                 .RowHeight(.Rows - 1) = Sjhgd
  1434.             End If
  1435.             changelock = True
  1436.             .Select .Row, Scqwglz
  1437.             changelock = False
  1438.             
  1439.             '计算分配金额
  1440.             Call Sub_Jsfpje
  1441.             
  1442.         End If
  1443.     End With
  1444. End Sub
  1445. Private Sub Qkwlzd(sjh As Long, Sjl As Long)                            '清空为零字段
  1446.     If Not GridBoolean(Sjl, 5) Then
  1447.         Exit Sub
  1448.     End If
  1449.     With WglrGrid
  1450.         If Val(Trim(.TextMatrix(sjh, Sjl))) = 0 Then
  1451.             .TextMatrix(sjh, Sjl) = ""
  1452.         End If
  1453.     End With
  1454. End Sub
  1455. Private Sub fhyxh()                                                     '返回录入数据有效行,同时让得到焦点网格可见
  1456.     With WglrGrid
  1457.         If .Row >= .FixedRows Then
  1458.             If .TextMatrix(.Row, 0) <> "*" Then
  1459.                 For Rowjsq = .FixedRows To .Rows - 1
  1460.                     If .TextMatrix(Rowjsq, 0) <> "*" Then
  1461.                         Exit For
  1462.                     End If
  1463.                 Next Rowjsq
  1464.                 If Rowjsq <= .Rows - 1 Then
  1465.                     changelock = True
  1466.                     .Select Rowjsq, .Col
  1467.                     changelock = False
  1468.                 Else
  1469.                     changelock = True
  1470.                     .Select .Rows - 1, .Col
  1471.                     changelock = False
  1472.                 End If
  1473.             End If
  1474.             Call Xldqh
  1475.         End If
  1476.     End With
  1477. End Sub
  1478. Private Sub Xldqh()                                                      '显露当前行
  1479.     Dim Toprowte As Long
  1480.     With WglrGrid
  1481.         Toprowte = 0
  1482.         Do While .CellTop + .RowHeight(.Row) + Fzxwghs * Sjhgd > .Height And .TopRow <> Toprowte
  1483.             Toprowte = .TopRow
  1484.             .TopRow = .TopRow + 1
  1485.         Loop
  1486.         Toprowte = 0
  1487.         Do While .CellTop < .FixedRows * .RowHeight(0) And .TopRow <> Toprowte
  1488.             Toprowte = .TopRow
  1489.             .TopRow = .TopRow - 1
  1490.         Loop
  1491.     End With
  1492. End Sub
  1493. Private Sub Xldql()                                                     '显露当前列
  1494.     Dim Leftcolte As Long
  1495.     With WglrGrid
  1496.         If .Col >= Qslz Then
  1497.             If .LeftCol > .Col Then
  1498.                 .LeftCol = .Col
  1499.             End If
  1500.             Leftcolte = 0
  1501.             Do While .CellLeft + .CellWidth > .Width And .LeftCol <> Leftcolte
  1502.                 Leftcolte = .LeftCol
  1503.                 .LeftCol = .LeftCol + 1
  1504.             Loop
  1505.         End If
  1506.     End With
  1507. End Sub
  1508. Private Function pdhwk(sjh As Long)                                     '判断网格行是否为空行(所有录入字段均为空*非录入字段除外)
  1509.     With WglrGrid
  1510.         For Coljsq = Qslz To .Cols - 1
  1511.             If Len(Trim(.TextMatrix(sjh, Coljsq))) <> 0 And GridBoolean(Coljsq, 1) Then
  1512.                 pdhwk = False
  1513.                 Exit Function
  1514.             End If
  1515.         Next Coljsq
  1516.         pdhwk = True
  1517.     End With
  1518. End Function
  1519. Private Sub Xyxhbz(sjh As Long)                                         '写行有效性标志,并判断是否增行
  1520.     With WglrGrid
  1521.         If .TextMatrix(sjh, 0) = "*" Then
  1522.             Exit Sub
  1523.         End If
  1524.         .TextMatrix(sjh, 0) = "*"
  1525.         If sjh >= .Rows - Fzxwghs - 1 Then
  1526.             .AddItem ""
  1527.             .RowHeight(.Rows - 1) = Sjhgd
  1528.         End If
  1529.     End With
  1530. End Sub