某物资存储管理系统设计与实现毕业设计论文.doc_第1页
某物资存储管理系统设计与实现毕业设计论文.doc_第2页
某物资存储管理系统设计与实现毕业设计论文.doc_第3页
某物资存储管理系统设计与实现毕业设计论文.doc_第4页
某物资存储管理系统设计与实现毕业设计论文.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学位论文某物资存储管理系统设计与实现论文作者姓名:申请学位专业:申请学位类别:指导教师姓名(职称):论文提交日期:某物资存储管理系统设计与实现摘 要随着市场经济的高速发展,物资存储管理越来越重要,如何降低成本,提高工作效率是物资存储管理者需要解决的一个实际问题,本系统从实际出发,在分析目前物资管理中存在的问题基础上,结合管理信息系统开发的概念,结构及系统开发的基本原理和方法开发的。系统是用delphi7.0作为前台开发工具、用sql server 2000作为后台数据库开发的物资存储管理系统,支持多形式客户的数据共享、提高作业效率、监控整个物资进库、出库流程、提供完整的物资出库、入库信息,并且特别关注对各环节业务的监控及例外情况的监控。系统主要完成对物资仓库的库存管理,包括物资入库、出库、库存,员工信息,供应商信息以及密码管理等。系统可以完成对各类信息的浏览、查询、添加、删除、修改等功能。关键词: 物资 物资入库 物资出库design and implementation of a commodity storage management system abstractalong with the market economy high speed development, the commodity storage management is becoming more and more important. how to reduce the cost and enhance the working efficiency is a critical problem which the superintendent needs to solve. this commodity storage management system is developed according to the principle of software system development and is based on analyzing the problems existing in current commodity management systems. this system, which uses delphi7.0 to develop the forestage application and uses sql server 2000 as the backstage database, supports various kinds of customer data sharing to enhance the work efficiency. it monitors the entire commodity flow entering and leaving the storage in order to provide detail information of how and when the commodity leaves or enters the storage to the customers. the system has implemented the basic functions for commodity storage management, including storing and retrieving goods, checking the state of goods and the information of suppliers, as well as the password management and so on.key words: commodity; in-stock; out-stock目 录论文总页数:27页1 引言11.1 背景11.2国内现状的研究11.3开发思路21.3.1物资管理信息系统开发的必要性22 管理系统功能分析22.1 系统功能分析22.2 系统功能模块设计33 系统开发工具介绍33.1 开发工具的选择33.2 delphi 7.0 及 sql server 2000简介43.2.1 delphi 7.0简介43.2.2 sql server 2000简介54 数据库的实现64.1 数据库综述64.2 确定数据表和表中的字段以及数据结构64.2.1 数据表概要说明64.2.2 主要的表中的字段以及数据结构75 物资存储管理系统设计与实现105.1 主程序窗体设计105.1.1主窗体设计步骤105.1.2程序相关代码分析125.2 基础窗体的设计与实现135.2.1基础窗体的设计145.2.2 程序相关代码分析145.3 物资入库管理设计与实现145.3.1 物资入库管理的设计155.3.2 相关代码的分析165.4 物资出库管理的设计与实现205.4.1物资出库管理的设计205.4.2相关代码的分析226主要功能模块测试236.1 物资入库管理测试246.2 物资入库查询测试246.3 物资出库管理测试24结 论25参考文献25致 谢26声 明271 引言1.1 背景对物资的管理在企业生产经营中非常重要,物资管理的好环,直接影响着企业的经营生产和发展进步。由于物资供应渠道多、品种规格千变万化,这就使得物资的供应和管理变得复杂和困难。如何加强企业成本意识,做好物资供应、降低库存、加速资金周转、加强物资使用监督和财务监督以成为企业愈加关注的问题。在物资管理中采用计算机管理十分必要,这对于搞好物资的供、管、用三方面的工作,保障供应,合理地使用物资,提高物资管理劳动生产率,促进企业健康发展具有重要意义。采用计算机物资管理系统,具有以下优点:1利用计算机和信息技术,可以代替人工劳动,减轻工作人员工作量和工作繁琐程度,提高工作效益和工作质量等。2 通过对库存的有效管理,可以节约资金占用,降低库存,提高经济效益。 3 通过对材料消耗的控制,降低生产成本。4.通过对供应渠道的有效管理,加强与供应商的协作,提高市场反应能力。1.2国内现状的研究 信息已成为继劳动力、土地、资本之后的又一大资源。谁控制的信息越多,谁利用信息资源的效率越高,谁就会在各方面的竞争中占有一席之地,谁就会有更多的优势。物资供应部门是企业与生产单位之间的桥梁、纽带,是企业正常生产的物资保障部门。正因为供应部门是关键的中转环节,建立一套物资管理信息系统对于如何有效的把本单位生产所需的生产资料及时、保质保量的供应上去,有着重要的意义。从微观上讲,建立一套物资管理信息系统能够加快物资的周转速度,提高生产效率,从而加强了管理的信息化手段,提高了本单位的经济效益。从宏观上讲,顺应了社会的信息化、社会化潮流,缩短了整个社会化大生产的周期。由于物资管理在社会大生产中占用重要地位,其计算机化在发达国家已达到95%以上,而我国在全国范围内推广计算机在管理中的应用,是在80年代初开始的。起步虽晚,但发展快。特别是微型计算机的出现和普及,为信息处理提供了物美价廉的手段,对于推动我国管理信息处理现代化起到了重要作用。物资管理工作中存在的主要问题:1 ) 根据各单位或公司所报材料明细逐个与库存账本对照查阅,库中有其所需材料则开据料单从库中领取,若库中没有,则通知采购人员采购。库中物资种类繁多,查对繁琐,易出错。2 ) 从开据发料单到每月结帐、清册都是手工操作,计算器加算盘,效率低且准确率不高。单位配备的计算机仅局限于打字,做报表,不能开单据,计算机应有的功能没有充分发挥。针对以上存在的问题,通过建立物资管理信息系统使物资管理工作更加规范化、程序化,提高其处理工作的速度和准确性,也便于动态查询,提高效率。1.3开发思路1.3.1物资管理信息系统开发的必要性通过对以上在物资管理中存在的问题及需求调查得知,以前的物资管理办法,工作繁琐,工作量大,效率低。因而,建立一套物资管理信息系统势在必行。各单位的需求虽然不尽相同,但大体上可分为如下几个方面:(1)用户的信息要求:随时查询库存物资状况,进行库存物资汇总,对记录能随时删除、插入及恢复。(2)用户的处理要求:能随时增加、删除,修改每一个库存物资记录,并能打印单据。(3)对数据的安全性、完整性的要求:要保证每个记录必须完整。1.3.2物资管理信息系统开发的可行性所谓开发的可行性,就是指在整个系统开发工程中,解决“做什么”的问题,把要解决哪些问题,满足用户哪些具体的信息需求调查分析清楚,从逻辑上或说从信息处理的功能需求上提出系统的方案,即逻辑模型,为下一阶段进行物理方案设计,解决怎么办提供依据。它是信息开发系统中的一个重要阶段,是建立系统模型的第一步。其核心是目标分析与需求分析,最后提出系统的逻辑方案。2 管理系统功能分析2.1 系统功能分析物资管理系统是一个典型的数据库应用程序,由启动窗体模块、登录模块、系统主界面模块、基础信息模块、物资管理模块、信息查询模块、红字冲销模块、系统管理模块等组成,特规划功能如下:(1) 物资管理模块主要功能是对物资的入库、出库、入库退货进行管理。(2) 物资管理模块主要功能是对物资的入库、出库、入库退货进行管理。(3) 信息查询模块主要功能是对物资入库、物资出库、物资退货、和供应商结款进行高效的查询。(4) 红字冲销模块主要是对入库票号、出库票号、入库退货票号、和供应商结款票号进行冲销。(5) 系统管理模块主要功能是系统登录、口令修改和系统退出。2.2 系统功能模块设计本系统的功能模块如图1所示图1 系统功能模块图3 系统开发工具介绍3.1 开发工具的选择随着社会需求的推动和计算机技术的发展普及,各行业的管理机构需要有计算机来处理大量的信息。选择一优秀的数据库管理系统作为开发平台,将给日后的信息处理带来便利性。其中,基于微型计算机的数据库系统是应用最广泛、实用性最强的一种计算机技术。而事实证明:sql数据库是一个广泛使用、简单易用、性能价格比较高、工具完整而又丰富、界面友好、处理速度高的关系型数据库。sql server20000主要用于windows环境,利用它可设计出体现windows风格的丰富多彩的图形化用户界面,使用户的操作和使用十分便利。sql server2000 是为数据库应用程序开发而设计的功能强大、面向对象的编程工具。它能够管理大量复杂的数据信息,同时有具有很好的安全性和较强的网络功能,甚至还能够实现数据的远程访问和存储加工从本人的实际情况看:因为在校期间也有学习过可视化的编程,对这一类的软件的使用也有较深的认识,所以说选用sql server2000作为开发工具是很有优势的。而对于前台编程工具,目前比较流行的是vc+,vb,delphi,powerbuilder,c+builder等。对底层编程比较需要的地方就大部分vc+,而delphi的ide是非常易用的。业界有一句很经典的话:真正的程序员用vc+,而聪明的程序员用delphi。可见,vc+与delphi是两种较优秀的语言开发工具。delphi 7.0应用程序开发工具,是目前最为广泛的、易学易用的面向对象的开发工具,delphi 7.0提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,从而有效的提高了应用程序的运行效率和可靠性。故实现本系统用delphi作为开发工具是一个明智的选择。3.2 delphi 7.0 及 sql server 2000简介3.2.1 delphi 7.0简介delphi是全新的可视化编程环境,为我们提供了一种方便、快捷的windows应用程序开发工具。它使用了microsoft windows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(object-oriented language)、当今世界上最快的编辑器、最为领先的数据库技术。它简单易学、效率高,且功能强大,可以与windows的专业开发工具sdk相媲美,使用delphi开发应用软件,无疑会大大地提高编程效率。 delphi最显著的特点就是高效性和稳定性,总的来说,主要体现在以下6个方面: (1)可视化开发环境的性能。(2)面向对象编程的概念。(3)编译器的速度和已编译代码的效率。(4)编程语言的功能及其复杂性。(5)数据库结构的灵活性和扩展性。(6)框架对设计和使用模式的扩充。delphi实际上是pascal语言的一种版本,但它与传统的pascal语言有天壤之别。一个delphi程序首先是应用程序框架,而这一框架正是应用程序的“骨架”。在骨架上即使没有附着任何东西,仍可以严格地按照设计运行。您的工作只是在“骨架”中加入您的程序。缺省的应用程序是一个空白的窗体(form),您可以运行它,结果得到一个空白的窗口。这个窗口具有windows窗口的全部属性:可以被放大缩小、移动、最大最小化等,但您却没有编写一行代码。因此,可以说应用程序框架通过提供所有应用程序共有的东西,为用户应用程序的开发打下了良好的基础。delphi已经为您做好了一切基础工作-程序框架就是一个已经完成的可运行应用程序,只是不处理任何事情。您所需要做的,只是在程序中加入完成您所需功能的代码而已。在空白窗口的背后,应用程序的框架正在等待用户的输入。由于您并未告诉它接收到用户输入后作何反应,窗口除了响应windows的基本操作(移动、缩放等)外,它只是接受用户的输入,然后再忽略。delphi把windows编程的回调、句柄处理等过程都放在一个不可见的romulam覆盖物下面,这样您可以不为它们所困扰,轻松从容地对可视部件进行编程。3.2.2 sql server 2000简介sqlserver2000 继承了数据库软件设计和引擎方面的优势,已经成为新一代网络应用程序的最佳数据库和分析解决方案之一。作为microsoftnet enterprise servers 的核心组件,它将减少电子商务、在线商务和数据仓库应用程序推向市场的时间,并对需要的环境提供可靠的支持。sqlserver2000 对xml和http 提供充分的支持;提供分割装载和确保时间的特性;提供先进的管理和协调机制,可以自动管理线程任务,降低总体开销。sqlserver2000 是一个具备完全web 支持的数据库产品,提供了可扩展标记语言(xml)核心支持以及internet 上和防火墙外进行查询的能力,具有可伸缩性、灵活性、扩充性好,而且价格便宜等特点;还可以使用xml 更新程序更容易地插入、更新和删除数据。使用sqlserver2000 可以获得非凡的可伸缩性和可靠性。通过向上伸缩和向外扩展的能力,sqlserver2000 满足苛刻的电子商务和企业应用程序要求。主要体现为:(1)高度可用性;(2)可伸缩性;(3)安全性;(4)分布式分区图;(5)索引视图;(6)虚拟接口系统网络;(7)复制特性。sqlserver2000 是microsoftnet enterprise server 的数据管理与分析中枢。sqlserver2000 包括加速从概念到最后交付开发过程的工具。主要体现为:(1)经过简化的数据库管理;(2)提高开发人员的工作效率;(3)数据转换服务(dts);(4)扩展应用程序;(5)英语查询;(6)数据挖掘;(7)olap 服务;(8)olap 灵活性;(9)闭合循环分析。4 数据库的实现4.1 数据库综述 数据库是一种存储数据并对数据进行操作的工具。数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。数据库在系统中占有非常重要的地位,数据库设计的好坏将直接影响系统的效率。合理的数据库设计可以提高数据存储的效率,有利于程序的实现。创建任何一个数据库的第一步是仔细的规划数据库,设计必须是灵活的、有逻辑的。创建一个数据库结构的过程被认为是数据模型设计。1标识需要的数据;2收集被标识的字段到表中;3标识主关键字字段;4绘制一个简单的数据图表;5规范数据;6标识指定字段的信息;7创建物理表。4.2 确定数据表和表中的字段以及数据结构4.2.1 数据表概要说明如图2所示的即为本系统中数据库中的数据表的树形结构图,该数据表树型结构图包含系统所有数据表。可以清晰地反应数据库信息。图2 数据表树形结构图4.2.2 主要的表中的字段以及数据结构(1)tb_storeregid(入库主要信息表)入库主要信息表用于保存入库的主要信息,入库主要信息表结构如表1所示。表1 tb_storeregid数据结构字段名称数据类型字段大小主键否功能描述regidvarchar30是登记票号providernamevarchar30供应商名称principalvarchar30负责人operatorvarchar30操作员stocktotalmoney8入库总计stockrebatefloat8入库折扣paymoneymoney8应付金额factmoneymoney8实付金额timedatedatetime8时间(2)tb_storeoutlist (物资出库详细信息表)物资出库详细信息表用于保存物资出库详细信息,物资出库详细信息表结构如表2所示。表2 tb_storeoutlist数据结构字段名称数据类型字段大小主键否功能描述outidvarchar30出库票号storenamevarchar30物资名称numfloat8数量storagenamevarchar30仓库名称(3)tb_storeoutid(物资出库主要信息表)物资出库主要信息表用于保存物资出库的主要信息,物资出库主要信息表结构如表3所示。 表3 tb_storeoutid数据结构字段名称数据类型字段大小主键否功能描述outidvarchar30是出库票号storemanagervarchar30库管员outpersonvarchar30领取人operatorvarchar30操作员memovarchar100备注timedatedatetime8时间(4)tb_storelist(物资入库详细信息表)物资入库详细信息表用于保存物资入库的详细信息,物资入库详细信息表结构如表4所示。表4 tb_storelist数据结构字段名称数据类型字段大小主键否功能描述regidvarchar30登记票号storagenamevarchar30库存名称storenamevarchar30物资名称unitpricemoney8单价storesumfloat8物资数量storemoneymoney8金额(5)tb_storeinfo(物资基础信息表)物资基础信息表用于保存物资基础信息,物资基础信息表结构如表5所示。 表5 tb_storeinfo数据结构字段名称数据类型字段大小主键否功能描述storenamevarchar30是物资名称nameshortvarchar10简码specvarchar20规格defaultpricemoney8默认价格barcodevarchar30条形码basicunitvarchar10基本单位stockunitvarchar10采购单位conversionfloat8换算(6)tb_storageinfo(仓库基础信息表)仓库基础信息表用于保存仓库基础信息,仓库基础信息表结构如图6所示。 表6 tb_storageinfo数据结构字段名称字段类型字段大小主键否功能描述storagenamevarchar30是仓库名称nameshortvarchar10简码(7)tb_providerinfo(供应商信息表)供应商信息表用于保存供应商品信息,供应商信息表结构如表7所示。 表7 tb_providerinfo数据结构字段名称数据类型字段大小主键否功能描述providernamevarchar30是供应商名称nameshortvarchar20简码principalvarchar10负责人phonevarchar20联系电话addressvarchar100地址webvarchar50网址timedatedatetime8时间memovarchar100备注(8)tb_operatorinfo(操作员信息表)操作员信息表用于保存操作员信息,操作员信息表结构如表8所示。表8 tb_operatorinfo数据结构字段名称数据类型字段大小主键否功能描述operatornamevarchar30操作员名称passwordvarchar30密码levelvarchar20级别(13)tb_idlogout(票号冲销信息表)票号冲销信息表用于保存标号冲销信息,票号冲销信息表结构如表9所示。表9 tb_idlogout数据结构字段名称数据类型字段大小主键否功能描述idvarchar30冲销票号kindint4类型operatorvarchar30操作员timedatedatetime8时间(14)tb_employeeinfo (员工信息表)员工信息表用于保存员工信息,员工信息表结构如表10所示。 表10 tb_employeeinfo数据结构字段名称数据类型字段大小主键否功能描述workeridvarchar30是工号workernamevarchar30姓名sexvarchar10性别knowledgevarchar20学历phonevarchar30联系方式addressvarchar30地址dutyvarchar30职务engagetimedatetime8聘用时间memovarchar100备注(15)tb_comstorage(物资库存信息表)物资库存信息表用于保存物资库存信息,物资库存信息表结构如表11所示。表11 tb_comstorage数据结构字段名称数据类型字段大小主键否功能描述storagenamevarchar30是仓库名称storenamevarchar30是物资名称storesumfloat8数量5 物资存储管理系统设计与实现5.1 主程序窗体设计主程序窗体是程序控制的中心,操作权限、程序功能调用等都要通过主程序窗体调用实现。实现如图3所示。图3 主窗体的实现5.1.1主窗体设计步骤(1)运行delphi会自动创建一个窗体,设置该窗体为程序主窗体,命名为“t_main”,设置窗体的caption属性为“备品管理系统”;windowstate属性为“wsmaximized”;keypreview属性为“true”。 (2)在“win32”组件页中点选“timagelist”组件,添加到窗体上,命名为“imagememu”,设置该组件的height属性为“22”;width属性为“22”。双击该组件,在弹出的对话框中单击【add】按钮,添加图标,如图4所示。图4 添加图标(3)在“standard”组件页中点选“tactionlist”组件,添加到窗体上,命名为“list1”。设置该组件的images属性为“imagememu”,双击list1组件打开编辑器,单击【new action】按钮添加actions对象,并设置相应的caption属性和name属性,如图5所示。 图5 添加动作项(4)在“additional”组件页中点选“tactionmanager”组件,添加到窗体上,命名为“actionmanage1”,双击该组件打开动作编辑器,选择“toolbars”选项卡,单击【new】按钮,添加“tactiontoolbar”对象。(5)在窗体上点选actionmanager1组件,在“object inspector”窗口中,单击actionbars属性右侧的【】按钮,弹出对话框。(6)在弹出的对话框中点选“0-actionbar-actiontoobar1”,在“object inspector”窗口中,单击items属性右侧的【】按钮,在弹出的对话框中,单击【add new】按钮添加菜单项,并设置各个菜单项的caption属性。 (7)点选各菜单项,在“object inspector”窗口中,单击items右侧的【】按钮,在弹出的对话框中设置子菜单项的action属性和caption属性(8)在“win32”组件页中点选“tstatusbar”组件,添加到窗体上,命名为“statusbar1”。statusbar组件用于显示状态信息,双击statusbar1组件,在弹出的对话框中单击【add new】按钮添加面板。在“object inspector”窗口中设置面板的width属性、text属性和alignment属性。5.1.2程序相关代码分析在主窗体的onshow事件处理过程中,将初始化窗口,如果不存在配置文件则弹出登录服务器窗口,显示登录窗口。procedure tt_main.formshow(sender: tobject);var ini: tinifile; server,database,user,password: string;begin /调用初始化窗口 application.createform(tf_ini,f_ini); f_ini.showmodal; f_ini.free; ini := nil; /配置信息是否存在 if not fileexists(extractfilepath(application.exename)+login.ini) then /判断文件是否存在 begin /调用登录服务器窗口,登录服务器并记录登录信息 application.createform(tf_loginserver,f_loginserver); f_loginserver.showmodal; f_loginserver.free; end else /读取配置信息 begin try ini:=tinifile.create(extractfilepath(application.exename)+login.ini); server := ini.readstring(配置信息,服务器,); database := ini.readstring(配置信息,数据库,); user := ini.readstring(配置信息,用户名,); password := ini.readstring(配置信息,密码,); try t_data.connection1.connectionstring:= provider=sqloledb.1;password=+trim(password)+;persist security info=true;user id=+trim(user)+;initial catalog=+trim(database)+;data source=+trim(server); t_data.connection1.open; except if application.messagebox(数据库连接失败,是否重新连接数据库?,提示,mb_yesno) = id_yes then begin application.createform(tf_loginserver,f_loginserver); f_loginserver.showmodal; f_loginserver.free; end; end; finally ini.free; end; end; login.execute; statusbar1.panelssta_date.text := formatdatetime(yyyy-mm-dd,now);5.2 基础窗体的设计与实现创建基础窗体主要是提高开发速度和代码的利用率,从基础窗体继承的子窗体具有基础窗体的全部功能,基础窗体如图6所示。图6 基础窗体5.2.1基础窗体的设计添加一个新窗体,命名为“f_frame”,设置其borderstyle属性为“bsdialog”;keypreview属性为“true”。5.2.2 程序相关代码分析在窗体的onkeydown事件处理过程中设置,如果用户按下esc键关闭窗体。代码如下:procedure tf_frame.formkeydown(sender: tobject; var key: word; /按esc键关闭窗体 shift: tshiftstate);begin if key = vk_escape then close;end;定义过程“findnext(direct: boolean);”,使用enrter键代替tab键。代码如下:procedure tf_frame.findnext(direct: boolean);begin findnextcontrol(activecontrol,direct,false,false).setfocus;end;5.3 物资入库管理设计与实现物资入库管理模块主要功能是记录物资入库的相关信息,使用tstringgrid组件实现多行录入。物资入库管理模块运行结果如图7所示。 图75.3.1 物资入库管理的设计(1)选择“file”/“new”/“other”菜单项,打开“new items”对话框,选择“bpglxt”选项卡,点选“f_frame”,以继承方式使用该窗体。单击【ok】按钮添加一个新命名窗体为“f_instore”,设置caption属性为“物资入库管理”。(2)在窗体上添加tlabel组件,命名为“label1”。设置该组件的caption属性为“物资入库管理”,设置label1组件的font属性。(3)在窗体上添加tpanel组件,命名为“panel2”。设置该组件的align属性为“albottom”;caption属性为空。(4)添加4个tlabel组件到panel2组件上,分别设置它们的caption属性为“供应商名称”、“负责人”、“操作员”、“时间”。添加4个tedit组件到panel2组件上,分别命名为“providername”,“principal”,“operator”。添加tdatetimepicker组件到panel2组件上,命名为“date”。(5)在窗体上添加tpanel组件,命名为“panel1”。设置该组件的align属性为“albottom”,在panel1组件上添加4个tlabel组件和4个tedit组件。(6)在窗体上添加tpanel组件,命名为“panel3”。在该组件上添加3个tbitbtn组件,分别命名为“save”、“cancel”、“quit”。(7)添加tstringgrid组件到窗体上,命名为“reginfo”。设置该组件的align属性为“albottom”;colcount属性为“9”;rowcount属性为“2”;ctrl3d属性为“false”。(8)在窗体上添加tdatasource组件,命名为“regsource”;添加tlistbox组件,命名为“list”;添加tcombobox组件,命名为“comstorage”;添加tdbgrid组件,命名为“grid”。设置grid组件的datasource属性为“regsource”。设计期物资入库窗体下图8:图8 设计期物资入库管理模块5.3.2 相关代码的分析在窗体的onshow事件处理过程中设置tstringgrid组件相关属性,将仓库信息添加到tcombobox组件中。代码如下:procedure tf_instore.formshow(sender: tobject);begin inherited; with reginfo do begin /设置字段名称 cellsbarcode,0:=条形码; cellsstorename,0:= 物资名称; cellsbasicunit,0:=基本单位; cellsstockunit,0:= 采购单位; cellsconvertions,0:= 换算关系; cellsunitprice,0:= 单价; cellsnum,0:=数量; cellsmoney,0:= 金额; cellsstoragename,0:=仓库名称; end; with t_data.query1 do /查询仓库名称,将其添加到组合框中 begin close; sql.clear; sql.add(select storagename from tb_storageinfo); open; end; if t_data.query1.recordcount0 then begin while not t_data.query1.eof do begin comstorage.items.add(trim(t_data.query1.fieldbyname(storagename).asstring); t_data.query1.next; end; comstorage.itemindex := 0; end; cancel.click;end;在tstringgrid组件的onkeypress事件处理过程中限制输入的内容。代码如下:procedure tf_instore.reginfokeypress(sender: tobject; var key: char);begin inherited; if (col = unitprice)or(col = num)or(col = convertions) then begin if not (key in 0.9,.,#8) then /只允许输入数字键和退格键 key := #0 /输入空字符 end;end;keypress键盘事件该事件是当用户按下ascii字符的键盘时发生的。在该事件下的key参数是一个数字,代表字符的ascii值,如13(回车键)或27(esc键)。示例代码如下:if key=#13 then edit2.setfocus /回车后,焦点跳转到edit2组件。在tstringgrid组件的onselectcell事件处理过程中设置单元是否可编辑。代码如下:procedure tf_instore.reginfoselectcell(sender: tobject; acol, arow: integer; var canselect: boolean);begin inherited; row := arow; col := acol; /当物资名称为空时可以编辑条形码,当条形码为空时可以编辑物资名称,/当条形码不为空时可以编辑单价、数量 if (col = barcode)and(trim(reginfo.cellsstorename,row)=)or(col = storename)and(trim(reginfo.cellsbarcode,row)=)or (col = unitprice)and(trim(reginfo.cellsbarcode,row)or(col = num)and(trim(reginfo.cellsbarcode,row)or (col = convertions)and(trim(reginfo.cellsbarcode,row)then reginfo.options := reginfo.options + goediting else reginfo.options := reginfo.options - goediting;end;在tstringgrid组件的onsetedittext事件处理过程中,设置tdbgrid组件出现的位置。代码如下:procedure tf_instore.reginfosetedittext(sender: tobject; acol, arow: integer; const value: string);var cellrect: trect; /记录单元格的区域,用于设置begin inherited; if reg = false then begin grid.visible := false; /使辅助录入表格不可用 if (acol = storename) then /按仓库名称或简码进行匹配查询 begin with t_data.query1 do begin close; sql.clear; sql.add(select * from tb_storeinfo where storename like :storename or nameshort like :nameshort); parameters.parambyname(storename).value:= trim(reginfo.cellsstorename,arow)+% ; parameters.parambyname(nameshort).value:= trim(reginfo.cellsstorename,arow)+% ; open; end; if t_data.query1.recordcount0 then /根据用户的输入是否有匹配的数据 begin regsource.dataset := t_data.query1; if not grid.visible then /计算表格应出现的位置 begin cellrect := reginfo.cellrect(acol,arow); cellrect.left := cellrect.left+reginfo.left; cellrect.right := cellrect.right+ reginfo.left; cellrect.top := reginfo.top+ cellrect.top; grid.left := cell

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论