0

ユーザーがデータを編集してから「保存」ボタンをクリックできるデータウィンドウがあります。古い値と新しい値をインスタンス変数に格納するようにデータウィンドウにイベントをコーディングしてItemChanged、参照用にデータベースに保存できるようにしました。ユーザーが DW のフィールドを編集し、タブ アウトしない場合、ItemChangedは呼び出されません。そのため、データを入力してすぐに [保存] をクリックすると、インスタンス変数が入力されません。

AcceptText「保存」ボタンで最初に呼び出しています。これは、DW に入力されたすべてのデータを取得して呼び出しますItemChanged(PB ヘルプによると)。しかし、そうではありません。奇妙なのは、[保存] ボタンのすべてのコードを調べてから、ItemChangedイベントのコードを調べているように見えることです。

別の奇妙なことは、それをデバッグしてItemChangedイベントにブレークポイントを配置すると、[保存] をクリックするとItemChangedコードが実行されますが、[保存] ボタンのコードは実行されません。[保存] をもう一度クリックする必要があります。それは、デバッグするときだけであり、そこにブレークポイントがある場合だけです。アプリケーションを通常どおり実行するか、ブレークポイントなしでデバッグするとItemChanged、[保存] ボタンの後に呼び出されます。

こんなの見たことないので、どなたかアドバイスいただけると助かります。ありがとう!

4

3 に答える 3

0

Terry が推奨する完全な再構築で問題が解決しない場合は、ターゲットを移行してみてください。別の完全な再構築を試みるのではなく、直接移行に進みます。移行は、「いいえ、本当にすべてを再構築する」コマンドと考えてください。

于 2012-05-21T20:00:03.853 に答える
0

私の PB トラブルシューティング ガイドで、意味をなさないプログラム フローを見つけたときに最初に推奨することの 1 つは、すべてを再生成すること、つまりフル ビルドを行うことです。それだけで問題は解決できます。(選択的な再生成でも解決できますが、必要な依存関係やシーケンスについて疑問がある場合は、システム指向の生成に頼る傾向があります。)

ItemChanged のインスタンスにどのようにアクセスしたのか知りたい場合は、まず、デバッガーの呼び出しスタック ペインを確認してください。AcceptText() 呼び出しによるものである場合は、現在のレベルの上のレベルをダブルクリックすると表示されるはずです。ItemChanged の上にコール スタックがない場合は、タブで列の外に移動したり、Enter キーを押したり、AcceptText() をポストしたりした可能性があります。PBL Peeper の [Trace] ページと組み合わせた PBDEBUG トレースを使用すると、デバッガーでは検出されない場合に、どのようにしてそこに到達したかを明らかにすることができます。

これは間違いなく奇妙な動作であり、regen が問題を解決することを願っています。

幸運を、

テリー。

于 2012-05-17T17:20:34.003 に答える
0

私の 19 年間の PB での開発で、このようなものを見たり聞いたりしたことはありません! @Terryが言ったように、オブジェクトが破損していて、それを再生成できる場合にのみ可能です。もちろん、Windows のデータウィンドウを別の PBL にエクスポートして、そこで動作するかどうかを試すこともできます。約 10 年前、PBL ファイルが破損し、オブジェクトの再生成が役に立たないという同様の問題がありました。誤って、新しいアプリを再作成しようとしましたが、そこで動作しました。ゆっくりと、これはより多くのテストで明らかになりました。このようなばかげた問題で私たちが無駄にしたのと同じ時間を無駄にしないことを願っています!

于 2012-05-20T17:18:24.090 に答える