1

这个问题说明了一切。我想知道手动调用accepttext()pfc_accepttext强制 powerbuilder 接受数据窗口字段中的值是否是个好主意。

这个问题背后的原因是我在一个包含一些字段的弹出窗口中有一个数据窗口。当用户在该字段中输入值并按下OK按钮时,将保存数据窗口并关闭弹出窗口。单击确定按钮时,最后一个字段未正确接受输入值。这就是为什么我在考虑手动触发accepttext()pfc_accepttext事件。

任何帮助将不胜感激!!!

谢谢。

4

2 回答 2

4

dw.accepttext()是的,在尝试保存任何数据窗口之前确保触发 a 是一个非常好的主意。否则,就像您指出的那样,它可能不会保存用户输入的所有信息,除非他们从每个字段中跳出;不应该期望最终用户这样做。

对于更复杂的窗口/对象,您可以为此创建一个简单的函数,例如wf_accepttext()其中包含dw.accepttext()需要更新的每个数据窗口的所有调用。然后,您可以在尝试更新数据窗口之前调用该函数。

(编辑)其他想法:

特里上面的评论让我想起了我在最初的回答中忽略的一些东西。如果字段的验证失败,则accepttext()返回。-1因此,如果您创建一个自定义函数来处理所有accepttext()调用,请确保编写它来处理此返回代码。这样的事情就足够了:

/* wf_accepttext() */
if dw_foo.accepttext() = -1 then return false
if dw_bar.accepttext() = -1 then return false
// etc..
return true

这样,在你的保存函数的顶部,我们称之为它wf_save(),你可以这样做:

/* wf_save() */
if not wf_accepttext() then return false
/* any other save validation and the dw.update() goes below here */

如果某些事情没有得到验证,wf_save()则会保释,并且您的itemchanged事件应该有代码来处理其余部分。

于 2010-10-27T15:20:48.047 回答
2

So, without seeing your code, it's not entirely clear why pfc_AcceptText isn't firing. However, what I can say is that pfc_AcceptText is an event defined by PowerBuilder Foundation Class's (PFC's) Logical Unit of Work service. While more than you'd generally ever want or need to know about PFC's LUW service can be found in my article, you've made me realize I've forgotten to document the intended entry point to this service. The intention (as you should be able to see in (pfcmain.pbl)pfc_w_master [closequery]) is that you fire the window's pfc_Save event, which will fire all the LUW events (e.g. pfc_Validation, pfc_PreUpdate) in the appropriate sequence.

Good luck,

Terry.

于 2010-10-28T23:47:06.357 回答