for 루프에서 버튼 스크립트 만들기변수가 될 여러 행이 있는 테이블 상자를 생성하려고 합니다. 각 행에 목록의 해당 변수에 대해 일부 기능을 수행하는 버튼이 있기를 원합니다.
현재 문제: for 루프의 스크립트가 예상대로 eval expr을 해석하지 않습니다. 각 확인란에 첨부된 결과 스크립트는 버튼 1, 2 또는 3을 눌렀음을 인쇄해야 합니다. 대신 항상 4라고 말합니다. 최종 목표는 확인란을 클릭할 때 UserText[i]에서 작업을 수행하는 것입니다.
누구든지 내가 뭘 잘못하고 있는지 설명하는 데 도움을 줄 수 있습니까? 감사합니다!
보너스 질문: 확인란이 단추 상자보다 작고 단추 상자의 크기를 조정할 수 없기 때문에 확인란을 사용하고 있습니다. 이상적으로는 클릭할 수 있는 작은 아이콘일 뿐입니다. 전체 버튼 대신 작은 클릭 가능한 "x"를 만드는 친근한 방법이 있습니까?
JMP 버전: 16
Names Default To Here( 1 );
UserText = {"default 1", "default 2", "default 3"};
win2 = New Window( "Select files",
tb = Table Box(
Col Box( "Text", {} ),
Col Box( "Button", {} ),
),
tb << set row borders(1);
);
//for loop to add a number of rows with a small button next to each one
For( i = 1, i <= N Items( UserText ), i++,
tb << add row(
{Text Box( UserText[i], <<SET width=""></SET>스크립팅Re: for 루프에서 버튼 스크립트 만들기안녕하세요,
당신은 매우 가까웠습니다.
Eval( EvalExpr( ) )을 사용하여 아래와 같이 전체 tb << 행 추가() 문을 래핑하면 다음과 같은 동작을 얻게 됩니다.
//for loop to add a number of rows with a small button next to each one
For( i = 1, i <= N Items( UserText ), i++,
eval(evalexpr(
tb << add row(
{Text Box( UserText[i], <<SET width=""></SET>Re: for 루프에서 버튼 스크립트 만들기이것을 처리하는 나의 오래된 학교 방법은 다음과 같습니다.
Names Default To Here( 1 );
UserText = {"default 1", "default 2", "default 3"};
win2 = New Window( "Select files",
tb = Table Box(
Col Box( "Text", {} ),
Col Box( "Button", {} ),
),
tb << set row borders(1);
);
//for loop to add a number of rows with a small button next to each one
For( i = 1, i <= N Items( UserText ), i++,
tb << add row(
{Text Box( UserText[i], <<SET width=""></SET>Re: for 루프에서 버튼 스크립트 만들기내 방법은 XPath 및 Contains()를 사용하여 조금 더 복잡하지만 경우에 따라 더 강력할 수 있습니다(XPath를 변경하면 Checkbox 옆의 다른 요소로 확장할 수 있음).
Names Default To Here(1);
UserText = {"default 1", "default 2", "default 3"};
win2 = New Window("Select files",
tb = Table Box(Col Box("Text", {}), Col Box("Button", {}), Col Box("Third", {})),
tb << set row borders(1)
);
expr_tablebox_get_checkbox_idx = Expr(
row_idx = Contains((this << parent) << XPath("//CheckBoxBox"), this);
);
expr_tablebox_get_column_idx = Expr(
col_idx = Contains(((this << parent) << parent) << Get Names, (this << parent) << get heading)
);
expr_check_box = Expr(
expr_tablebox_get_checkbox_idx;
expr_tablebox_get_column_idx;
Show(row_idx, col_idx);
);
For Each({txt}, UserText,
tb << Add Row(
{Text Box(txt, << Set Width),
cb = Check Box({""}, << Set Function(function({this},
expr_check_box
))
),
cb = Check Box({""}, << Set Function(function({this},
expr_check_box
))
)
};
);
);
</CODE>이 방법을 사용하면 표현식을 호출하는 위치에 따라 표현식이 올바르게 평가되는 몇 가지 문제가 발생할 수 있으므로 먼저 시도해서는 안 됩니다.</P>
<P> </P></LINGO-BODY><LINGO-SUB id="lingo-sub-601493" slang="en-US" mode="NONE">Re: for 루프에서 버튼 스크립트 만들기</LINGO-SUB><LINGO-BODY id="lingo-body-601493" slang="en-US" mode="NONE"><P>어젯밤에 "이것은 Xpath와 포함으로도 가능하다"고 생각하면서 돌아왔습니다. Jarmo의 게시물은 이미 여기에 있었습니다. 아래에 제시한 예는 매우 유사하지만 일단 테이블을 빌드한 후 Xpath 문을 사용하여 모든 체크박스 기능을 한 번에 할당합니다. 이것은 이런 유형의 일을 처리하는 제가 가장 좋아하는 방법 중 하나가 되고 있습니다.</P>
<P> </P>
<PRE><CODE class=" language-jsl">Names Default To Here( 1 );
UserText = {"default 1", "default 2", "default 3"};
win2 = New Window( "Select files",
tb = Table Box( Col Box( "Text", {} ), Col Box( "Button", {} ), << set row borders(1) );
);
//add rows with a small button next to each one
For each ( { txt, i }, UserText,
tb << add row( {Text Box( txt, <<SET width=""></SET>
Re: for 루프에서 버튼 스크립트 만들기감사합니다! 나는 이것을 이해하는 데 조금 더 시간을 할애해야 할 것입니다. set 함수를 사용하지 않았고 스크립팅 가이드와 몇 가지 예제를 빠르게 읽은 후 동작을 잘 이해하지 못합니다. 나는 이와 같은 기능이 필요한 상황을 예견하므로 이것을 잠시 염두에 두었다가 그 때가 되면 돌아올 것입니다.
자료에 명시적으로 언급되지 않은 것 같은 기본 사항을 확인하려면 함수를 정의할 때 'this'는 함수가 연결된 모든 개체를 가리키는 JSL의 사전 정의된 용어입니까? set 함수 인수에서 'this'를 사용하고 함수 정의의 다른 곳에 is가 나타나지 않는 몇 가지 예를 봅니다(올바른 용어를 사용하고 있다고 약 60% 확신합니다). 기본 수학 함수는 MyFn = function ({x,y}, x + y )와 같이 직관적이지만 객체에 접근하면 매우 빠르게 복잡해집니다.
Re: for 루프에서 버튼 스크립트 만들기<< Set Function과 함께 사용할 때 첫 번째 매개변수일 뿐입니다. 이것 , JMP17 스크립팅 인덱스가 사용하는 것 같습니다. thisBox 예를 들어). 그리고 첫 번째 인수는 해당 함수가 설정된 특정 상자에 대한 참조입니다.이 도움말 페이지는 몇 가지 예와 함께 추가 정보를 제공할 수 있습니다.
스크립팅 가이드 > 디스플레이 트리 > 사용자 지정 창 구성 > 기능 설정 및 스크립트 설정
또한 일부 디스플레이 상자에서는 << Set Function 과 함께 여러 매개변수를 사용할 수 있습니다. 스크립팅 인덱스에서 볼 수 있습니다(찾을 수 있는 경우 가끔 까다로울 수 있음).
