Col 목록 상자를 채우는 데 도움이 필요합니다.내 앱 GUI의 일부에는 테이블을 여는 버튼과 해당 테이블의 열로 채워야 하는 Col 목록 상자가 있습니다.
먼저 테이블을 연 다음 Scripting Index에서 수정된 이 예제와 같이 Col Lis Box를 생성하면 모든 것이 제대로 작동합니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "Col List Box Example",
lb = Col List Box()
);
lb << Append (dt << Get Column Names);
그러나 테이블을 여는 버튼이 있는 GUI로 창을 만들면 먼저 Col 목록 상자를 만든 다음 테이블을 열면 작동이 중지됩니다. 이것은 실제 코드의 단순화된 버전이지만 동일한 문제가 있습니다. 열 목록 상자가 열 이름으로 채워지지 않습니다.
Names Default To Here( 1 );
open = Expr(dt = Open( "$SAMPLE_DATA/Big Class.jmp" ); lb << Append (dt << Get Column Names););
gui = Expr(V List Box(btn = Button Box ("OPEN", open), lb = Col List Box()));
New Window( "Col List Box Example",
gui;
);
내가 무엇을 잘못하고 있지? 작동하게 하려면 어떻게 해야 하나요?
스크립팅Re: Col 목록 상자를 채우는 데 도움이 필요합니다.좋아, ColListBox가 생성될 때 현재 데이터 테이블에 연결된 것처럼 보입니다. 그리고 해당 DT의 열만 추가할 수 있습니다.
따라서 동일한 COlListBox에서 내 GUI에 있는 다른 DT의 열을 표시해야 하므로 매번 재정의해야 합니다. 이전 것을 삭제하고 대신 새 것을 만드십시오.
이것은 작동하는 것 같습니다. 더 나은 솔루션이 있으면 알려주십시오.
Names Default To Here( 1 );
open = Expr(dt = Open( "$SAMPLE_DATA/Big Class.jmp" ); refreshColList;);
refreshColList = Expr(
(pb << Child) << Delete Box;
pb << Append(lb = Col List Box(dt, all));
);
gui = Expr(V List Box(btn = Button Box ("OPEN", open), pb = Panel Box("Column List", lb = Col List Box())));
New Window( "Col List Box Example",
gui;
);Re: Col 목록 상자를 채우는 데 도움이 필요합니다.이 Col 목록 상자를 사용하여 단추와 다른 Col 목록 상자(모든 플랫폼에서와 같이)를 사용하여 다양한 역할의 열을 캐스팅하기 때문에 다른 설정 등으로 많은 col 목록 상자를 다시 만들어야 합니다. 그래서 범용 함수를 작성했습니다. 그에 대한:
refreshDisplayBox = Function({dt, box, expr},
parent = box << Parent;
box << Delete Box;
parent << Append(box = expr);
Return (box);
);dt는 디스플레이 상자를 다시 생성하기 위해 expr에서 사용되는 경우 여기에 필요합니다. 함수 외부에서 사용 중인 테이블의 핸들에 관계없이 함수에 전달됩니다. 모든 표현식을 "dt"로 작성하는 것을 기억해야 합니다.
그러면 스크립트는 다음과 같이 보일 것입니다.
Names Default To Here( 1 );
refreshDisplayBox = Function({dt, box, expr},
parent = box << Parent;
box << Delete Box;
parent << Append(box = expr);
Return (box);
);
colListExpr = Expr(Col List Box(dt/*use generic dt*/, all));
open = Expr(dtEXT/*different table name*/ = Open( "$SAMPLE_DATA/Big Class.jmp" ); lb = refreshDisplayBox(dtEXT/*pass it into the function*/, lb, colListExpr));
gui = Expr(V List Box(btn = Button Box ("OPEN", open), pb = Panel Box("Column List", lb = Col List Box())));
New Window( "Col List Box Example",
gui;
);
이것이 유효한 접근 방식인지 알려주십시오.