はい、dw.accepttext()
データウィンドウを保存する前に、が起動されていることを確認することをお勧めします。そうしないと、ご指摘のとおり、ユーザーが各フィールドからタブアウトしない限り、ユーザーが入力したすべての情報が保存されない場合があります。どのエンドユーザーがそうすることを期待されるべきではありません。
より複雑なウィンドウ/オブジェクトの場合は、更新が必要な各データウィンドウ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
、残りを処理するためのコードがイベントに含まれている必要があります。