タブ ボックス内の For ループ。各ループによってウィンドウ内に異なるタブが作成されます。ツール (ChamberTool または Cham) の変数リストをループしてリストを作成しようとしています。次に、そのリストを使用して、各チャンバーがタブ ボックス ウィンドウ上の個別のタブとなる日付ごとのデータの等高線を作成します。私はこれらのことをそれぞれ独立して実行しましたが、私の特定の問題は、この変数リストから各ツールのタブを作成することです。私のアプローチはかなり外れているかもしれませんが、これが私のスクリプトです。
まず、これが機能する私が持っている 2 つのスクリプトです。私は、すでにやり方を知っている部分のスクリプト作成に手を振り、この投稿をより簡潔にし、私の主な問題の説明を損なわないようにします。
ContourG = dt << Contour stuff here;
Graph = new window("Contours", tab box(
"Tab Name Here", (vlistbox(ContourG)),
));しかし、for ループを実行しようとすると、完全に壊れてしまいます。
Cham = Associative Array(Column(dt_stacked, "Chamber") << Get Values) << Get Keys;Associative Array(Column(dt_stacked, "Chamber")<< Get Values)<<GET keys=""></GET>
Re: 各ループがウィンドウ内に異なるタブを作成するタブ ボックス内の For ループこれは、1 つのウィンドウで事前に構築された分析を生成し、2 番目のウィンドウでリアルタイムで動的に表示を生成するスクリプトです。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Create the default lists
namesList = {};
objList = {};
// Generate the output names
For( i = 1, i <= 10, i++,
Insert Into( namesList, "Analysis " || Char( i ) )
);
//Pre run the reports
For( i = 1, i <= 10, i++,
objList[i] = V List Box( Oneway( x( :Site ), y( Column( i + 4 ) ) ) )
);
// Create the display window for to display the prebuilt reports upon a user's reques
nw = New Window( "Output PreBuilt",
theHLB = H List Box(
lB = List Box(
namesList,
maxselected( 1 ),
Try( myObj << delete );
theHLB << append( myObj = objList[Contains( namesList, (lB << get selected)[1] )] << clone box );
)
)
);
// Create the display window for the displaying of the dynamically created reports
nw2 = New Window( "Output Dynamic Creation",
theHLB2 = H List Box(
lB2 = List Box(
namesList,
maxselected( 1 ),
Try( myObj2 << delete );
theHLB2 << append(
myObj2 = V List Box(
Oneway( x( :Site ), y( Column( Contains( namesList, (lB2 << get selected)[1] )+4 ) ) )
)
);
)
)
);Re: 各ループがウィンドウ内に異なるタブを作成するタブ ボックス内の For ループご意見ありがとうございます。 私のレポートでは、フィーチャごとに約 8 ~ 10 のグラフが生成されます。グラフのタイプはフィーチャのタイプによって異なります。レイヤーごとに 3 ~ 8 のフィーチャがあり、製品ごとに最大 10 のレイヤーがあります。製品はデータ取得日によって異なる場合があります。FOR LOOPを介して簡単にアクセスできるように、すべてのプロット/チャートをリストまたは配列に保存することは可能ですか?
Re: 各ループがウィンドウ内に異なるタブを作成するタブ ボックス内の For ループもちろん、UI をデザインする方法はたくさんあります。 ただし、4 レベルの階層の場合は、「条件付き」オプションを指定してローカル データ フィルターを使用することを検討します。
// Conditional (hierarchical) local data filter
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Size( 529, 563 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
Local Data Filter(
Conditional,
Add Filter(
columns( :sex, :age, :name ),
Display( :sex, Size( 149, 28 ), List Display ),
Display( :age, Size( 149, 84 ), List Display ),
Display( :name, Size( 149, 210 ), List Display )
)
)
);Re: 各ループがウィンドウ内に異なるタブを作成するタブ ボックス内の For ループ
-->
Text Box( tabListFirst[i] ||"->"|| tabListSecond[ii][iii] ||"->"|| tabListThird[ii][iii] ||"->"|| tabListForth[iii][iiii]) )
Text Box( tabListFirst[i] ||"->"|| tabListSecond[i][ii] ||"->"|| tabListThird[ii][iii] ||"->"|| tabListForth[iii][iiii]) )
マイナーアップデート....
Re: 各ループがウィンドウ内に異なるタブを作成するタブ ボックス内の For ループ4 レベルのタブ ボックスの例:
Names Default To Here( 1 );
// Make multiple lists that will define the multi-level hierarchical tab structure
nFirst = 5;
nSecondMax = 5;
nThirdMax = 5;
nForthMax = 5;
tabListFirst = {}; // first lists
tabListSecond = {}; // second lists
tabListThird = {}; // third lists
tabListForth = {}; // forth lists
For( i = 1, i <= nFirst, i++, //first level
Insert Into( tabListFirst, " L1 Tab " || Char( i ) );
secondList = {};
For( ii = 1, ii <= nSecondMax, ii++, //second level
Insert Into( secondList, "L2 Tab " || Char( ii ) );
thirdList = {};
For( iii = 1, iii <= nThirdMax, iii++,//third level
Insert Into( thirdList, "L3 Tab " || Char( iii ) );
forthList = {};
For( iiii = 1, iiii <= nForthMax, iiii++,//forth level
Insert Into( forthList, "L4 Tab " || Char( iiii ) )
);
Insert Into( tabListForth, Eval List( List( forthList ) ) );
);
Insert Into( tabListThird, Eval List( List( ThirdList ) ) );
);
Insert Into( tabListSecond, Eval List( List( secondList ) ) );
);
/*
Show( tabListFirst );
Show( tabListSecond );
Show( tabListThird );
Show( tabListForth );
*/
// Use these lists to build the UI
tb = Tab Box(); //first level of Tab Box
For( i = 1, i <= N Items( tabListFirst ), i++,
tb2 = Tab Box(); //second level of Tab Box
For( ii = 1, ii <= N Items( tabListSecond[i] ), ii++,
tb3 = Tab Box(); //third level of Tab Box
For (iii = 1, iii <= NItems ( tabListThird[ii]), iii++,
tb4 = Tab Box();
For (iiii = 1, iiii <= NItems ( tabListForth[iii]), iiii++,
tb4 << Add( tabListForth[iii][iiii] || " Tab",
Text Box( tabListFirst[i] ||"->"|| tabListSecond[ii][iii] ||"->"|| tabListThird[ii][iii] ||"->"|| tabListForth[iii][iiii]) )
);
tb3 << Add(tabListThird[ii][iii] || " Tab", tb4);
);
tb2 << Add ( tabListSecond[i][ii] || " Tab", tb3);
);
tb << Add( tabListFirst[i] || " Tab", tb2 );
);
New Window( "Example", tb );
Re: 各ループがウィンドウ内に異なるタブを作成するタブ ボックス内の For ループありがとう、それはまさに私が探しているものです。私のデータには 4 つのレベルがあり、次のレベルのタブの数は前のレベルのタブの値に基づいています。Re: 各ループがウィンドウ内に異なるタブを作成するタブ ボックス内の For ループジムの例に基づいて構築する:
NamesDefaultToHere(1);
// Make two lists that will define the two-level hierarchical tab structure
nFirst = 4;
nSecondMax = 5;
tabListFirst = {}; // A List
tabListSecond = {}; // A list of lists
for(i=1, i<=nFirst, i++,
InsertInto(tabListFirst, "Tab "|| Char(i));
secondList = {};
for(ii=1, ii<=randomInteger(1, nSecondMax), ii++,
InsertInto(secondList, "Tab "|| Char(ii))
);
InsertInto(tabListSecond, evalList(List(secondList)));
);
// Use these lists to build the UI
tb = Tab Box();
For( i = 1, i <= N Items( tabListFirst ), i++,
tb2 = TabBox();
for(ii = 1, ii <= NItems(tabListSecond[i]), ii++,
tb2 << add(
tabListSecond[i][ii] || " Tab",
Button Box( "Press " || tabListSecond[i][ii] )
);
);
tb << Add(tabListFirst[i] || " Tab", tb2);
);
New Window( "Example", tb );Re: 各ループがウィンドウ内に異なるタブを作成するタブ ボックス内の For ループタブ ボックスの 2 番目のレイヤーを動的に作成することは可能ですか。私のデータには複数のレイヤーのデータがあります。ありがとうございます。
<SPAN class="token function">Names Default To Here</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token number">1</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
tabList <SPAN class="token operator">=</SPAN> <SPAN class="token punctuation">{</SPAN><SPAN class="token string">"First"</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"Second"</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"Third"</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"Fourth"</SPAN><SPAN class="token punctuation">}</SPAN><SPAN class="token punctuation">;<BR /></SPAN>
<SPAN class="token function">New Window</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"Example"</SPAN><SPAN class="token punctuation">,</SPAN> tb <SPAN class="token operator">=</SPAN> <SPAN class="token function">Tab Box</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token function">For</SPAN><SPAN class="token punctuation">(</SPAN> i <SPAN class="token operator">=</SPAN> <SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN> i <SPAN class="token operator"><=</SPAN> <SPAN class="token function">N Items</SPAN><SPAN class="token punctuation">(</SPAN> tabList <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> i<SPAN class="token operator">++</SPAN><SPAN class="token punctuation">,</SPAN>
tb <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Add</SPAN><SPAN class="token punctuation">(</SPAN>
tabList<SPAN class="token punctuation">[</SPAN>i<SPAN class="token punctuation">]</SPAN> <SPAN class="token operator">||</SPAN> <SPAN class="token string">" Tab"</SPAN><SPAN class="token punctuation">,<BR /></SPAN> //another layer of tabs goes here<BR />
<SPAN class="token function">Button Box</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"Press "</SPAN> <SPAN class="token operator">||</SPAN> tabList<SPAN class="token punctuation">[</SPAN>i<SPAN class="token punctuation">]</SPAN> <SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
Re: 各ループがウィンドウ内に異なるタブを作成するタブ ボックス内の For ループ前回の投稿は完全に固定されたものではありませんでした。ハードコードされた方法と、必要に応じていつでもタブを追加できるようにする方法の両方が示されています。ただし、より直接的にするために、JSL リストを使用して追加する必要があるタブを決定する再加工されたスクリプトを次に示します。
Names Default To Here( 1 );
tabList = {"First", "Second", "Third", "Fourth"};
New Window( "Example", tb = Tab Box() );
For( i = 1, i <= N Items( tabList ), i++,
tb << Add(
tabList[i] || " Tab",
Button Box( "Press " || tabList[i] )
)
);Re: 各ループがウィンドウ内に異なるタブを作成するタブ ボックス内の For ループ@txnelson 、私のコードは、変数リストに基づいて、リスト内の個別の項目をそれぞれ独自のタブにするループを作成しようとしたものです。あなたが示した例は、特定の数のタブをハードコーディングする方法のように見えますが、私の場合はタブの数が変わります。たとえば、ある日、データセットのリストに 5 つの異なるエンティティがある場合、コードは各エンティティに 1 つずつ、合計 5 つのタブを生成する必要があります。しかし、翌日にはデータセットが 8 つのエンティティになる可能性があります。
それと関係のない質問ですが、アカウントのメール アドレスを更新する方法はありますか?私のアカウントはもうアクセスできないアドレスに関連付けられており、それを更新する方法は一生わかりません。
Re: 各ループがウィンドウ内に異なるタブを作成するタブ ボックス内の For ループ新しいタブの作成に使用している構文が正しくありません。以下は、新しいタブを追加する方法について、Scripting Index から直接取得した例です。実際、この例ではそれを行う 2 つの方法を示しています。コードではタブが 1 つだけ生成されます。
Names Default To Here( 1 );
New Window( "Example",
tb = Tab Box(
Tab Page Box(
"First Tab",
Tip( "First Tab Tooltip" ),
Button Box( "Press One" )
),
Tab Page Box(
"Second Tab",
Closeable( 1 ),
Button Box( "Press Two" )
),
Tab Page Box(
"Third Tab",
Icon( "Nominal" ),
Button Box( "Press Three" )
)
)
);
Wait( 1 );
tb << Add(
"Fourth Tab",
Button Box( "Press Four" )
);