RückruftasteIch habe diese Frage im ursprünglichen Thread gepostet, aber sie war wahrscheinlich nicht richtig hervorgehoben. Deshalb versuche ich es als neuen Beitrag.
Der Code unter diesem Link sieht sehr nützlich aus
So erstellen Sie eine Schaltfläche „Abrufen“ in einem benutzerdefinierten Fenster – JMP-Benutzer-Community
Allerdings ist mir nicht klar, wie ich die Rückruffunktion richtig nutzen kann.
Ich habe Code (unten), den ich ausgeliehen und geändert habe und dem es an Rückruf mangelt, und ich habe versucht, herauszufinden, wie ich ihn zusammenfügen kann. Ich bin nah dran, aber wie immer fehlt etwas. Jede Hilfe ist willkommen.
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 )
)
)
)
)
);
)
);
Danke
Tschüss
SpannerHead
Automatisierung und SkriptingBetreff: RückruftasteTschüss,
Unten sehen Sie eine einfache Kombination Ihres Skripts mit dem Skript, auf das in „So erstellen Sie eine Abrufschaltfläche in einem benutzerdefinierten Fenster“ verwiesen wird. Zunächst verwendet Ihr bereitgestelltes Beispiel einen Spaltendialog() und das Abrufbeispiel verwendet ein neues Fenster für den Benutzerdialog. JMP hat den Spaltendialog zugunsten eines neuen Fensters abgewertet. Sie müssen das Skript studieren und lernen, wie es funktioniert. Es enthält mehrere Elemente, die ein gewisses Verständnis erfordern. NameSpaces sind eines der wichtigsten.
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 );
Bitte beachten Sie, dass ich in Ihrem bereitgestellten JSL mehrere Codezeilen entfernt habe, die für das Beispiel scheinbar keinen Zweck hatten.
Betreff: RückruftasteSie können sich von dem Skript inspirieren lassen, das Jim bereitgestellt hat, und dann die Recall Function Library darauf anwenden. Das ist höchstwahrscheinlich eine ziemlich gute Möglichkeit, viele verschiedene Dinge für JSL zu lernen (eine vorhandene funktionierende Lösung ändern, um ein anderes Paket zu verwenden). Mir persönlich gefällt die Funktionsweise der Recall-Bibliothek nicht, daher habe ich sie nicht verwendet (ich arbeite gerade an meiner eigenen), aber meines Wissens ist dies derzeit die beste Möglichkeit, Recall zu implementieren, ohne alles selbst schreiben zu müssen.
Betreff: RückruftasteDas kommt dem schon sehr nahe und funktioniert wie beschrieben. Der ganze Sinn bestand allerdings darin, eine Möglichkeit zu haben, die Diagramme mit Anmerkungen auf Grundlage der Informationen in den Anmerkungen zu versehen, und das funktioniert in dieser Revision irgendwie nicht mehr.
Es fehlen Anmerkungen und die Notizen selbst enthalten nichts.
Notes = Try(exy[i] << Get Property( "Notes" ));
Show(Notes);
Irgendeine Ahnung, warum das so sein könnte?
Danke
Tschüss
SpannerHead
Betreff: RückruftasteVersuchen Sie, etwas zu ändern
Notes = Try(exy[i] << Get Property("Notes"));
Zu
Notes = Try(Column(dt, exy[i]) << Get Property("Notes"));
as << Get items for Col List Box gibt eine Liste von Strings zurück
Betreff: RückruftasteDas ist genau richtig, diese Kombination funktioniert.
Danke
Tschüss
SpannerHead