Pulsante RichiamaHo postato questa domanda nel thread originale ma probabilmente non era evidenziata correttamente, quindi provo come nuovo post.
Il codice a questo link sembra molto utile
Come creare un pulsante Richiama in una finestra personalizzata - Comunità degli utenti JMP
Tuttavia, non mi è chiaro come sfruttare adeguatamente la funzione di richiamo.
Ho del codice (sotto) che ho preso in prestito e modificato che manca di richiamo e stavo cercando di capire come saldarli insieme. Sono vicino ma mi manca qualcosa, come al solito. Tutto l'aiuto è apprezzato.
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 )
)
)
)
)
);
)
);
Grazie
Ciao
Testa di chiave
Automazione e scriptingRi: Pulsante RichiamaCiao,
Di seguito è riportata una semplice combinazione del tuo script con lo script a cui si fa riferimento in Come creare un pulsante Richiama in una finestra personalizzata. Per cominciare, l'esempio fornito utilizza una finestra di dialogo Colonna() e l'esempio di richiamo utilizza una nuova finestra per la finestra di dialogo dell'utente. JMP aveva svalutato la finestra di dialogo Colonna a favore di Nuova finestra. Quello che devi fare è studiare la sceneggiatura e imparare come funziona. Contiene diversi elementi che richiederanno una certa comprensione. NameSpaces è uno dei più importanti.
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 );
Tieni presente che ho rimosso diverse righe di codice nel JSL fornito che non sembravano fare nulla per l'esempio.
Ri: Pulsante RichiamaPuoi trarre ispirazione dallo script fornito da Jim e quindi applicarvi la Recall Function Library . Questo è molto probabilmente un ottimo modo per imparare molte cose diverse per JSL (modificare la soluzione di lavoro esistente per utilizzare un pacchetto diverso). Personalmente non mi piace il modo in cui funziona la libreria di richiamo, quindi non l'ho usata (ne ho una mia in preparazione) ma, per quanto ne so, è attualmente il modo migliore per implementare il richiamo senza scrivere tutto da solo.
Ri: Pulsante RichiamaQuesto è molto vicino e funziona come descritto, tuttavia, lo scopo era quello di avere un modo per forzare i grafici ad avere annotazioni basate sulle informazioni nelle note e in qualche modo questo interrompe questa revisione.
Le annotazioni risultano mancanti e le note stesse non contengono nulla.
Notes = Try(exy[i] << Get Property( "Notes" ));
Show(Notes);
Qualche indizio sul perché potrebbe essere?
Grazie
Ciao
Testa di chiave
Ri: Pulsante RichiamaProva a cambiare
Notes = Try(exy[i] << Get Property("Notes"));
A
Notes = Try(Column(dt, exy[i]) << Get Property("Notes"));
as << Ottieni elementi per Col Casella di riepilogo restituisce un elenco di stringhe
Ri: Pulsante RichiamaÈ perfetto, combinando questi lavori.
Grazie
Ciao
Testa di chiave