0

質問があります、

私は先祖の窓を持っています。祖先ウィンドウのオープン イベントには、1 つのポスト イベントがあります。子孫ウィンドウを開くと、そのポストイベントは子孫ウィンドウで機能しますか?.

これについて誰か説明してください。

注: 子孫ウィンドウの open イベントでは、拡張祖先スクリプトがチェックされています。

よろしく、アンバット

4

2 に答える 2

0

PowerBuilder では、イベントは先祖から最初に呼び出されます。w_grandfather => w_father => w_child があり、w_grandfather が基本クラス (祖先) であるとします。最初に w_grandfathers イベントが発生し、その後 w_father のイベントが発生し、その後 w_child のイベントが発生します。

たとえば、w_father で祖先スクリプトの拡張のチェックを外し、そこにスクリプトを記述した場合、w_grandfathers イベントは発生しません。最初の w_fathers イベントが発生し、その後 w_child のイベントが発生します。この場合、w_grandfather のイベントを呼び出したい場合は、次のように明示的にコードを記述する必要があります。

super::イベントオープン()

また、postevent を使用すると、イベント リストの最後のイベントの後にイベントが発生することに注意してください。「自由に発砲」する必要がある場合:)トリガーイベントを使用する必要があります。

これが役立つことを願っています。遠慮なく尋ねてください!良い1日を!

Br. ガボール

于 2013-02-26T06:49:02.443 に答える
0

メソッドがイベントであろうと関数であろうと、直接呼び出されるかポストされても、PowerBuilder は最初にインスタンス化されたオブジェクト、つまり子孫でメソッドを検索します。一致するスクリプト メソッドが見つかった場合、PowerBuilder はそれを実行します。メソッドが見つからない場合、PowerBuilder は、一致するスクリプト メソッドが見つかるまで先祖のチェーンを検索します。最初に見つかったスクリプト化されたメソッドが実行されるものであり、それ以外のものではないことを理解することが重要です。PowerBuilder は、「祖先の拡張」機能を使用してイベントを混乱させます。エクスポートされた構文を見ると、このボックスをオンのままにしておくと、PowerBuilder がスクリプトの先頭に、call構文。これは、イベントが先祖から最初に呼び出されると DARKinVADER が言及していることです。デフォルトでは、各子孫スクリプトが直接の祖先を呼び出しているため、これが発生するだけであることを理解する必要があります。祖父のスクリプトにブレークポイントを設定すると、スクリプト化されたすべての子孫メソッドがコール スタックに表示されます。

PowerBuilder は舞台裏で先祖への呼び出しを挿入しているため、多くの開発者は、イベントを拡張するときにancestorreturnvalue. あなたが何もしなければ、ancestorreturnvalueそれは失われます。この方法でフレームワークを壊すことができます。たとえば、u_dw のイベントを拡張し、ancestorreturnvalue正しく処理しないと、PFC リンケージ サービスを中断できます。

于 2013-02-27T23:02:13.097 に答える