テーブルボックスの行のブロックをシェーディング<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />やあ、
それぞれ3行のブロックに自然にグループ化される多数の行を含むテーブルボックスがあります(行1〜3は1つの化合物に関連し、行4〜6は別の化合物に関連し、行7〜9は3番目の化合物に関連するため) 、 等々)。化合物のブロックを視覚的に区別しやすくするために行をシェーディングしたいので、行1〜3をシェーディングし、次に行4〜6を白のままにし、次に行7〜9をシェーディングし、行10〜12を残します。白など(一度に3行のシェーディングが必要なため、「<<代替行のシェーディング」プロパティを使用することはできません。)
「<
nameList = repeat({"A"}、3)|| repeat({"B"}、3)|| repeat({"C"}、3)|| repeat({"D"}、3) || repeat({"E"}、3)|| repeat({"F"}、3)|| repeat({"G"}、3)|| repeat({"H"}、3);
threeList = {1、2、3、7、8、9、13、14、15、19、20、21};
tb =テーブルボックス(
文字列列ボックス( "名前"、nameList)、
Number Col Box( "First"、index(1、24))、
Number Col Box( "Second"、index(25、48))、
Number Col Box( "Third"、index(49、72))、
<<選択した行の色を設定( "cyan")、
<<選択した行を設定(threeList)、
<<行変更関数を設定(tb <<選択した行を設定(threeList))、
<< scrollable(1)を設定し、
<<列の境界線を設定(1)、
<<アンダースコアの見出しを設定する(1)
);
new window( "マイウィンドウ"、tb);
これは機能しますが、少し複雑に見えます。誰かがそれを行うためのより簡単な方法を提案できますか?
どうもありがとう。
Re:テーブルボックスの行のブロックをシェーディングします新しいデータビューの使用に関する懸念事項のいくつかに対処するためだけに、次のようにします。
ユーザーのアクションに対処するために必要なのは、行状態ハンドラーを追加することだけです。変更を検出し、プログラムで問題に対処できる関数に分岐します。この場合のように、ビューが並べ替えられた場合、セルの色を新しい順序にリセットできます
f =関数({ a } 、<セルの色をリセット>> )。 ;
rs = dt <<行状態ハンドラーを作成します(( f )。 ;
Re:テーブルボックスの行のブロックをシェーディングします皆さん、ありがとうございました。これは非常に役に立ちました。元のクエリを解決するのに十分な量が得られたので、問題が解決したことを確認します。
必要な選択を含むテーブルボックスを作成した後、「<< set selectable rows(0)」プロパティを設定するというVinceの提案を試しましたが、残念ながら、これを行うと、有効になる前に実際に選択がクリアされるようです。
私はジムのスクリプトのコピーを取りました。eval()、substitute()、およびexpr()構造の組み合わせの構文に常に問題があり、適応するための実用的な例があると、作業がはるかに簡単になります。私が作成しているレポートの構造はその出力形式により適しているため、実際には少なくとも当面はテーブルボックスを使用しますが、新しいデータボックスルートはこれまで考慮していなかったものです。 、そして将来的にも役立つ可能性があります。
また、プライベートコミュニケーションで、ユーザーがテーブルボックスをその列の1つで並べ替えようとした場合の自分のソリューションへの影響を考慮する必要があるかもしれないと指摘されました(右クリックで簡単に行うことができます) 。テーブルボックスは最終レポートの一部であり、それをさらに並べ替えても役に立たないため、実際にはこれはこの場合は問題になりませんが、要点はよく理解されています。
最後に、「<< set row change function()」プロパティは実際には機能しないことに注意しました。仕事「<
繰り返しになりますが、皆さんに感謝します。
Re:テーブルボックスの行のブロックをシェーディングします私がこれを処理する方法は、New Data Box()関数を使用し、Table Box()ではなく、データテーブルを使用することです。これにより、セルなどに色を付けたり、データテーブルのすべての編集機能を最大限に活用したりできます。
これが私が話していることを説明するためのスクリプトです:
名前はデフォルトでここにあります(( 1 )。 ;
dt =開ける(( "$ SAMPLE_DATA / Big Class.jmp" 、見えない)。 ;
//3行のグループを選択します
為に(( k = 1 、 k <= 3 、 k ++、
為に((私= k 、私<= N行(( dt )。 、私=私+ 6 、
行の状態((私)。 =選択された状態(( 1 )。
)。
)。 ;
リスト=リストとして(( dt <<選択した行を取得する)。 ;
dt <<選択をクリア;
//すべての列をループして、セルの色を設定します
コリスト= dt <<列名を取得する(( "ストリング" )。 ;
為に((私= 1 、私<= Nアイテム((コリスト)。 、私++、
評価((
代わりの((
Expr ((
桁(( dt 、コリスト[私] )。 <<カラーセル(( {{ "赤" 、 _リスト_ } )。
)。 、
Expr (( _リスト_ )。 、リスト
)。
)。
)。 ;
//表示ウィンドウを設定します
Nw =新しい窓(( "画面" 、
Vリストボックス((
tb =テキストボックス(( " 例" )。 、
vlb = Vリストボックス()
)。
)。 ;
ndb = dt <<新しいデータボックス() ;
vlb <<追加(( ndb )。 ;
ndb <<サイドパネルを閉じる(( 1 )。 ;
tb <<フォントサイズを設定する(( 20 )。 ;
次の表示ウィンドウが生成されます

Re:テーブルボックスの行のブロックをシェーディングしますこのようなことをすることができます。
インデックス= 1 ::: 99 ;
新しい窓(( "窓" 、tb = TableBox (( NumberColBox (( "桁" 、 索引)));
n = 3 ; //これはグループの番号に変更できます
行= loc ((モッド((床((索引- 1 )/ n)、 2 )); //n個のバーストの交代群を一緒に与えるだけ
tb <<選択した行を設定する(行);
お役に立てれば。乾杯。
*編集*これはおそらくあなたが求めていた部分ではないことに気づきました。ごめん。
行を選択して、選択不可にすることはできますか?
tb << Set Selectable rows(0);