J'avais un JSL pour créer une fenêtre pour afficher de nombreux générateurs de graphiques, car j'ai utilisé le langage where pour filtrer les données, la nouvelle fenêtre créera automatiquement une zone de texte ("Où :CID == a[1][g] & :VARABLE == a[2][g] & :WNDOW==a[3][g] & :SATISTIC==a[4][g] & :CLLECTION_NAME==a[5][g]"), je veux définir cette propriété de zone de texte "Réduire", pouvez-vous me donner une solution, merci beaucoup.
Tableau de données (« FSS »): RUN_START_DATE << Type de données (Numérique, Format (« aaaammjj », 8), Format d'entrée (« aaaammjj »)) << Définir le type de modélisation (« Continu »);
resume(a=by(:CED,:VARABLE,:WNDOW,:SATISTIC,:CLLECTION_NAME),b=min(:LOWER_CRITICAL),c=max(:UPPER_CRITICAL));
n=nitems(b);
FDCD=nouvelle fenêtre("FDC", vlb=v liste Box());
Pour( i = 1, i <= n, i=i+j-1,
hlb= h Liste déroulante(
pour(j=1, j<=4,j++,
g=i+j-1;
graphique = Générateur de graphiques(
Taille (400, 300),
Afficher le panneau de configuration (0),
Afficher le titre ( 0 ),
Où( :CID == a[1][g] & :VARABLE == a[2][g] & :WNDOW==a[3][g] & :SATISTIC==a[4][g] & :CLLECTION_NAME==a[5][g]),
Afficher où ( 0 ),
Variables(
X( :DATE_DÉBUT_EXÉCUTION ),
Y( :VALEUR ),
Groupe X( :ENTITY ),
Superposition( :RECETTE ),
),
Éléments( Points( X, Y, Légende( 10 ) ), Lisseur( X, Y, Légende( 11 ) ) ),
EnvoyerAuRapport(
Dispatch({},"Graph Builder",OutlineBox,{Définir le titre( a[1][g]||"|"||a[2][g]||"|"||a[3][g]||"|"||a[4][g] ), Affichage d'exportation d'image( Normal )}),
Dispatch({},"RUN_START_DATE",ScaleBox,{ Interval( "Jour" ),Inc( 3 ), Ticks mineurs( 1 )}),
Dispatch({},"VALEUR",ScaleBox,{//Max(c[i]+(c[i]-b[i])*0.1,:VALEUR*1.1), Min( b[i]+(c[i]-b[i])*0.1,:VALEUR*0.9 ),
Ajouter une ligne de référence (c[g], « Pointillé », « Rouge », « UCL », 1 ),
Ajouter une ligne de référence (b[g], « Pointillé », « Rouge », « LCL », 1 )})
)
);
);
);
vlb<
);
Il existe de nombreux anciens messages qui proposent des solutions à ce problème. Ma méthode préférée consiste à utiliser XPath
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
V List Box(
gb = dt << Graph Builder(
Show Control Panel(0),
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11))),
Where(:sex == "M")
),
gb = dt << Graph Builder(
Show Control Panel(0),
Variables(X(:weight), Y(:height), Overlay(:sex)),
Elements(Points(X, Y, Legend(9)), Line Of Fit(X, Y, Legend(11))),
Where(:sex == "F")
)
)
);
wait(1);
where_teb = nw << XPath("//TextBox[contains(text(), 'Where(')]");
where_teb << Visibility("Collapse");
vous pouvez rendre le XPath plus robuste si vous savez quelle colonne est utilisée pour le filtrage ou quelles valeurs sont filtrées
Je sais que ce message est ancien, mais j'essaie d'utiliser cette méthode pour supprimer les clauses « Where » des cartes de contrôle que je génère. Cependant, mon expression XPath semble toujours renvoyer une liste vide, même en limitant la recherche aux seuls objets TextBox sans critère de filtrage. Pour vous donner un aperçu de mon script, j'ai un tableau de données empilées. Je commence par créer une fenêtre et y insérer un VListBox.
CtrlChart = New Window("Trend Charts",
vlbreport = V List Box("Trend Review");
);
Ensuite, j'utilise une boucle pour ajouter des graphiques de contrôle au vlbreport sous forme de boîtes de liste V individuelles.
vlbreport << Append(
V List Box(
Control Chart Builder( **Control chart setting here) ); );
Après avoir exécuté une commande d'attente pour m'assurer que la fenêtre est entièrement remplie, j'essaie d'utiliser XPath pour simplement renvoyer tous les champs de texte, mais je n'obtiens aucun résultat.
allbox = CtrlChart << XPath("//Textbox");
Actuellement, la variable `allbox` est renvoyée sous forme de `{}`. Si j'utilise l'option « Afficher la structure arborescente » sur CtrlChart, je peux voir la structure complète, y compris tous les objets `TextBox`, mais aucune sélection n'est possible. Auriez-vous une idée de la raison de ce comportement ? J'apprécie l'idée d'utiliser XPath pour isoler les champs `Where`, car c'est une solution véritablement dynamique applicable à tous mes scripts formatés de cette manière. Cependant, je maîtrise très peu XPath. Mes connaissances en programmation proviennent principalement de l'apprentissage par essais et erreurs, de recherches sur Google et du guide de programmation.
Il s'agit de Text Box et non de Text Box (avec un B majuscule) dans XPath.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
cols = {"NPN1", "PNP1", "PNP2"};
nw = New Window("Trend Charts",
vlb = V List Box()
);
For Each({colname}, cols,
vlb << Append(
ccb = dt << Control Chart Builder(
Show Limit Summaries(0),
Show Capability(0),
Variables(Y(Eval(colname))),
Show Control Panel(0),
Where(:Site == 1)
)
);
);
Show(nw << XPath("//Textbox[contains(text(), 'Where(')]"));
Show(nw << XPath("//TextBox[contains(text(), 'Where(')]"));
Quelle simple erreur ! Merci de l'avoir remarquée ! Ça fonctionne maintenant et j'en suis ravi. Ces zones de texte sont particulièrement gênantes lors de l'exportation de graphiques vers PowerPoint. JMP devrait vraiment proposer une option pour les masquer afin d'éviter ce genre de solution de contournement.