Foxwx微信公众号管理软件---同心软件 -以高级编程语言进行微信公众号管理,我们一直在努力!

CURSOR对象化3

接下来要干的活,就是把数据环境中表的字段拖到表单上。。。。然后,你先自己完成这个表单,用你自己的方式。。。我去休息一会。。。。。


我想,大多数看客都是在脑子里完成我布置的“作业”滴。。。它太简单了,不值得我们动手。事实上,如果按照 VFP 经典的方式,确实也很浪费时间。

先来分析一下你脑子里的代码:

首先,你需要一个 “增加” 按钮,里面的代码是这样滴:

  1. Append Blank

  2. Thisform.Refresh

然后,细心的人可能还会至少添加 “上一条”和“下一条”这两个按钮。这两个按钮的代码,后面会提到,这里暂时略去。

在“增加”按钮里,一共是两条语句,一句操作数据,一句操作表单元素。这个要分滴清。现在,我们来观察一下这个表单。当你点击“新增”按钮时,你会看到一个和记录号一致的序号,和一个永远都是“男”的性别。这是前面默认值捣的鬼。前面所设置的字段规则,在这里似乎没有任何的体现。事实上,当违反字段级规则时,你可以在 Error 事件里予以捕获并显示你在表设计器里定义好的出错提示信息:

  1. Lparameters nError, cMethod, nLine

  2. If nError=1582    &&违反字段级规则

  3.     Messagebox(Message())

  4. 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 方法。里面只要有一句就可以了:

  1. This.MyCursor.Append()

然后,再增加一个自定义方法 CursorInit:

  1. This.MyCursor.CursorInit()



同样,在 MyCursor 类里,添加一个新的 Append 自定义方法:

  1. Select (This.Alias)

  2. Append Blank

然后添加一个 CursorInit 方法:

  1. Try

  2.         Open Database (This.Database)

  3. Catch

  4. Endtry


  5. Use (This.Alias) Again In 0


至于 MyRelation ,先让它边儿凉快着。。。用的时候,累死它。。。

OK。到这里,其实就已经大功告成了。老油条们已经明白我想怎么干了,不懂滴就继续看哈。。。。。。

回到前面的内容,在“性别管理”表单上,添加一个自定义方法:Append,里面写上:

  1. Private loDE

  2. Local loDE as DataEnvironment


  3. m.loDE = Evaluate([This.] + This.DEClass)


  4. m.loDE.Append()

再为表单添加一个自定义方法:CursorInit

  1. Private loDE

  2. Local loDE as DataEnvironment


  3. m.loDE = Evaluate([This.] + This.DEClass)


  4. m.loDE.CursorInit()


然后,更改”增加”按钮的 Click 事件代码为:

  1. Thisform.Append()

  2. Thisform.Refresh()

在表单的 Load 事件里写上:

  1. Thisform.CursorInit()


这样,我们的工程基本就完成99%了。剩余的就是把这些玩意像拼积木一样拼在一起。

首先,再定义一个 MyCursor 的子类,类名命名为 o性别 ,设置好其 Alias 和 DataBase 属性;定义一个 MyDataEnvironment 的子类:o性别管理。将 o性别 添加到 o性别管理 里面,并更改其 Name 属性为 :MyCursor。

回到表单上来,将数据环境中的表移除。然后双击表单的 DEClass 属性,选择对话框中的 YES,定向其为刚才创建的 o性别管理。

再次运行你的表单。然后好好回味一下。。。。我们已经将数据操作和界面操作分离了。。。。。



2018年6月30日 | 发布:admin | 分类:程序开发 | 评论:0

发表留言: