Creazione di variabili in fase di esecuzioneCiao,
C'è modo di creare variabili in fase di esecuzione (prima di eseguire l'app non so quante variabili ho bisogno e il loro tipo)?
La soluzione su cui sto lavorando:
1. L'utente sceglierà una tabella di dati jmp / excel
2. L'utente sceglierà le colonne da utilizzare per filtrare la tabella (quantità e nomi sconosciuti)
3. L'app crea una casella di riepilogo o una casella radio per ogni colonna scelta e la riempie con valori distinti di quella colonna
4.Dopo che l'utente seleziona i valori per il filtraggio, l'app esegue il filtraggio e restituisce la tabella filtrata
Quindi, ho bisogno di creare variabili in fase di runtime per ogni listbox con il nome più significativo se possibile.
Grazie,
Tom.
Ri: Creazione di variabili in fase di esecuzioneJSL ti consentirà sicuramente di creare la tua versione del filtro dati, e sarai in grado di presentarlo in qualsiasi forma tu ritenga sia il migliore per il tuo ambiente. Ti dirò che tutta l'elaborazione delle eccezioni che dovrai compilare renderà l'operazione abbastanza complessa. Di seguito è riportato uno script molto grezzo, che fornirà un esempio di creazione di variabili in un ambiente in cui l'utente può selezionare la tabella e le colonne all'interno della tabella da elaborare. Ho scelto di utilizzare la tabella dei dati di esempio denominata "Big Class", ma qualsiasi tabella funzionerebbe con il codice. Gli elenchi creati denominati "nameList", "handleList" e CNTList salvano le colonne selezionate e il puntatore alle caselle di elenco generate e l'ultimo è il numero che consente il recupero di tutte le informazioni quando si seleziona una selezione in una delle caselle di elenco generate. Ora, riconoscerò chiaramente che questa è solo una delle possibili direzioni che è possibile utilizzare per creare il display che si desidera. Ripeterò anche, che un sacco di codice di eccezione, che tratta di cose come, rimuovendo una colonna selezionata da filtrare, come gestire i filtri numerici, sono le selezioni da "And" o "Or" nei loro confronti .... ... tutti gli elementi che devono essere affrontati
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
Current Data Table( dt );
CNT = 0;
// Create lists to handle processing
nameList = {};
handleList = {};
CNTList = {};
// Create the new window
nw = New Window( "Example",
V List Box(
Text Box( "Data Table Columns" ),
Spacer Box( size( 0, 10 ) ),
clb = Col List Box(
dt << get name,
all,
max selected( 1 ),
Sel = clb << get selected;
If( N Items( Sel ) > 0,
CNT++;
Insert Into( nameList, Sel[1] );
Eval( Parse( "summarize(dt,bygp=by(:" || Char( Sel[1] ) || "))" ) );
lb = List Box( bygp, Eval( Parse( "SelectionChoice=" || Char( CNT ) || ";" ) ) );
Insert Into( handleList, lb );
Insert Into( CNTList, CNT );
HLB << append( lb );
);
),
HLB = H List Box()
)
);Ri: Creazione di variabili in fase di esecuzioneGrazie Jim.
Mi piacerebbe sviluppare la mia GUI con Listbox e Radioboxes senza usare l'opzione Filtro dati.
L'utente sarà in grado di controllare quali colonne utilizzare per il filtraggio - Gli permetterò di gestire i nomi delle colonne in "Proprietà utente" jsl.
Ad esempio desiredColumnsList = {"ColumnA", "ColumnD"} - sarà modificato dall'utente.
Quindi, per ogni colonna che sceglie, creerò la casella di riepilogo per il filtraggio.
Alcuni suggerimenti per quel modo?
Grazie ancora.
Tom.
Ri: Creazione di variabili in fase di esecuzionePuoi utilizzare il "Filtro dati" incorporato per fare ciò che vuoi, senza dover scrivere alcun codice. Basta aprire la tabella dei dati desiderata e quindi andare al menu a discesa
Righe ==> Filtro dati
Quindi qualsiasi o tutte le colonne possono essere selezionate per essere filtrate.
Infine, quando i filtri sono stati selezionati e i loro valori scelti, è possibile creare la nuova tabella di dati subsetted andando al triangolo rosso e selezionando "Show Subset".
Questa azione può anche essere programmata con il seguente codice:
Names Default To Here( 1 );
// Open the desired file
path=pick file();
dt=open(path);
// Get all of the columns in the data table
colList = dt << get column names();
// Build the code required to open a Data Filter
// That has all columns available for filtering
TheExpr =
"dt << Data Filter(
Location( {59, 59} ),
Auto clear( 0 ),
Mode( Show( 1 ), Include( 1 ) ),
Add Filter( columns(";
TheExpr = TheExpr || ":" || colList[1];
For( i = 2, i <= N Items( colList ), i++,
TheExpr = TheExpr || ", :" || colList[i]
);
TheExpr = TheExpr || ") ) );";
// Execute the code that was built
Eval( Parse( TheExpr ) );