autofill

所属分类:Windows编程
开发工具:VFP
文件大小:96KB
下载次数:4
上传日期:2008-11-20 20:10:52
上 传 者阿宝哥
说明:  vfp下制作的快速填充类。喜欢VFP的朋友可以拿来借鉴一下。
(VFP produced rapid filling categories. VFP like friends can learn from what used to.)

文件列表:
quickcbo (0, 2002-05-23)
quickcbo\quikdemo.FXP (550, 1999-12-09)
quickcbo\hf.prg (468, 1999-12-01)
quickcbo\HOSPITAL.CDX (80384, 1999-12-09)
quickcbo\HOSPITAL.DBF (47167, 1999-12-09)
quickcbo\hospital.vct (6869, 1999-12-09)
quickcbo\hospital.vcx (3539, 1999-12-09)
quickcbo\quikcbo.pjt (108103, 2001-08-04)
quickcbo\quikcbo.pjx (11333, 2001-08-04)
quickcbo\quikdemo.prg (525, 1999-12-09)
quickcbo\quikdemo.txt (11433, 1999-12-06)
quickcbo\QUIKDEMO.VCT (16092, 2001-08-04)
quickcbo\quikdemo.vcx (3975, 1999-12-09)
quickcbo\QUIKFILL.VCT (19291, 1999-12-09)
quickcbo\quikfill.vcx (2667, 1999-12-09)
quickcbo\SRCH-DIS.BMP (322, 1995-09-22)
quickcbo\SRCH-UP.BMP (322, 1994-07-08)
quickcbo\temp.CDX (4096, 1999-12-07)
quickcbo\temp.dbf (2624, 1999-12-07)
quickcbo\zsearch.VCT (15424, 1999-12-09)
quickcbo\zsearch.vcx (3757, 1999-12-09)
quickcbo\khdw.DBF (81366, 2001-08-04)
quickcbo\khdw.CDX (11264, 2001-08-04)

名称:Quick-Fill 快速填充类 作用: 作者:Eugene M. Steinbacher Eugene M. Steinbacher United Consulting, Inc. 911 Main Street Kansas City, Mo. ***105 CompuServe ID: 73214,1547 _______________________________________________________________________________ 这是一个允许用户在数据输入时进行快速填充的类。该类保存在类库QUIKFILL.VCX中。其它的程序都是用于演示该类的。要运行该演示程序,进入VFP,设置目录到Quickfill所在的目录,在命令窗口中打入: DO QUIKDEMO _______________________________________________________________________________ 首先, 'cmdNav', 'cmdSrch', 和 'cmdSrchbmp' 都是用于子类 'QuickCbo'的。它们没有单独进行演示(虽然它们可以作为你自己的数据查找的起点)。 现在让我们看看这三个类。 _______________________________________________________________________________ QuickFill 类: 该类允许你在数据输入时对字符型或数值型字段进行快速填充。目前还没有对日期型或逻辑型字段进行过测试(真有人要对日期型或逻辑型字段进行快速填充吗?)。当然, 你也可以从该类中派生子类并创建更复杂的 QuickFill 类(参见 QuickFillTable类)。 自定义方法: m_fillvalue:该方法每当用户按下键时执行(在该控件上)。它返回快速填充值到该文本框。它会根据 'This.value' 来确定当前值并再次比较。如果你不想填充当前值,它必须返回 .NULL.。如果你在这里没有写任何代码它将会象普通文本框一样工作(由于默认的方法代码是 "RETURN .NULL.")。 例如: 如果用户输入 '中', 我们要填入"中国人民解放军", 'V' 填入"Visual FoxPro ", '庄' 填入"庄稼是个专家"。 除此之外则不返回填充值。'm_fillvalue'中的代码应该如下: LOCAL lcRtnVal DO CASE CASE UPPER(This.value) = '中' lcRtnVal = "中国人民解放军" CASE UPPER(This.value) = 'V' lcRtnVal = "Visual FoxPro " CASE UPPER(This.value) = '庄' lcRtnVal = "庄家是个专家" OTHERWISE lcRtnVal = .NULL. ENDCASE RETURN lcRtnVal 这只是一个与你自己要返回QuickFill的值无关的例子。重要的是你要返回一些值或.NULL.。它的局限仅仅是你的想象力。请参见其它的例子。 _______________________________________________________________________________ QuickFillTable 类: QuickFillTable 是QuickFill的子类。它允许你从一个表中返回一个填充值。它增加了一些属性, 并已经包含了从表中返回值的"m_fillvalue"方法代码。 必须的属性: r_cSearchAlias: 要搜索的表名。 r_cSearchOrder: 要使用的索引。 r_cSearchValue: 要填充的字段。 例子:该例展示了如何查找一个医院名字。我们必须告诉该类要搜索的表名,要使用的索引,要填充的字段,因此 'r_cSearchAlias' 是 "HOSPITAL", 表的名字; 'r_cSearchOrder' 是 "HOSPNAME", 索引名字; 'r_cSearchvalue' 是 "HOSPITAL.HO_NAME", 要填充的字段。 注意:属性'r_cSearchValue'的值中字段名前必须包括表的别名"alias.field"。这给编程者提供了更大的灵活性来在另一个表中进行搜索,即:以另一表中的数据进行填充。 _______________________________________________________________________________ QuickCbo 类: 该类是QuickFillTable的子类。这是我特别为我的一个客户写的,但是因为有很多人问到我类似的问题,所以我决定把它包含它到该版本中。使我犹豫不决的是它相当复杂(由于它的功能强大)并要求在多个地方进行初始设置。我通常不得不注意怎样在一个新表单中设置它时又怎样在另一个表单中设置它(并且我写了它!!!)。因此我只能设想它将在最初开始进行设置。 也许有人会改进它,使它的初始化更简单。该 demo 演示了该类,因此我建议看看源代码以便更好地理解它是如何初始化的。 这里是其中的一个方案:仅管快速填充可以很好地工作,但假若我有10个不同的"Saint John"医院在表中?我怎样才能得到正确的那一个?回答是:在该类中放入一个 SEARCH 按钮来显示一个医院名字列表。让用户选取正确的结果并返回到 QuickFill 文本框中。 那么,假若我在执行搜索后未找到该医院,又该怎么办?回答是:允许用户直接进入表维护程序,增加一个记录到表中,并返回新的显示值到QuickFill文本框。该类为你处理了以上两种情形。你可以在文本框中输入一个不存在的值来增加记录到表中,或进入搜索表单后单击 增加 按钮。 注意:这种增加记录的方法,我称它为"add-on-fly"。你会在该演示程序的方法,属性和变量名中看见该名字。 注意:我使用的搜索表单是Micro Endeavors 所写(我作了一些修改;我是一个程序员,我必须修改一切!!!)。你可以使用任意你喜欢的搜索表单。只需修改搜索按钮的 CLICK事件代码。 开个玩笑:注意查找按钮上的 enabling 和 disabling图象。Enabled 按钮是 "睁开的眼睛",disabled 按钮是"闭上的眼睛"。我找到了"睁开的眼睛" 的图象,"闭上的眼睛" 则是我自己画的。如果你仔细看,你可能会注意到我不是一个艺术家。要是有谁能为我修改它,请通知我一声,我 好将它下载回来。 好了,让我们继续... 要做的第一件事是初始化QuickFillTable所需的属性,你必须 "EDIT" 容器并选择QuickFillTable 文本框(txtQuickCbo)。要进入该属性。参见本文中的 QuickFillTable 节来查看该属性的值。 其次,在搜索按钮(cmdSrch)的INIT方法代码中,你需要指定网格中要显示的字段。该值被装入一个数组。各数组元素指定字段的名字,表的索引(如果这是你要搜索的字段),列头和表中字段的大小。如果允许用户按下"增加"按钮来添加一条记录,你还需要初始化代码来处理"add-on-fly",这包含在 CLICK事件中。该演示展示了应该怎么做。重要的代码是在"cmdSrch"的INIT方法和CLICK事件中。当然,如果你决定使用你自己的查找窗口你将以你自己的方法进行初始设置。 初始化最后一步是哪一字段作为该控件的控制源(control source)及控制源所在的表?这是一个与你的查找表不同的表,这个表没的包含在该演示中。我没有包含它是为了说明,该类工作时不需要这个表。 让我们看例子。在我的应用程序中,用户在工作时选择了一个医院,为了节约磁盘空间,我们保存了一个医院号在客户记录中,当我们需要医院信息时,引用到医院表(我希望人人都象这样,这叫"规格化你的数据"),但是我们怎样才能保存正确的医院号在客户表中呢?我怎样才能知道那一 个医院号是今后我要与之联系的医院名字呢?如果我有一个医院号在客户记录中,当我为客户显示其它信息时就可以显示正确的医院名字了。 在容器类'QuickCbo'中用了三个属性来处理以上问题。 属性: r_cSearchIDValue: 查找表中的标识字段名. r_cControlSource: 一般表中的标识字段名. r_cSearchIDOrder: 用于查找的指定的标识字段的索引名. 我们将用上例来演示这三个值.客户表叫"IPCCUST".该表中的医院号字段叫"CC_HOSPNO";查找表叫"IPTHOSP";该表中的医院号字段叫"HO_HOSPNO";该字段上的索引是"HOSPNO"。 因此,'r_cSearchIDValue' 将是"IPTHOSP.HO_HOSPNO"; 'r_cControlSource' 将是"IPCCUST.CC_HOSPNO"; 'r_cSearchIDOrder' 将是"HOSPNO"。 该类是怎样用这三个字段来工作呢?当客户信息显示后,QuickCbo 类将使用"IPTHOSP.HO_HOSPNO"在医院表(IPTHOSP)中执行搜索(SEEK),它将选出医院名并将其显示在QuickFill文本框中。当用户选择了一个医院且QuickCbo容器失去焦点时,该类通过"IPCCUST.CC_HOSPNO"定位到"IPTHOSP.HO_HOSPNO"的相应记录上。 你是不是一头雾水?我也是!!! 如果有什么问题的话,我放置了我的 CompuServe ID 在该文档中。 _______________________________________________________________________________ 你已经看得差不多了,因此我将放入全部的版权及非承诺在该文档中(就象通常那样),但我要说,由于这是你自愿选择的免费软件,使用该软件完全出于你的自愿,我对可能出现的问题不承担任何责任。 我曾经有一个客户,一个受计算机惊吓的雇员(这是那里第一次安装计算机设备),我向她保证,她只进行数据输入就决不会出其它问题。在劝说了几分钟后她开始输入。但当她按下第一个键时,整个建筑停电了。因些她绝不原谅我把那地狱般的设备带到她的办公室,我也不知道她是否再碰过那部计算机。 我包含了一个项目文件。运行演示程序时,并不需要它。我用它来进行开发,因此我想,我应包含它以便于你更容易的访问源代码。 我花了很多小时来写和测试这些类库。如果你使用它们,我希望它们能为你节约时间,因为你不用从头做起。当然它只是一个回报小礼物,因为我也曾使用过许多别人写的程序。我已上载到 CompuServe 的其它类库还有:zTherm, Calendar, 和 Calc.我想这些都是容易取得的类库(当然我并没有任何偏见!)。Check them out. _______________________________________________________________________________ Eugene M. Steinbacher United Consulting, Inc. 911 Main Street Kansas City, Mo. ***105 CompuServe ID: 73214,1547 原作:尤金 M 斯腾贝克 译者:任明汉 1999.11.30 注:译者对原程序进行了一些修改

近期下载者

相关文件


收藏者