ローカル データ フィルターの変更の検出<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
以下は、データ フィルターを使用するスクリプトです。データ フィルターが変更されると、行状態ハンドラーがトリガーされ、チャートが更新されます。本当にローカル フィルターを使用したいのですが、ローカル フィルターの変更を検出する方法がわかりません。ローカル データ フィルターの変更をどのように検出するのでしょうか?
デフォルトの名前はここにあります( 1 ) ;
dt =開ける( 「$SAMPLE_DATA\半導体能力.jmp」 ) ;
f =関数( {ある} 、
// レポート出力の制限概要アウトライン ボックスから LCL と UCL を取得します。
myLCL = (報告( ccb )[ 「NPN1制限概要」 ][テーブルボックス( 1 )][ 2 】 <<得る)[ 1 】 ;
私のUCL = (報告( ccb )[ 「NPN1制限概要」 ][テーブルボックス( 1 )][ 4 】 <<得る)[ 1 ] ;
// 新しい軸設定を管理図に適用し直します
報告( ccb )[軸ボックス( 3 )] <<分( myLCL ) ;
報告( ccb )[軸ボックス( 3 )] <<マックス(私のUCL ) ;
) ;
rs = dt <<行状態ハンドラーを作成する( f ) ;
新しい窓( 「実例」 、
データフィルターコンテキストボックス(
H リストボックス(
dt <<データフィルター(フィルターの追加(コラム( :サイト) ) 、モード(選択する( 1 ) 、見せる( 1 ) 、含む( 1 )) ) 、
プラットホーム( dt 、
ccb =管理図ビルダー(
サイズ( 534 、 453 ) 、
コントロールパネルを表示( 0 ) 、
変数( Y ( : NPN1 ) ) 、
チャート(位置( 1 ) 、限界) 、
チャート(位置( 2 ) ) 、
レポートに送信(
急送(
{} 、
「NPN1」 、
スケールボックス、
{分( 96.6346153846154 ) 、マックス( 131.634615384615 ) 、株式会社( 5 ) 、マイナーティック( 0 ) 、
参照線の追加( 104.412948990151 、 "固体" 、 "青" 、 「LSL」 、 1 ) 、
参照線の追加( 131.893493064355 、 "固体" 、 "青" 、 「USL」 、 1 ) 、
参照線の追加( 118.153221027253 、 "固体" 、 "青" 、 "目標" 、 1 )}
)
)
)
)
)
)
) ;
送信元郵便Windows 10用
Re: ローカル データ フィルターの変更の検出と
rs = xx << Make Filter State Handler( dosomethingwithselection );
の代わりに
xx << MakeRowStateHandler( dosomethingwithselection );
それが動作します。
返されたフィルター状態ハンドラーを JSL シンボルに保存することが重要であることに注意してください: rs =
<STRIKE>rs =</STRIKE> xx << Make Filter State Handler( dosomethingwithselection );
(それなしrs = ) 動作しないでしょう:フィルター変更ハンドラー
Re: ローカル データ フィルターの変更の検出あなたの質問には直接答えていません、ジム。 しかし、FWIW、ローカル データ フィルター オブジェクトのメッセージのリストに「MakeRowStateHandler」が表示されませんでした。
Re: ローカル データ フィルターの変更の検出イアン、
あなたの例はうまくいきました。スクリプトインデックスでこれに関するドキュメントを探しに戻りましたが、「Mark Row State Handler」がデータテーブルフィルターで機能するという最も不明瞭な参考資料しか見つかりませんでした。そこで、フィルターのアウトライン ボックスではなくフィルターを直接指定できるように設定すれば、機能し、さらに直接的なコードになるはずだと考えました。しかし、それはうまくいきませんでした。なぜそれが機能しないのかについて何か洞察はありますか?スクリプトを実行すると、ハンドル「xx」がデータ フィルターを指していることがわかります。
デフォルトの名前はここにあります( 1 ) ;
// いくつかのデータ
dt =新しいテーブル( 「フルーツ」 、
行の追加( 3 ) 、
新しい列( "フルーツ" 、
キャラクター、
「公称」 、
値を設定( { "梨" 、 "りんご" 、 "オレンジ" })
)
) ;
// ローカル データ フィルターを含むレポート
ギガバイト= dt <<グラフビルダー(
サイズ( 528 、 448 ) 、
コントロールパネルを表示( 0 ) 、
凡例を表示( 0 ) 、
変数( X( :フルーツ ) ) 、
Elements( Bar( X 、伝説( 3 ) ) )
) ;
xx =ギガバイト<<ローカルデータフィルター( モード、フィルターを追加( columns( :フルーツ ) ) ) ;
// 行状態ハンドラー関数
選択で何かをする=関数( {バツ} 、
{デフォルトのローカル}、
ビープ() ;
待って( 0.1 ) ;
ビープ() ;
) ;
// レポートへの参照を取得します
gbレポート=ギガバイト<<報告;
// データ フィルター表示ボックスがどのようなメッセージを理解するかを確認します (ログに出力されます)。
プロパティの表示( gbレポート[アウトラインボックス( 1 )]) ;
// 行状態ハンドラーをローカル データ フィルター表示ボックスに割り当てます。
xx << MakeRowStateHandler (選択で何かをする) ;
//rsh = gbReport[OutlineBox(1)] << MakeRowStateHandler(dosomethingwithselection);
Re: ローカル データ フィルターの変更の検出おそらく行状態ハンドラーをローカル データ フィルターに追加してみてはいかがでしょうか。 例えば:
名前デフォルトここへ( 1 ) ;
// いくつかのデータ
dt =新しいテーブル( 「フルーツ」 、
行の追加( 3 ) 、
新しい列( "フルーツ" 、
キャラクター、
「公称」 、
設定値( { "梨" 、 "りんご" 、 "オレンジ" } )
)
) ;
// ローカル データ フィルターを含むレポート
ギガバイト= dt <<グラフビルダー(
サイズ( 528 、 448 ) 、
コントロールパネルを表示( 0 ) 、
凡例を表示( 0 ) 、
変数(バツ( :フルーツ) ) 、
要素(バー(バツ、伝説( 3 ) ) ) 、
ローカルデータフィルター(モード、フィルターの追加(列( :フルーツ) ) )
) ;
// 行状態ハンドラー関数
選択で何かをする=関数({バツ} 、 {デフォルトのローカル} 、ビープ() ;待って( 0.1 ) ;ビープ() ) ;
// レポートへの参照を取得します
gbレポート=ギガバイト<<報告;
// データ フィルター表示ボックスがどのようなメッセージを理解するかを確認します (ログに出力されます)。
プロパティの表示( gbレポート[アウトラインボックス( 1 )]) ;
// 行状態ハンドラーをローカル データ フィルター表示ボックスに割り当てます。
rsh = gbレポート[アウトラインボックス( 1 )] << MakeRowStateHandler (選択で何かをする) ;
Re: ローカル データ フィルターの変更の検出ローカルフィルターをもっと直接モニターできると期待していました。おそらく14.0にはそのようなモニターが搭載されるでしょう。 コードをありがとう。
Re: ローカル データ フィルターの変更の検出スクリプトによってローカル データ フィルターを監視するための組み込みサポートは思いつきません。
以下は、ユーザーによるフィルタリングの変更を見つけるためにバックグラウンドで実行するだけのハックです。
デフォルトの名前はここにあります( 1 ) ;
dt =開ける( 「$SAMPLE_DATA\半導体能力.jmp」 ) ;
f =関数( { ccb } 、
// レポート出力の制限概要アウトライン ボックスから LCL と UCL を取得します。
myLCL = (報告( ccb )[ 「NPN1制限概要」 ][テーブルボックス( 1 )][ 2 】 <<得る)[ 1 ] ;
私のUCL = (報告( ccb )[ 「NPN1制限概要」 ][テーブルボックス( 1 )][ 4 ] <<得る)[ 1 ] ;
// 新しい軸設定を管理図に適用し直します
報告( ccb )[軸ボックス( 3 )] <<分( myLCL ) ;
報告( ccb )[軸ボックス( 3 )] <<マックス(私のUCL ) ;
) ;
新しい=新しい窓( 「実例」 、
データフィルターコンテキストボックス(
H リストボックス(
LDF = dt <<データフィルター(地元、フィルターの追加(コラム( :サイト) ) 、モード(選択する( 1 ) 、見せる( 1 ) 、含む( 1 )) ) 、
プラットホーム( dt 、
ccb =管理図ビルダー(
サイズ( 534 、 453 ) 、
コントロールパネルを表示( 1 ) 、
変数( Y ( : NPN1 ) ) 、
チャート(位置( 1 ) 、限界) 、
チャート(位置( 2 ) ) 、
レポートに送信(
急送(
{} 、
「NPN1」 、
スケールボックス、
{分( 96.6346153846154 ) 、マックス( 131.634615384615 ) 、株式会社( 5 ) 、マイナーティック( 0 ) 、
参照線の追加( 104.412948990151 、 "固体" 、 "青" 、 「LSL」 、 1 ) 、
参照線の追加( 131.893493064355 、 "固体" 、 "青" 、 「USL」 、 1 ) 、
参照線の追加( 118.153221027253 、 "固体" 、 "青" 、 "目標" 、 1 )}
)
)
)
)
)
)
) ;
// 管理図の下の Where 句を覗いて、ローカル データのフィルタリングを監視します
// まず、Where 句の TextBox を見つけます。
// (番号は異なりますが、常に最後のもののようです)
待って( 0 ) ;
私= 1 ;
その間(スクリプト可能です(試す(親=新しい[テキストボックス(私)] <<親)) 、
その間(親の種類=シャア(親<<クラス名) != 「アウトラインボックス」 、親=親<<親) ;
私++;
) ;
// 適切な頻度で変更をスキャンします
フィルター= "なし" ;
その間(スクリプト可能です(新しい) 、 // nw が閉じるまで実行されます
待って( 0.1 ) ; // ここでスキャン周波数を設定します
もし( !不足している(新しいフィルター=試す(新しい[テキストボックス(私)] <<テキストを取得する)) 、
もし(フィルター!=新しいフィルター、
フィルター=新しい[テキストボックス(私)] <<テキストを取得する;
f ( ccb ) ; // 制限を取得し、軸を設定します
)
) ;
) ;