Genera una matrice di caselle di controllo selezionabiliTutto,
Mi chiedo quale sia il modo più semplice per generare una matrice di caselle di controllo selezionabili. Quindi quello che mi piacerebbe poter fare è generare una matrice non quadrata e visualizzarla affinché l'utente possa selezionare qualsiasi posizione nella matrice che l'utente desidera. Finché l'utente può selezionare più righe all'interno di una colonna e viceversa, sarebbe bene soddisfare l'esigenza. Qualsiasi aiuto è apprezzato.
Ri: Genera una matrice di caselle di controllo selezionabiliMi rendo conto di essere in ritardo e spero che tu l'abbia già capito.Il problema principale è che non hai mai visualizzato la casella tabella nel codice.Credo che il prossimo problema sia analizzare la tabella subito dopo averla creata.Immagino che tu voglia farlo dopo che l'utente ha avuto la possibilità di selezionare le caselle.Speriamo che il codice seguente sia più vicino a quello che stai cercando.
Names Default To Here( 1 );
InputsLoadBasic = Expr(
LB1 = Lineup Box( N Col( 2 ) );
LB1 << Append(
Panel Box( "Test",
V List Box( V List Box( Text Box( "Arg1" ), NEB_arg1 = Number Edit Box( 2 ), Text Box( "Arg2" ), NEB_arg2 = Number Edit Box( 3 ), ) )
)
);
LB1 << Append(
Panel Box( "Selectable Matrix Test",
V List Box(
Button Box( "Enter Target Matrix",
nR = 12;
nC = 24;
SCB1 = String Col Box( "", {} );
if(!isempty(TB1),
TB1 << Delete Box;
);
For( i = 1, i <= nR, i++,
SCB1 << Add Element( Char( i ) )
);
TB1 = Table Box( SCB1 );
For( i = 1, i <= nC, i++,
Insert Into( TB1, Check Box( Repeat( {" "}, nR ), <<SET heading=""></SET>Ri: Genera una matrice di caselle di controllo selezionabili@Justin_Chilton / @txnelson / @thomasz
Ho una domanda di follow-up, chiedendomi se qualcuno di voi potrebbe pensare a un modo per farlo. Sto cercando di generare la matrice di riquadri selezionabili all'interno di un Panel Box. Ecco la sceneggiatura che ho, mi chiedo se potresti guidarmi sul motivo per cui sto fallendo?
InputsLoadBasic =
Expr(
LB1 = Lineup Box( N Col( 2 ) );
LB1 << Append(Panel Box( "Test",
V List Box(
V List Box(
Text Box( "Arg1" ),
NEB_arg1 = Number Edit Box( 2 ),
Text Box( "Arg2" ),
NEB_arg2 = Number Edit Box( 3 ),
)
)
)
);
LB1 << Append(Panel Box( "Selectable Matrix Test",
V List Box(
Button Box("Enter Target Matrix",
nR = 12;
nC = 24;
SCB1 = String Col Box( "", {} );
For( i = 1, i <= nR, i++,
SCB1 << Add Element( Char( i ) )
);
TB1 = Table Box( SCB1 );
For( i = 1, i <= nC, i++,
Insert Into( TB1, Check Box( Repeat( {" "}, nR ), <<SET heading=""></SET>
L'interfaccia utente risultante assomiglia a quella che voglio, tuttavia, quando faccio clic sul pulsante "Inserisci matrice target" mostrato sopra, non fa quello che voglio. Potete per favore aiutarmi?
Ri: Genera una matrice di caselle di controllo selezionabiliÈ possibile aggiungere un'intestazione a un CheckBox all'interno di un TableBox utilizzando il messaggio <
nRow = 5;
nCol = 6;
// string col box for row labels
scb = String Col Box( "", {} );
// add labels to rows
For( i = 1, i <= nRow, i++,
scb << Add Element( "row" || Char( i ) )
);
// create a table box to contain everything
tbl = Table Box( scb );
// add all columns with the given number of rows
For( i = 1, i <= nCol, i++,
Insert Into(
tbl,
Check Box(
Repeat( {" "}, nRow ),
<<SET heading=""></SET>
Finestra:

Ri: Genera una matrice di caselle di controllo selezionabili@Justin_Chilton ,
Una domanda successiva che ho è: è possibile aggiungere testo in cima a ogni colonna e all'inizio di ogni riga?
Se sì, quale sarebbe un modo efficace per farlo? Ognuno di essi dovrebbe essere racchiuso in una casella di testo?
Ri: Genera una matrice di caselle di controllo selezionabili@uday_guntupalli ,
È possibile utilizzare un CheckBox() all'interno di una Table Box per creare una tabella di caselle di controllo.
nRow = 5;
nCol = 6;
// create a table box to contain everything
tbl = Table Box();
// add all columns with the given number of rows
For( i = 1, i <= nCol, i++,
Insert Into( tbl, Check Box( Repeat( {" "}, nRow ) ) )
);
New Window( "Check Box Example",
tbl,
Button Box( "Show results",
// initialize the result
result = {};
// loop through each row
For( i = 1, i <= nRow, i++,
// initialize the row list
result[i] = {};
// loop through each column getting values
For( j = 1, j <= nCol, j++,
result[i][j] = tbl[CheckBoxBox( j )] << get( i )
);
);
// convert the list to a 2-d matrix
result = Matrix( result );
Show( result );
)
);
Ecco come appare la finestra:

Ed ecco il risultato nel registro con le caselle di controllo selezionate sopra:
result =
[ 1 0 0 0 0 0,
0 1 0 0 0 0,
0 0 1 0 0 0,
0 0 0 1 0 0,
0 0 0 0 1 0];
Ri: Genera una matrice di caselle di controllo selezionabili@thomasz ,
Penso che per le mie esigenze vada bene. Tuttavia, se posso, avrei un paio di domande di follow-up:
1. Le posizioni selezionate sono recuperabili? - Se sì, puoi gentilmente fornire un esempio di come recuperare tali dati?
2. È possibile aggiungere un po' più di testo attorno a questa finestra? Più simile a un'etichetta dell'asse X e un'etichetta dell'asse Y
Ri: Genera una matrice di caselle di controllo selezionabiliNon è una soluzione molto elegante, ma qualcosa del genere potrebbe funzionare:
lv={};
for(i=1,i<=4,i++, insert into(lv,""));
tCB="";
for(j=1,j<6,j++,tCB||="check box( (lv)),");
tCB=substr(tcB,1,length(tCB)-1);
eval(parse(eval insert("wind=new window( \!"Check boxes\!",
H List Box(
^tCB^))")));