J'utilise une fonction pour créer plusieurs tracés en fonction de différentes conditions. Parfois, cela me demande d'exclure des lignes (valeurs extrêmes) afin de mieux adapter le graphique lors de sa présentation à nos clients.J'ai essayé d'utiliser un indicateur global pour définir si oui ou non cette boîte devait être supprimée, mais comme je l'ai découvert hier, il y a des possibilités lorsque le drapeau sera = 1 mais la condition de test n'a pas de zone de texte (5).
La zone de texte obtient automatiquement sa propre diapositive, je dois donc la supprimer.
Toute aide serait appréciée
GraphPlot = Function(
{dt, Yaxis },
Eval(
Substitute(
Expr(
gb = dt << Graph Builder(
Invisible,
Where( dt:chnl == chan & dt:astate == attn & dt:pstate == phas ),
// Size( 1440, 1040 ),
show control panel( 0 ),
show legend( 0 ),
Subtitle Alignment( "Left" ),
Show Subtitle( 1 ),
Variables(
Y( Eval( Yaxis ) ),
X( :FREQ_GHz ),
Group X( :wafer_number ),
Overlay( :RowCol )
),
Elements( Smoother( X, Y, legend( 19 ), lambda( 0.0001 ) ) ),
)
),
Expr( plot ), plot,
Expr( chan ), chan,
Expr( attn ), attn,
Expr( phas ), phas,
Expr( mode ), mode,
Expr( tst ), tst
)
);
Report( gb )[Axisbox( 1 )] << Min( 7 ) << Inc( 1 ) << Add Ref Line( 8, "Solid", "Black", "m106", 1 ) << Add Ref Line( 17.5, "Solid", "Black", "m105", 1 ) << Label Row( Show Major Grid( 1 ) );
Report( gb )[Axisbox( 2 )] << Inc( 2 ) << Minor Ticks( 1 ) << Label Row( Show Major Grid( 1 ) );
(gb << Top Report)[Text Box( 1 )] << Delete;
// This may or may not happen on every condition
// I tried creating a flag when i actually exclude parts however
// The flag is global and not specific on a test condition
If( excludeFlag == 1, Report( gb )[Text Box( 5 )] << Delete );
Report( gb )[Framebox( 1 )] << Frame Size( 781, 655 );
Report( gb )[Outline Box( 1 )] << Set Title( Eval Insert( WaferListSQLString || " ^tst^" ) );
Report( gb )[Text Edit Box( 2 )] << Set Font Size( 15 ) << Set Font Style( "Bold" );
Report( gb )[Text Edit Box( 1 )] << Set Font Size( 25 ) << Set Font Style( "Bold" );
);Je ne sais pas exactement quelle est votre question. Mais si vous dites que parfois la zone de texte (5) n'est pas là lorsque vous avez détecté un excludeFlag == 1 et que cela cause un problème, vous pouvez résoudre ce problème en utilisant une fonction Try ()
If( excludeFlag == 1, Try( Report( gb )[Text Box( 5 )] << Delete) );
Si vous n'êtes pas sûr que la suppression réussira mais provoque une erreur, vous pouvez l'utiliser comme argument de la fonction Try (). Il peut ne pas y avoir d'objets Zone de texte ou il peut y en avoir plusieurs. Je vérifierais le texte si vous trouvez le premier pour être sûr que c'est bien celui que vous souhaitez supprimer.
Try(
text = (gb << Top Report)[Text Box( 1 )] << Get Text;
If( Contains( text, "what I am looking for" ),
(gb << Top Report)[Text Box( 1 )] << Delete;
),
Throw( "No text box found." );
);