Boucle For à l'intérieur d'une zone d'onglet où chaque boucle crée un onglet différent dans la fenêtreJ'essaie de parcourir une liste variable d'outils (ChamberTool ou Cham) pour créer une liste.Ensuite, en utilisant cette liste, je crée un contour des données par date où chaque chambre est un onglet séparé sur une fenêtre de boîte à onglets.J'ai fait chacune de ces choses indépendamment, mais mon problème particulier est de créer un onglet pour chaque outil à partir de cette liste de variables.Peut-être que mon approche est loin mais voici mon script.
Tout d'abord, voici les deux morceaux de script que j'ai qui fonctionnent.Je remets le script des parties que je sais déjà faire et pour garder ce post plus bref et ne pas détourner l'attention de mon énoncé de problème principal.
ContourG = dt << Contour stuff here;
Graph = new window("Contours", tab box(
"Tab Name Here", (vlistbox(ContourG)),
));Mais quand j'essaie d'exécuter une boucle for, je suis complètement cassé.
Cham = Associative Array(Column(dt_stacked, "Chamber") << Get Values) << Get Keys;Associative Array(Column(dt_stacked, "Chamber")<< Get Values)<<GET keys=""></GET>
Re : Boucle For à l'intérieur d'une zone d'onglet où chaque boucle crée un onglet différent dans la fenêtreVoici un script qui génère des analyses prédéfinies dans une fenêtre, et une seconde fenêtre génère dynamiquement les affichages en temps réel.
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 : Boucle For à l'intérieur d'une zone d'onglet où chaque boucle crée un onglet différent dans la fenêtreMerci pour la contribution. Mon rapport générera environ 8 à 10 graphiques par fonctionnalité, le type de graphique sera différent selon le type de fonctionnalité, il y a 3 à 8 fonctionnalités par couche et jusqu'à 10 couches par produit, les produits peuvent varier en fonction des jours d'extraction de données.Est-il possible de stocker tous les tracés/graphiques dans une liste ou un tableau pour un accès plus facile via FOR LOOP ?
Re : Boucle For à l'intérieur d'une zone d'onglet où chaque boucle crée un onglet différent dans la fenêtreBien sûr, il existe de nombreuses façons de concevoir une interface utilisateur. Mais avec une hiérarchie à quatre niveaux, j'envisagerais d'utiliser un filtre de données local avec l'option 'conditionnelle' :
// 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 : Boucle For à l'intérieur d'une zone d'onglet où chaque boucle crée un onglet différent dans la fenêtre
-->
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]) )
petite mise à jour......
Re : Boucle For à l'intérieur d'une zone d'onglet où chaque boucle crée un onglet différent dans la fenêtreExemple de boîte à onglets à 4 niveaux :
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 : Boucle For à l'intérieur d'une zone d'onglet où chaque boucle crée un onglet différent dans la fenêtreMerci, c'est exactement ce que je recherche, mes données ont 4 niveaux et le nombre d'onglets au niveau suivant est basé sur la valeur de l'onglet du niveau précédent.Re : Boucle For à l'intérieur d'une zone d'onglet où chaque boucle crée un onglet différent dans la fenêtreS'appuyant sur l'exemple de Jim :
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 : Boucle For à l'intérieur d'une zone d'onglet où chaque boucle crée un onglet différent dans la fenêtreEst-ce possible de créer dynamiquement une 2ème couche de boîtes à onglets, mes données ont plusieurs couches de données, merci.
<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 : Boucle For à l'intérieur d'une zone d'onglet où chaque boucle crée un onglet différent dans la fenêtreMon message précédent n'était pas complètement câblé.Il montrait à la fois une méthode codée en dur et une méthode qui vous permettrait de décider d'ajouter des onglets chaque fois que vous en auriez besoin.Mais pour le rendre plus direct, voici un script retravaillé qui utilise une liste JSL pour déterminer les onglets à ajouter
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 : Boucle For à l'intérieur d'une zone d'onglet où chaque boucle crée un onglet différent dans la fenêtre@txnelson , mon code était ma tentative de créer une boucle, basée sur une liste de variables, pour que chaque élément discret de la liste soit son propre onglet.L'exemple que vous avez donné ressemble à un moyen de coder en dur un nombre spécifique d'onglets, mais dans mon cas, le nombre d'onglets changerait.Par exemple, si mon jeu de données comporte un jour 5 entités distinctes dans ma liste, mon code devrait générer 5 onglets, un pour chaque entité.Mais le lendemain, mon jeu de données pourrait être composé de 8 entités.
Et une question sans rapport, une idée de comment je peux mettre à jour mon adresse e-mail sur mon compte ?J'ai réalisé que mon compte est lié à une adresse à laquelle je n'ai plus accès et je ne peux pas savoir comment le mettre à jour.
Re : Boucle For à l'intérieur d'une zone d'onglet où chaque boucle crée un onglet différent dans la fenêtreLa syntaxe que vous utilisez pour créer les nouveaux onglets n'est pas correcte ; Vous trouverez ci-dessous l'exemple tiré directement de l'index de script, sur la façon d'ajouter un nouvel onglet.En fait, l'exemple montre 2 façons de le faire.Votre code ne génère qu'un seul onglet.
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" )
);