我怎樣才能讓這裡的錯誤消息消失?

當我第一次繪製圖表後通過“關閉窗口”按鈕關閉表格和窗口時,它就會出現。 我複制了下面的腳本,但要運行它,必須打開足夠的數據表(請參閱隨附的示例)。 運行腳本時應打開此表(且僅此表)。 該腳本是在編寫報告、評估產品保質期等時嘗試使用一個小型桌面穩定性計算器(非常臟,相當快)/幫助程序。 它允許用戶將我們的標準化穩定性數據(其中 t=0 對應於 100%rel.)應用於任何質量參數(只要是數字)的假設起始濃度,並在設置和參數之間快速切換。 到目前為止我已經做到了,但是這個錯誤消息讓我發瘋。 (另外,我可以在下一個面對面的北歐用戶組:2022 年 10 月 5 日?)

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;
如果有人對中生成的應用程序有類似的問題應用程序生成器.
對於應用程序來說,關閉時()命令可以通過發送
(thisModuleInstance << Get Box) << on close(...)
</CODE></P><P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-582935" slang="en-US" mode="NONE">回复:通過按鈕關閉自製應用程序時出現錯誤消息(“第 1 行未解析的列”)</LINGO-SUB><LINGO-BODY id="lingo-body-582935" slang="en-US" mode="NONE"><P>以防萬一,錯誤消息是由與列列錶框相關的“更改時”而不是“設置功能”的使用引起的。 當不使用“關閉窗口”按鈕而是使用窗口右上角的退出按鈕退出時,該腳本(或至少是此處發布的腳本的修改版本)不斷拋出錯誤消息。 這是在我添加幾行以確保無論窗口如何退出都關閉數據表之後發生的。 我懷疑“On Change”被觸發了……不知何故……</P><P> </P><P>老的</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
)
)
)
)
新的
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
)
)
)
)
謝謝你! 一如既往,非常感謝,但仍然拋出錯誤消息。@jthi的解決方案雖然有效。
處理該問題的一種快速而骯髒的方法是更改“關閉窗口”段落以忽略錯誤
Button Box( "Close Window",
If( !Is Empty( PF ),
Try( PF << Close Window )
);
Try( nw << Close Window );
Try( Close( dt, no save ) );
)
我認為當你關閉窗口時,你的action_expr就會被觸發,然後它就會變得一團糟。 我不太清楚為什麼會發生這種情況,但 Col 列錶框被破壞的速度不夠快。 作為解決方法,您可以將關閉的數據表移至 On Close() 並將其從“關閉窗口”按鈕中刪除。
將其添加為最後一行
nw << On close(Close(dt, no save));
並將按鈕更改為
Button Box("Close Window",
If(!Is Empty(PF),
PF << Close Window
);
nw << Close Window;
)