CURSOR对象化3
接下来要干的活,就是把数据环境中表的字段拖到表单上。。。。然后,你先自己完成这个表单,用你自己的方式。。。我去休息一会。。。。。
我想,大多数看客都是在脑子里完成我布置的“作业”滴。。。它太简单了,不值得我们动手。事实上,如果按照 VFP 经典的方式,确实也很浪费时间。
先来分析一下你脑子里的代码:
首先,你需要一个 “增加” 按钮,里面的代码是这样滴:
Append Blank
Thisform.Refresh
然后,细心的人可能还会至少添加 “上一条”和“下一条”这两个按钮。这两个按钮的代码,后面会提到,这里暂时略去。
在“增加”按钮里,一共是两条语句,一句操作数据,一句操作表单元素。这个要分滴清。现在,我们来观察一下这个表单。当你点击“新增”按钮时,你会看到一个和记录号一致的序号,和一个永远都是“男”的性别。这是前面默认值捣的鬼。前面所设置的字段规则,在这里似乎没有任何的体现。事实上,当违反字段级规则时,你可以在 Error 事件里予以捕获并显示你在表设计器里定义好的出错提示信息:
Lparameters nError, cMethod, nLine
If nError=1582 &&违反字段级规则
Messagebox(Message())
Endif
然后,我们还需要注意的是,你的表是在表单的数据环境中自动打开的。而且,当你点击表单环境和表单环境中的表时,如果你的属性窗口是打开的,那么,你会看到,它们是对象!如果你继续深究 DataEnvironment 和 Cursor 对象,你会产生一个疑惑,VFP 在控制表时,到底是不是对象化。
给你一个疑问,后面不会解答。
好了。到这里再次分解一下你增加一条记录时 VFP 的所有动作:
1 在表单载入前打开表;
2 在表单载入后,和表字段绑定的控件,Enabled 似乎被设置为 .F.
3 你增加了一条空记录
4 依据字段默认值,VFP自动滴为空记录填上了值
5 刷新了表单,绑定表字段的控件呈现可编辑状态。
有一个小DEMO,关于字段级规则和记录级规则应用的: 字段级规则及记录级规则的应用.rar (13 K) 下载次数:3
上回书说到了 DataEnvironment 和 Cursor。这东西估计从 VFP3 就存在了。。。但是好像大概可能似乎是从 VFP8 才开始开放给开发者。。。这无关紧要了。。。为什么江湖上没有流传过它们的传说呢?也许是我孤陋寡闻了。。。
既然我们要把数据操作从界面元素的操作中分离出来,那么,我们还是先搞一套自己的 DataEnvironment 和 Cursor。。。。。。
新建一个 MyDataEnvironment 和 MyCursor 类,并存储在 MySPT.VCX 中,如果,你不想费事,还可以新建一个 MyRelation 类。
对于 MyDataEnvironment ,你可以先新增一个 Append 方法。里面只要有一句就可以了:
This.MyCursor.Append()
然后,再增加一个自定义方法 CursorInit:
This.MyCursor.CursorInit()
同样,在 MyCursor 类里,添加一个新的 Append 自定义方法:
Select (This.Alias)
Append Blank
然后添加一个 CursorInit 方法:
Try
Open Database (This.Database)
Catch
Endtry
Use (This.Alias) Again In 0
至于 MyRelation ,先让它边儿凉快着。。。用的时候,累死它。。。
OK。到这里,其实就已经大功告成了。老油条们已经明白我想怎么干了,不懂滴就继续看哈。。。。。。
回到前面的内容,在“性别管理”表单上,添加一个自定义方法:Append,里面写上:
Private loDE
Local loDE as DataEnvironment
m.loDE = Evaluate([This.] + This.DEClass)
m.loDE.Append()
再为表单添加一个自定义方法:CursorInit
Private loDE
Local loDE as DataEnvironment
m.loDE = Evaluate([This.] + This.DEClass)
m.loDE.CursorInit()
然后,更改”增加”按钮的 Click 事件代码为:
Thisform.Append()
Thisform.Refresh()
在表单的 Load 事件里写上:
Thisform.CursorInit()
这样,我们的工程基本就完成99%了。剩余的就是把这些玩意像拼积木一样拼在一起。
首先,再定义一个 MyCursor 的子类,类名命名为 o性别 ,设置好其 Alias 和 DataBase 属性;定义一个 MyDataEnvironment 的子类:o性别管理。将 o性别 添加到 o性别管理 里面,并更改其 Name 属性为 :MyCursor。
回到表单上来,将数据环境中的表移除。然后双击表单的 DEClass 属性,选择对话框中的 YES,定向其为刚才创建的 o性别管理。
再次运行你的表单。然后好好回味一下。。。。我们已经将数据操作和界面操作分离了。。。。。