delphi - 验证模式对话框字段的最佳方式?

标签 delphi validation winapi dialog modal-dialog

我经常需要有模态对话框来编辑属性或应用程序配置设置,但我对如何验证这些并向用户展示验证结果从来都不是很满意。

选择和工具通常是:-

  1. 设计 UI 以便进行无效选择 根本不可能 - 即使用 “屏蔽编辑”,范围限制 旋转编辑,

  2. try catch 错误 找到 - 立即对话或 用户无效时的反馈 在某处输入的值(尽管, 因为这可能是由于 不完整的条目,这可以是 视觉上分散注意力)

  3. 检测更改的错误 控制焦点

  4. 确定时验证整个对话框 被按下,并显示消息 显示错误的框。

No.4 通常是最简单和最快的编码,但我从来没有真正满意过它。

您发现了哪些好的技术来处理这个问题?

虽然这个问题相当笼统,但理想的答案很容易在 Delphi for Win32 中实现...

最佳答案

与一切一样,这取决于。 :) 我试着从用户的角度来看其中的一些。

第 1 点。我个人不喜欢 mask 编辑,但是旋转编辑的范围限制、预填充的组合框等对于一般完整性检查很有意义,它使用户的生活更轻松。

我认为第 2 项可能会使用户在使用对话框时感到痛苦。他们可能不会按照您认为的顺序输入信息,或者可能会留下不完整的字段并在最后返回。

为了验证,我使用了 3 和 4 的组合。

根据字段(例如所需值),我可能会在每次按键时对其进行验证,如果无效则禁用 OK 按钮。您可以改变错误字段的颜色或使用其他类型的可见验证器控件。这对用户来说是显而易见的,并且不会打断他们的“流程”。

当用户点击“确定”时,不容易即时检查的事情(例如,对服务器的调用)将完成一次。

关于delphi - 验证模式对话框字段的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1453679/

相关文章:

delphi - 为什么我的Delphi 7调试器会随机决定停止接受某些键盘输入

javascript - AngularJs 服务器端验证

c# - Entity Framework 上下文验证

javascript - 使用 jQuery 验证电子邮件

c++ - 避免等待 SwapBuffers

c++ - 该进程似乎已死锁。所有线程都已停止工作

arrays - Delphi:声明包含常量数组的常量记录类型

delphi - 我什么时候应该在 Delphi 中使用增强的记录类型而不是类?

multithreading - 使用 IOmniPipeline 下载和处理文件

winapi - 调用 GetBinaryTypeA 时出现段错误