Wie kann ich diese Fehlermeldung hier verschwinden lassen?

Es erscheint, wenn ich Tabelle und Fenster über die Schaltfläche „Fenster schließen“ schließe, nachdem ich zum ersten Mal ein Diagramm gezeichnet habe. Ich habe das Skript unten kopiert, aber um es auszuführen, müsste man eine entsprechende Datentabelle geöffnet haben (siehe beigefügtes Beispiel). Diese und nur diese Tabelle sollte beim Ausführen des Skripts geöffnet sein. Dieses Skript ist ein Versuch, einen kleinen Desktop-Stabilitätsrechner (sehr schmutzig, einigermaßen schnell) / Helfer beim Schreiben von Berichten, beim Bewerten der Produkthaltbarkeit usw. zu haben. Es ermöglicht dem Benutzer, unsere normalisierten Stabilitätsdaten (wobei t=0 100 % rel. entspricht) auf hypothetische Ausgangskonzentrationen eines beliebigen Qualitätsparameters (sofern dieser numerisch ist) anzuwenden und schnell zwischen Einstellungen und Parametern zu wechseln. Ich habe es bisher geschafft, aber diese Fehlermeldung macht mich wahnsinnig. (Darf ich das auch beim nächsten Mal zeigen? Persönliche Nordics-Benutzergruppe: 5. Oktober 2022 ?)

Delete Symbols();
Names Default To Here( 1 );
dt = Current Data Table();
dt << Clear Row States;
dt << Clear Select; // avoids accidentally including columns in colList
// alpha level for bivariate plot
alpha = 0.1;
// get lists for model selection
Batch = Associative Array( dt:Batch ) << Get Keys; // direct column reference
For( i = 1, i <= N Row( dt ), i++, // find all rel% columns
For( j = 1, j <= N Col( dt ), j++,
If( Column( j )[i] == 0,
For( k = 1, k <= N Col( dt ), k++,
If( Column( k )[i] == 100,
Column( k ) << Set Selected( 1 )
)
)
)
)
);
colList = dt << Get Selected Columns;
// length of column list box
nItems = N Items( colList );
// radio box argument
rb1_expr = Expr(
dt << Clear Row States;
one_rb = rb1 << Get Selected;
dt << Select Where( (dt:Batch == one_rb) ); // direct column reference
dt << Invert Row Selection;
dt << Hide and Exclude;
dt << Invert Row Selection );
// "draw graph" button & column list selection arguments
action_expr = Expr(
vlb << Delete; // delete existing vlb
yColAbs = Eval(
Eval Expr(
dt << New Column( one_rb || " / " || " / " || "start level = " || Char( startLevel ) || " for " || Char( yColRel ),
formula( Expr(startLevel) / Expr(100) * (As Column( Expr( yColRel ) ) ) )
)
)
);
pb << Append( // append new vlb with fresh graph
vlb = V List Box(
biv = Bivariate(
Y( yColAbs ), // is this the culprit?
X( dt:Time ), // direct column reference
Fit Line(
{Confid Curves Fit( 1 ),
Confid Curves Indiv( 1 ),
Confid Shaded Fit( 1 ),
Confid Shaded Indiv( 1 ),
Line Color( {230, 159, 0} )},
{Set α Level( 0.1 )}
),
Automatic Recalc( 1 ),
SendToReport(
// note reference to one_rb below in use for changing y axis label
Dispatch( {}, one_rb, TextEditBox, {Set Text( "QC parameter value" )} ),
Dispatch( {}, "timepoint 1", TextEditBox, {Set Text( "Time [months]" )} ),
Dispatch( {}, "Linear Fit", OutlineBox, {Close( 1 )} )
),
)
)
)
);
// model selection window with radio buttons & colum list box
nw = New Window( "Model selection",
Show Menu( 0 ),
Show Toolbars( 1 ), // to have access to cross hair
Border Box( Top( 0 ), Bottom( 20 ), Left( 20 ), Right( 10 ),
H List Box(
Panel Box( "Batch",
rb1 = Radio Box(
Eval List( Batch ),
rb1_expr
),
),
Panel Box( "QC parameter (y-axis)",
stabDat = Col List Box(
Max Selected( 1 ),
Width( 250 ),
N Lines( nItems ),
On Change(
yColRel = Column( dt, (stabDat << Get Selected) );
If( Is Empty( startLevel ),
//then
Empty(),
//else
action_expr
)
)
)
),
stabDat << Append( colList );
Panel Box( "Action",
V List Box(
H List Box (
neb = Number Edit Box( Empty(), 7, << Set Function(
startLevel = neb << Get;
If( Is Empty( yColRel ),
//then
Empty(),
//else
action_expr
) ) ),
Spacer Box( Size( 5, 0 ) ),
Text Box( "Enter start level" )
),
Spacer Box( Size( 0, 10 ) ),
Button Box( "Draw graph",
If( ( Is Empty( startLevel ) + Is Empty( yColRel )) > 0,
// then
New Window( "Message", modal,
V List Box(
Text Box( "QC parameter selection and/or start level missing!" ),
Spacer Box( size( 0, 10 ) )
)
),
// else
action_expr
)
),
Spacer Box( Size( 0, 10 ) ),
Button Box ( "Close Window",
If( !Is Empty( PF ), PF << Close Window);
nw << Close Window;
Close(dt, no save)
)
)
),
pb = Panel Box( "Model",
vlb = V List Box () // space for model graph
)
)
)
);
// making the initially selected buttons active in row selection
one_rb = rb1 << Get Selected;
dt << Select Where( (dt:Batch == one_rb) );
dt << Invert Row Selection;
dt << Hide and Exclude;
Falls jemand ein ähnliches Problem mit einer in generierten Anwendung hat Anwendungsersteller .
Für Bewerbungen ist die bei close() Der Befehl kann per gesendet werden
(thisModuleInstance << Get Box) << on close(...)
</CODE></P><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-582935" slang="en-US" mode="NONE">Betreff: Fehlermeldung beim Schließen einer selbst erstellten Anwendung über die Schaltfläche („Ungelöste Spalte in Zeile 1“)</LINGO-SUB><LINGO-BODY id="lingo-body-582935" slang="en-US" mode="NONE"><P>Nur für den Fall, dass dies von Interesse ist: Die Fehlermeldung wurde durch die Verwendung von „On Change“ anstelle von „Set Function“ in Verbindung mit dem Spaltenlistenfeld verursacht. Das Skript (oder zumindest eine modifizierte Version des hier veröffentlichten) gab ständig Fehlermeldungen aus, wenn es nicht über die Schaltfläche „Fenster schließen“, sondern über die Schaltfläche „Beenden“ in der oberen rechten Ecke des Fensters beendet wurde. Dies geschah, nachdem ich ein paar Zeilen hinzugefügt hatte, um sicherzustellen, dass die Datentabelle unabhängig davon, wie das Fenster verlassen wird, geschlossen ist. Ich vermute, dass das „On Change“ ausgelöst wird ... irgendwie ...</P><P> </P><P>Alt</P><PRE><CODE class=" language-jsl">Panel Box( "QC parameter (y-axis)",
stabDat = Col List Box(
Max Selected( 1 ),
Width( 250 ),
N Lines( nItems ),
On Change( // not working so well for this application
yColRel = Column( dt, (stabDat << Get Selected) );
If( Is Empty( startLevel ),
//then
Empty(),
//else
action_expr
)
)
)
)
Neu
Panel Box( "QC parameter (y-axis)",
stabDat = Col List Box(
Max Selected( 1 ),
Width( 250 ),
N Lines( nItems ),
<< Set Function( // no more error messages
yColRel = Column( dt, (stabDat << Get Selected) );
If( Is Empty( startLevel ),
//then
Empty(),
//else
action_expr
)
)
)
)
Danke schön! Wie immer sehr geschätzt, aber es kommt immer noch eine Fehlermeldung.@jthi Die Lösung von 's hat jedoch funktioniert.
Eine schnelle und schmutzige Möglichkeit, das Problem zu lösen, wäre, den Absatz „Fenster schließen“ so zu ändern, dass Fehler ignoriert werden
Button Box( "Close Window",
If( !Is Empty( PF ),
Try( PF << Close Window )
);
Try( nw << Close Window );
Try( Close( dt, no save ) );
)
Ich glaube, dass action_expr ausgelöst wird, wenn Sie das Fenster schließen, und dann wird alles durcheinander geraten. Ich bin mir nicht ganz sicher, warum das passiert, aber das Col List Box wird nicht schnell genug zerstört. Um dieses Problem zu umgehen, könnten Sie die Datentabelle möglicherweise auf „On Close()“ schließen lassen und sie von der Schaltfläche „Fenster schließen“ entfernen.
Fügen Sie dies als letzte Zeile hinzu
nw << On close(Close(dt, no save));
und ändern Sie die Schaltfläche in
Button Box("Close Window",
If(!Is Empty(PF),
PF << Close Window
);
nw << Close Window;
)