Ich benutze eine Funktion, um mehrere Diagramme basierend auf verschiedenen Bedingungen zu erstellen. Manchmal muss ich (extreme Ausreißer-) Zeilen ausschließen, um das Diagramm besser an unsere Kunden anzupassen. Ich habe versucht, mithilfe eines globalen Flags festzulegen, ob dieses Feld gelöscht werden muss, aber wie ich herausgefunden habe gestern gibt es möglichkeiten wann das flag = 1 wird aber die testbedingung hat kein textfeld (5).
Das Textfeld erhält automatisch eine eigene Folie, sodass ich es entfernen muss.
Jede Hilfe wäre dankbar
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" );
);Ich bin mir nicht ganz sicher, was deine Frage ist. Wenn Sie jedoch sagen, dass das Textfeld (5) manchmal nicht vorhanden ist, wenn Sie excludeFlag == 1 erkannt haben und dies ein Problem verursacht, können Sie dies mithilfe einer Try () - Funktion beheben
If( excludeFlag == 1, Try( Report( gb )[Text Box( 5 )] << Delete) );
Wenn Sie nicht sicher sind, ob der Löschvorgang erfolgreich ist, aber stattdessen eine Fehlerbedingung verursachen, können Sie diese als Argument für die Try () - Funktion verwenden. Möglicherweise sind keine Textfeldobjekte vorhanden, oder es sind mehrere vorhanden. Ich würde den Text überprüfen, wenn Sie den ersten finden, um sicherzugehen, dass es derjenige ist, den Sie löschen möchten.
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." );
);