我相信,凡是按照前面步骤实践的看客,应该可以理解这套控制机制了。下面,我们详细展开。
当我们执行增删改时,那真的是五花八门的,怎么可能将它们抽象为一套控制机制呢?好吧,我们把这些五花八门的各种操作留给 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自定义方法,被称之为钩子方法。
你的反馈是我写作的动力,欢迎评论,未完待续。