Bouton de rappelJ'ai posté cette question sur le fil de discussion d'origine mais elle n'a probablement pas été mise en évidence correctement, alors j'essaye comme un nouveau message.
Le code sur ce lien semble très utile
Comment créer un bouton de rappel sur une fenêtre personnalisée - JMP User Community
Cependant, il n’est pas évident pour moi de savoir comment exploiter correctement la fonction de rappel.
J'ai du code (ci-dessous) que j'ai emprunté et modifié et qui manque de rappel et j'essayais de comprendre comment les souder ensemble. Je suis proche mais il manque quelque chose comme d'habitude. Toute aide appréciée.
dt = Current Data Table();
cd = Column Dialog(
exy = ColList( "Y", Min Col( 1 ) ),
exx = ColList( "X", Min Col( 1 ) )
);
Eval( cd[1] );
Eval( cd[2] );
yyy = Expr( y() );
xxx = Expr( x() );
xval = exx[1];
For( i = 1, i <= N Items( exy ), i++,
Insert Into( yyy, exy[i] )
);
For( i = 1, i <= N Items( exx ), i++,
Insert Into( xxx, exx[i] )
);
nw = New Window( "Annotated Multiple Plots",
For( i = 1, i <= N Items( exy ), i++,
Notes = exy[i] << Get Property( "Notes" );
Try(
Bivariate(
Y( exy[i] ),
X( exx[1] ),
SendToReport(
Dispatch(
{},
"",
AxisBox( 2 ),
Add Text Annotation(
Text( "Category: " || Notes ),
Fixed Size( 0 ),
Text Box( {-80, 25, 0, 50} ),
Filled( 0 )
)
)
)
)
);
)
);
Merci
Au revoir
Tête de clé
Automatisation et scriptsRe : Bouton de rappelAu revoir,
Vous trouverez ci-dessous une simple combinaison de votre script avec le script référencé dans Comment créer un bouton de rappel sur une fenêtre personnalisée. Pour commencer, l'exemple fourni utilise une boîte de dialogue de colonne () et l'exemple de rappel utilise une nouvelle fenêtre pour la boîte de dialogue utilisateur. JMP avait déprécié la boîte de dialogue Colonne au profit de la Nouvelle Fenêtre. Ce que vous devez faire, c'est étudier le script et apprendre comment il fonctionne. Il apporte plusieurs éléments qui nécessiteront une certaine compréhension. Les espaces de noms étant un élément majeur.
Names Default To Here( 1 );
/* Assign dt to reference a table. Open a sample table for demonstration purposes */
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
/* Use a named namespace to hold the recall values */
If( !Namespace Exists( "Custom Dialog" ), // define namespace if it does not exist
dialogRecallNS = New Namespace(
"Custom Dialog",
{
ycolRecall =
{
}
,
orderRecall =
{
}
,
byRecall =
{
}
}
)
, // else get a reference to the existing namespace
dialogRecallNS = Namespace( "Custom Dialog" )
);
nc = N Col( dt );
lbWidth = 130;
// The program to execute when the OK button is pressed
pgm = Expr(
nw = New Window( "Annotated Multiple Plots",
For( i = 1, i <= N Items( exy ), i++,
Notes = Try( exy[i] << Get Property( "Notes" ) );
Try(
Bivariate(
Y( exy[i] ),
X( exx[1] ),
SendToReport(
Dispatch( {}, "", AxisBox( 2 ),
Add Text Annotation(
Text( "Category: " || Notes ),
Fixed Size( 0 ),
Text Box( {-80, 25, 0, 50} ),
Filled( 0 )
)
)
)
)
);
)
)
);
/* Expression to clear all current settings */
clearRoles = Expr(
colListY << RemoveAll;
colListX << RemoveAll;
);
/* Expression to store the current settings in global variables */
recallRoles = Expr(
dialogRecallNS:ycolRecall = colListY << GetItems;
dialogRecallNS:orderRecall = colListX << GetItems;
);
/* Custom Launch Window */
customDlg = New Window( "Example of a Custom Dialog",
Border Box( Left( 3 ), top( 2 ),
V List Box(
Text Box( "Example dialog to demonstrate a Recall button" ),
H List Box(
V List Box(
Panel Box( "Select Columns",
colListData = Col List Box( All, width( lbWidth ), nLines( Min( nc, 10 ) ) )
)
),
Panel Box( "Cast Selected Columns into Roles",
Lineup Box( N Col( 2 ), Spacing( 3 ),
Button Box( "Y", colListY << Append( colListData << GetSelected ) ),
colListY = Col List Box( width( lbWidth ), nmin( 1 ), nLines( 5 ), numeric ),
Button Box( "X", colListX << Append( colListData << GetSelected ) ),
colListX = Col List Box( width( lbWidth ), nLines( 1 ), numeric )
)
),
Panel Box( "Action",
Lineup Box( N Col( 1 ),
Button Box( "OK",
recallRoles;
exy = colListY << get items;
exx = colListX << get items;
pgm;
customDlg << CloseWindow;
),
Button Box( "Cancel", customDlg << CloseWindow ),
Button Box( "Reset", clearRoles ),
Text Box( " " ),
Button Box( "Remove",
colListY << RemoveSelected;
colListX << RemoveSelected;
),
Button Box( "Recall",
clearRoles;
/* Restore any previous settings from the namespace variables */
Try(
colListY << Append( dialogRecallNS:ycolRecall );
colListX << Append( dialogRecallNS:orderRecall );
);
)
)
)
)
)
)
);
colListx << set min items( 1 );
colListy << set min items( 1 );
Veuillez noter que j'ai supprimé plusieurs lignes de code dans votre JSL fourni qui ne semblaient rien faire pour l'exemple.
Re : Bouton de rappelVous pouvez vous inspirer du script fourni par Jim, puis y appliquer la bibliothèque de fonctions de rappel . C'est probablement un excellent moyen d'apprendre beaucoup de choses différentes pour JSL (modifier la solution de travail existante pour utiliser un package différent). Personnellement, je n'aime pas la façon dont fonctionne la bibliothèque de rappel, donc je ne l'ai pas utilisée (j'ai la mienne en préparation) mais à ma connaissance, c'est actuellement le meilleur moyen d'implémenter le rappel sans tout écrire vous-même.
Re : Bouton de rappelC'est vraiment proche et cela fonctionne comme décrit, cependant, le but était d'avoir un moyen de forcer les graphiques à avoir des annotations basées sur les informations contenues dans les notes et d'une manière ou d'une autre, cela interrompt cette révision.
Les annotations apparaissent manquantes et les notes elles-mêmes ne contiennent rien.
Notes = Try(exy[i] << Get Property( "Notes" ));
Show(Notes);
Une idée de pourquoi cela pourrait être le cas ?
Merci
Au revoir
Tête de clé
Re : Bouton de rappelEssayez de changer
Notes = Try(exy[i] << Get Property("Notes"));
à
Notes = Try(Column(dt, exy[i]) << Get Property("Notes"));
comme << Obtenir les éléments pour Col List Box renvoie la liste des chaînes
Re : Bouton de rappelC'est parfait, combiner ces œuvres.
Merci
Au revoir
Tête de clé