我们总是梦想着对象化(九)

2021-08-16 11:40:55 浏览数 (1)

我相信,凡是按照前面步骤实践的看客,应该可以理解这套控制机制了。下面,我们详细展开。

当我们执行增删改时,那真的是五花八门的,怎么可能将它们抽象为一套控制机制呢?好吧,我们把这些五花八门的各种操作留给 MyCursor 来处理。先来看看其他的自定义类应该怎样设计。

首先,我们在 MyFomr 增加九个自定义方法:BeforeAdd、Add、AfterAdd、BeforeDelete、Delete、AfterDelete、BeforeEdit、Edit、AfterEdit。

在 BeforAdd、BeforeDelete、BeforeEdit方法中,写入以下语句:

代码语言:javascript复制
Return .T.

我们以 Add 自定义方法为例,Delete、Edit 方法雷同:

代码语言:javascript复制
With Thisform
 If .BeforeAdd() = .T.
 Private loDE
 Local loDE As DataEnvironment
 m.loDE = Evaluate([This.]   This.DEClass)
 m.loDE.Add()
 .AfterAdd()
 Endif
Endwith

当我们需要进行增加操作时,仅需要在对应的 Command 的 Click 事件中写入:

代码语言:javascript复制
Thisform.Add

至此,我们已经完成了界面和数据操作的分离。

我们在实际使用时,可以在 BeforeAdd 方法中依据实际情况写入一定的代码,如果条件满足,返回逻辑值真,否则,返回逻辑值假,这样,我们就可以有条件的控制是否可以进行数据添加的操作。当然,如果你无需做前置条件的检测,那么你也可以忘记它的存在。而AfterAdd 方法,则为自己在增加数据后需要执行的界面元素操作提供了一个接口。

你可以依据以上的代码自行完善其他的自定义方法。需要说明的是,BeforeXXX 和 AfterXXX自定义方法,被称之为钩子方法。

你的反馈是我写作的动力,欢迎评论,未完待续。

0 人点赞