0

我的问题标题可能有点误导;如果是这样,我道歉。我不确定如何更好地命名它。

我正在尝试将地址验证的地理编码添加到 Delphi 7 表单(使用 CLX 构建),但我遇到了一些问题。详情如下:

  • 用户应按顺序在地址字段中输入数据 - 地址、城市、州、邮政编码。
  • 离开邮政编码字段后,将立即调用地址验证。(用户规范。)
  • 如果地址返回为无效,则将给用户一个是/否选择,询问是否更正给定地址。(用户规范)
  • 如果是,则将焦点重置到适当的字段(地址、城市、州、邮编),如地理编码 api 的结果所示。否则,继续下一个字段。

退出是/否对话框后,鼠标的行为似乎有点古怪。单击一次,看起来好像以前的表单(应该在此时关闭)正在接收焦点 - 该表单上的点击事件能够更改此表单上的某些值(预加载数据),并且如果单击鼠标,这些值将更改。禁用 on-click 事件仅意味着在新表单上单击鼠标一次,然后单击行为返回到预期的行为。

在研究这个时,我在网上看到了几件事;这些的共识是我的问题是邮政编码字段的 OnExit 事件内的消息对话框的结合。(如果我理解正确阅读的内容,MouseUp 事件似乎在两个窗口之间丢失了。)

如果我有自己的方式,我会包括一个手动按钮来运行验证。鉴于最终用户的限制将我束缚在我没有该选项的情况下,处理这种情况的最佳方法是什么?

4

1 回答 1

0

理想情况下,您可以使用 zip 字段的OnExit事件TThread.Queue()来延迟消息对话框,直到OnExit先退出之后。唉,TThread.Queue()直到 Delphi 8 才引入。因此OnExit必须使用等效的方法,例如向自己发布自定义异步消息或启动一个短的一次性计时器,以触发延迟操作。

于 2014-12-04T23:00:44.903 回答