Riferimenti ai report e alle caselle dei pulsantiCara comunità,
Spero che tu possa aiutare con questo. Lo script di esempio seguente crea una tabella e apre la piattaforma del profiler. Inoltre aggiunge due controlli al report. La funzionalità del pulsante "Attiva" consiste nell'impostare il valore della casella di controllo su 1/true. I controlli vengono aggiunti utilizzando un riferimento al report del profiler, "PF". Ora, il problema sorge quando si esegue lo script due volte di seguito. In questo modo, il riferimento 'PF' verrà sovrascritto per fare riferimento al report più recente. Quando utilizzo il pulsante "Attiva" nel vecchio report, ora imposta il valore della casella di controllo nel nuovo report. Naturalmente questo non è il comportamento che desidero. Immagino di dover in qualche modo utilizzare un riferimento univoco per ogni rapporto. Qualcuno può aiutare? Grazie.
Table 1 = New Table( "Table 1",
Add Rows( 1 ),
New Column( "p1", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [2] ) ),
New Column( "p2", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [3] ) ),
New Column( "model",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( :p1 ^ 2 + :p2 ^ 2 ),
Set Selected
),
Set Row States( [1] )
);
PF = Profiler(
Y( :model ),
Profiler(
1,
Term Value(
p1( 2, Min( 1.9 ), Max( 2.1 ), Lock( 0 ), Show( 1 ) ),
p2( 3, Min( 2.9 ), Max( 3.1 ), Lock( 0 ), Show( 1 ) )
)
)
);
Report( PF )["Prediction Profiler"] << Append(
NewButton = Button Box( "Turn On" );
//NewIndicator = Radio Box();
);
Report( PF )["Prediction Profiler"] << Append( CheckBox = Check Box( "Item 1" ) );
Report( PF )[Button Box( 1 )] << Set Script(
CheckBox << Set( 1 )
);
Ri: Riferimenti alle caselle dei pulsanti e dei reportQuindi questo ha funzionato, grazie.
Eval(
Substitute(
Expr(
Report( PF )["Prediction Profiler"] << Append( _NewButton_ = Button Box( "Turn On" ) );
Report( PF )["Prediction Profiler"] << Append( _CheckBox_ = Check Box( "Item 1" ) );
_NewButton_ << Set Script( _CheckBox_ << Set( 1 ) );
),
Expr( __NewButton__ ), Parse( "NewButton" || Char( counter ) ),
Expr( _CheckBox_ ), Parse( "CheckBox" || Char( counter ) )
)
);
Ri: Riferimenti alle caselle dei pulsanti e dei report<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao Craige
Grazie per questo. La casella di controllo in questo esempio serviva solo a illustrare il comportamento. Nella mia applicazione "reale" la Button Box crea un diario da un report. Quindi il problema era fare in modo che il pulsante facesse riferimento alla finestra del report giusta. La tua soluzione potrebbe tornare utile un'altra volta. Grazie.
Ri: Riferimenti alle caselle dei pulsanti e dei reportIl tuo esempio ha una casella di controllo che è il fratello successivo di una casella di pulsanti, il che significa che è davvero facile per la casella di pulsanti trovare la casella di controllo, se solo la casella di pulsanti riesce a trovare se stessa.Può, se usi setFunction anziché set script.Testo in grassetto, di seguito.La variabile è sparita.Ora hai una funzione anonima (non assegnata a una variabile JSL) a cui la casella del pulsante può passare "questo"."questo" è la casella dei pulsanti e il fratello di "questo" è la casella di controllo.La variabile PF è ancora modificata, ma non sono sicuro che tu ne abbia bisogno.È possibile che la funzione esegua la scansione lungo la catena <
Table 1 = New Table( "Table 1",
Add Rows( 1 ),
New Column( "p1", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [2] ) ),
New Column( "p2", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [3] ) ),
New Column( "model",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( :p1 ^ 2 + :p2 ^ 2 ),
Set Selected
),
Set Row States( [1] )
);
PF = Profiler(
Y( :model ),
Profiler(
1,
Term Value(
p1( 2, Min( 1.9 ), Max( 2.1 ), Lock( 0 ), Show( 1 ) ),
p2( 3, Min( 2.9 ), Max( 3.1 ), Lock( 0 ), Show( 1 ) )
)
)
);
Report( PF )["Prediction Profiler"] << Append(
Button Box( "Turn On" );
//NewIndicator = Radio Box();
);
Report( PF )["Prediction Profiler"] << Append( Check Box( "Item 1" ) );
Report( PF )[Button Box( 1 )] << Set Function( Function( {this}, (this << sib) << Set( 1 ) ) );
Ri: Riferimenti alle caselle dei pulsanti e dei reportIl modo in cui gestisco questi problemi è creare i riferimenti ai diversi oggetti con variabili di memoria diverse utilizzando replace
Names Default To Here( 1 );
// Create a counter that initializes only the first time it is run, so it increments for each execution
If( Is Empty( counter ) == 1,
counter = 0
);
counter = counter + 1;
Eval(
Substitute(
Expr(
Report( PF )["Prediction Profiler"] << Append(
__NewButton__ = Button Box( "Turn On" );
//NewIndicator = Radio Box();
)
),
Expr( __NewButton__ ), Parse( "NewButton" || Char( counter ) )
)
);
questo creerà NewButton1, NewButton2, ecc. per ogni esecuzione successiva.