여기서 이 오류 메시지를 사라지게 하려면 어떻게 해야 합니까?

처음 그래프를 그린 후 "창 닫기" 버튼을 통해 테이블과 창을 닫으면 나타납니다. 아래 스크립트에 복사했지만 실행하려면 적절한 데이터 테이블을 열어야 합니다(첨부된 예 참조). 스크립트를 실행할 때 이 테이블만 열려 있어야 합니다. 이 스크립트는 작은 데스크톱 안정성 계산기(매우 더럽고 상당히 빠름)/보고서 작성, 제품 보관 수명 평가 등을 할 때 도우미를 사용하려는 시도입니다. 이를 통해 사용자는 표준화된 안정성 데이터(여기서 t=0은 1000%rel에 해당)를 모든 품질 매개변수(숫자인 경우)의 가상 시작 농도에 적용하고 설정과 매개변수 사이를 빠르게 전환할 수 있습니다. 지금까지 만들었지만이 오류 메시지가 나를 미치게 만듭니다. (다음에 이거 보여줘도 될까요? 대면 Nordics 사용자 그룹: 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;
창을 닫으면 action_expr이 트리거되고 모든 것이 엉망이 될 것이라고 생각합니다. 왜 이런 일이 발생하는지 정확히 모르겠지만 Col List Box가 충분히 빨리 파괴되지 않습니다. 해결 방법으로 데이터 테이블 닫기를 On Close()로 이동하고 "창 닫기" 버튼에서 제거할 수 있습니다.
이것을 마지막 줄로 추가하십시오
nw << On close(Close(dt, no save));
버튼을
Button Box("Close Window",
If(!Is Empty(PF),
PF << Close Window
);
nw << Close Window;
)문제를 처리하는 빠르고 더러운 방법은 오류를 무시하도록 창 닫기 단락을 변경하는 것입니다.
Button Box( "Close Window",
If( !Is Empty( PF ),
Try( PF << Close Window )
);
Try( nw << Close Window );
Try( Close( dt, no save ) );
)
고맙습니다! 항상 그렇듯이 매우 감사하지만 여전히 오류 메시지가 표시됩니다.@jthi 의 솔루션은 효과가 있었습니다.
관심 있는 경우를 대비하여 열 목록 상자와 관련하여 "기능 설정"이 아닌 "변경 시"를 사용하여 오류 메시지가 발생했습니다. 스크립트(또는 여기에 게시된 것의 적어도 수정된 버전)는 "창 닫기" 버튼을 사용하여 종료하지 않고 창의 오른쪽 상단 모서리에 있는 종료 버튼을 사용하여 종료할 때 오류 메시지를 계속 표시했습니다. 이것은 창 종료 방법에 관계없이 데이터 테이블이 닫혀 있는지 확인하기 위해 몇 줄을 추가한 후에 발생했습니다. "On Change"가 트리거 된 것 같습니다 ... 어떻게 든 ...
오래된
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
)
)
)
)
누구든지에서 생성 된 응용 프로그램과 유사한 문제가있는 경우 애플리케이션 빌더 .
응용 프로그램의 경우 닫을 때() 다음을 통해 명령을 보낼 수 있습니다.
(thisModuleInstance << Get Box) << on close(...)