Sto cercando di convalidare l'input dell'utente e impedirgli di passare l'interfaccia utente di input se non inseriscono i campi obbligatori. Finora sembra che la scatola dei pulsanti non esegua effettivamente lo script in sequenza, o non sembra memorizzare le variabili fino a quando l'intero script non è finito. Come posso aggirare questo?
clearLog();
clearGlobals();
clearSymbols();
dt = currentDataTable();
inputGUI = newWindow( "Input Selection UI", << modal,
//Step Name input box
hListBox(
textBox("1. Enter some text input"),
stepTextEdit = textEditBox(),
),
//Column Section input box
hListBox(
vListBox(
choosesrc=filterColSelector( nLines( 6 ) ),
chooseSRC << numeric( 0 ),
),
vListBox(
lineUpBox( nCol( 1 ), spacing( 2 ),
buttonBox( "Add Column >>",
listcols2 << Append( chooseSRC << getSelected );
),
buttonBox( "<< Remove Column",
listcols2 << removeSelected;
),
),
),
vListBox(
listcols2 = colListBox( nLines( 3 ), minItems(1), maxItems(1) ), //col list box with no columns inside
);
),
//Footer Section and OK/Cancel Buttons
hListBox(
buttonBox("OK",
//Collect all variables from input boxes
uinp_stepName = stepTextEdit << getText;
uinp_colssrc=listcols2 << getItems;
// Input Validation Logic
if ( IsMissing(uinp_stepName) == 1,
(nw_error_uinp_stepName = New Window("Error ", << Modal,
VList Box(
Text Box("Text input is missing"),
HList Box(
Button Box ( "OK" ),
),
);
);
break(); // Only send 1 error at a time
)
);
if ( nItems(uinp_colsSRC) == 0,
(nw_error_uinp_colssrc=New Window("Error ", << Modal,
VList Box(
Spacer Box( Size (5, 5) ),
Text Box("Column input is missing"),
Spacer Box( Size (15, 15) ),
HList Box(
Button Box ( "OK" ),
),
);
);
break(); // Only send 1 error at a time
)
);
),
buttonBox("Cancel", Print("User cancelled operation!"); Stop() ),
),
);Inoltre, vedere il messaggio in linea << Su Convalida (espressione) a Nuova finestra () per questo scopo.
Non penso che stia valutando nulla fuori sequenza. Il problema è che stai cercando di modificare quell'oggetto filterColSelector in una riga separata da una virgola. La virgola è pensata per separare diversi oggetti di visualizzazione che sono nidificati all'interno di quella casella di elenco verticale. Scambia lo snippet di codice con questo e dovresti essere bravo:
vListBox(
choosesrc=filterColSelector( nLines( 6 ), << numeric( 0 ))
)
* Inoltre, non sono sicuro se pensi di aggiungere altro a quel vListBox, ma dal momento che contiene solo 1 riquadro di visualizzazione, probabilmente puoi sbarazzartene.