1

質問はそれをすべて言います。accepttext()手動でまたはを呼び出すかpfc_accepttext、PowerBuilderにデータウィンドウフィールドの値を受け入れるように強制するのが良いかどうかを知りたいです。

この質問の背後にある理由は、いくつかのフィールドを含むポップアップウィンドウにデータウィンドウがあるためです。ユーザーがそのフィールドに値を入力してOKボタンを押すと、データウィンドウが保存され、ポップアップウィンドウが閉じます。[OK]ボタンをクリックすると、最後のフィールドが入力値を正しく受け入れていません。だから私は手動で発砲しaccepttext()たりpfc_accepttextイベントをしたりすることを考えていました。

どんな助けでもありがたいです!!!

ありがとう。

4

2 に答える 2

4

はい、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、残りを処理するためのコードがイベントに含まれている必要があります。

于 2010-10-27T15:20:48.047 に答える
2

したがって、コードを見ないと、pfc_AcceptTextが起動しない理由が完全にはわかりません。ただし、私が言えることは、pfc_AcceptTextは、PowerBuilder Foundation Class(PFC)のLogical UnitofWorkサービスによって定義されたイベントであるということです。PFCのLUWサービスについて一般的に知りたい、または知る必要がある以上のことが私の記事にありますが、このサービスへの意図されたエントリポイントを文書化するのを忘れていることに気づきました。((pfcmain.pbl)pfc_w_master [closequery]で確認できるはずですが)目的は、ウィンドウのpfc_Saveイベントを発生させることです。これにより、すべてのLUWイベント(pfc_Validation、pfc_PreUpdateなど)が適切な順序で発生します。

幸運を、

テリー。

于 2010-10-28T23:47:06.357 に答える