关于初始化设置
关于初始化设置的代码,我们有如下的建议:
1、设置列标题的代码,必须在项目事件Initialize编写。
2、开启全局表事件的代码,最好在项目事件Initialize编写。
3、设置DataTable的代码,在项目事件Initialize或者AfterOpenProject编写都可以,不过AfterOpenProject更合适一点,因为此时DataTable和Table都已经生成,可以统一设置。
4、设置用户权限的代码,在项目事件AfterOpenProject编写较为合适,如果运行过程中允许切换用户,那么最好在LoadUserSetting事件中编写。
示例一
例如下面设置列标题的代码,必须在项目事件Initialize事件中编写:
With
DataTables("表B")这是因为真正使用列标题是在生成Table的过程中,如果在AfterOpenProject设置列标题,此时Table已经生成,对于列标题的设置不会再有作用。
但是这并不意味着在运行过程中不能修改列标题,只不过修改后,要执行一次BuildHeader方法,而且也不如Initialize高效。
请参考:BuildHeader
示例二
例如你在全局表事件AfterSelChange中设置了代码,且希望这个事件针对所有表触发,那么应该在项目事件Initialize加入代码:
For
Each dt As DataTable In DataTables为什么要在Initialize事件设置,而不是在AfterOpenProject事件设置呢?这是因为后者在项目完全打开后才执行,而在此之前,已经有Table会触发AfterSelChange事件。
示例三
例如希望产品表内容只能在Tables("产品")修改,也就是只能在主表修改,而不能在关联表修改,可以在AfterOpenProject事件中加入如下代码:
DataTables
("产品").AllowEdit = False这样的代码在AfterOpenProject设置较为恰当,因为此时DataTable和Table都已经生成,可以统一对二者进行设置。
示例四
和用户权限设置有关的代码,那么最好LoadUserSetting事件中编写,例如:
If
User.Type = UserTypeEnum.Administrator Then这是因为LoadUserSetting不仅在打开项目后执行,而且每次切换用户也会执行一次,确保权限设置始终有效。