delphi – 结合OnValidate和OnBeforePost?
例如,我有一个带有DBNavigator和一些DBEdits的表单.
我想要实现以下目标: >当用户在DBEdit中输入错误并想要切换到另一个控件时,应显示警告,但他可以继续工作. 问题是,OnValidate只是一个TFieldNotifyEvent,因此无法告诉应用程序编辑是否有效,因此在发布之前无法检查所有内容是否有效. 我试过以下: 想法1:让OnBeforePost验证并抛出异常 >专业: >将无法发布无效数据 > Contra: >当用户离开DBEdit时,不会显示警告 想法2:在OnValidate中抛出异常 >专业: >无法发布无效数据. > Contra: >如果用户无法输入有效的内容(例如因为他不知道输入什么内容),用户可能会处于无限循环中,并且他甚至无法按下DBNavigator上的“Revert”按钮!在这种情况下,他必须使用任务管理器终止应用程序,这是一个关于用户友好性的最坏情况. 想法3:在OnValidate中显示(非异常)警告,并在OnBeforePost中再次验证(并抛出异常) >专业: >可以发出警告,无法发布无效数据. > Contra: >检查必须实施两次(即使外包到一个函数中),开发人员可能会忘记这两个检查中的一个.此外,对于具有许多要验证的字段的大型项目,它会很快变得混乱. 有没有更好的办法? 解决方法
在我看来,您正在将业务逻辑(数据验证)与UI(OnValidate)混合在一起.分开他们.将所有业务逻辑放在单独的函数或对象中.可能甚至值得实现MVC模式.但在这种情况下,您将不得不用DBM控件替换ORM框架LiveBindings.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |