변경 스크립트의 숫자 편집 상자저는 JSL과 Application Builder를 처음 사용합니다.
일련 번호 편집 상자 쌍이 있는 대화 상자를 만들려고 합니다.각 쌍 중 하나는 "시작" 시간을 나타내고 다른 하나는 해당 "종료" 시간을 나타냅니다.
사용자가 "종료" 시간보다 "시작" 시간을 늦게 입력하거나 "시작" 시간 이전에 "종료" 시간을 입력하는 상황을 피하고 싶습니다.
내 첫 번째 생각은 "시작" 상자에 대해 다음과 같이 각 상자에 "변경 시" 스크립트를 추가하는 것이었습니다.
If( (Start << Get) > (End << Get),
End << Set( Start << Get )
);
"끝" 상자에 대해 다음과 같이 합니다.
If( Start << Get > End << Get,
Start << Set( End << Get )
);
그러나 이것은 작동하지 않습니다(원하지 않는 조건이 발생할 때 아무 일도 일어나지 않는다는 의미에서).
나는 아마도 아주 어리석은 일을하고 있지만 도움을 주시면 감사하겠습니다.
Re: 변경 스크립트의 번호 편집 상자도움을 주셔서 감사합니다.
Re: 변경 스크립트의 번호 편집 상자Application Builder는 배우는 데 시간이 걸리지만 그만한 가치가 있습니다.JMP 버전 10부터 사용하고 있는데 버전이 올라갈수록 좋아집니다.도움이 될 수 있는 JMP Discovery 2013 JSL Roundtable에서 발표한 프레젠테이션을 첨부했습니다.
Re: 변경 스크립트의 번호 편집 상자예, 저장된 앱 빌더 파일을 텍스트 편집기에서 열 수 있지만 앱 빌더 GUI는 파일 편집에 지원되는 유일한 방법입니다. (스크립트가 열릴 때 어떤 일이 발생하는지 알고 싶다면 여전히 살펴볼 가치가 있습니다.)
다음은 웹에 있는 리소스에 대한 몇 가지 링크입니다.
https://community.jmp.com/t5/Discovery-Summit-2016/Building-Dashboards-and-Applications-Poster-and-Tutorial/ta-p/22374
Re: 변경 스크립트의 번호 편집 상자좋은 제안을 해주셔서 감사합니다. 아직 모두 시도하지는 않았지만 "진짜" 작업에서 휴식을 취하는 즉시 시도할 것입니다.
그동안 제 많은 문제의 근본 원인은 App Builder(AB)에 대한 자세한 문서를 찾지 못했다는 것입니다. 반드시 존재해야 하지만 찾을 수 없습니다. 누구든지 링크가 있습니까?
예를 들어 AB의 속성 메뉴에 있는 "스크립트" 필드가 무엇을 위한 것인지 모르고 NEB(Number Edit Box) 문서와 연결하지 않았습니다. 나는 여기에서 더듬거리고 있다, 분명히.
내 혼란의 또 다른 예는 NEB의 AB 속성 창에 "증가" 항목 필드가 있지만 항목을 허용하지 않는다는 것입니다. 나는 계속할 수 있었다…
내가 말했듯이, AB에 대한 몇 가지 좋은 문서와 복잡한 모달 대화 상자 스크립트의 몇 가지 훌륭한 예가 좋을 것입니다.또한 AB가 인터페이스에 대해 생성한 코드를 실제로 볼 수 있는 방법이 있습니까?
Re: 변경 스크립트의 번호 편집 상자여기 예가 있습니다.JMP 13을 사용하여 생성되었으므로 이전 버전에서는 작동하지 않을 수 있습니다.
Re: 변경 스크립트의 번호 편집 상자각 번호 편집 상자를 호출하도록 스크립트를 설정해야 합니다.간단한 예를 만들었습니다.
start_time_neb : 시작 시간에 대한 숫자 편집 상자
end_time_neb : 종료 시간에 대한 숫자 편집 상자
각 숫자 편집 상자를 마우스 오른쪽 버튼으로 클릭하고 스크립트 > 스크립트 (번호가 변경되지 않음).다음은 내가 추가한 스크립트입니다.
// This function is called when the number edit value is committed
start_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = this << Get;
end_time_value = end_time_neb << get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The Start Time cannot be after the End Time")
);
this << set(.);
);
);
);
// This function is called when the number edit value is committed
end_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = start_time_neb << get;
end_time_value = this << Get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The End Time cannot be before the Start Time")
);
this << set(.);
);
);
);
Re: 변경 스크립트의 번호 편집 상자시도해 볼 몇 가지:
1. 로그 창을 확인하십시오. 아무 일도 일어나지 않는 것처럼 보이지만 단서를 제공할 오류가 보고될 수 있습니다.
2. 코드를 가능한 한 간단한 것으로 줄이십시오.이것은 효과가 있는 것과 그렇지 않은 것을 파악하는 데 도움이 될 것입니다.예를 들어 다음과 같이 설명하는 방식으로 작동하는 것 같습니다.
New Window("Test",
neb1 = NumberEditBox(0),
neb2 = NumberEditBox(0)
);
neb1 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb2 << Set( neb1 << Get )
)
);
neb2 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb1 << Set( neb2 << Get )
)
);
Re: 변경 스크립트의 번호 편집 상자OnChange 대신 SetFunction 내에서 시작 및 끝 NumberEditBox에 대한 최소/최대 값을 설정하여 이를 수행할 수 있습니다.
New Window( "Example",
Lineup Box( N Col( 2 ),
Text Box( "Work Starts" ),
Text Box( "Work Ends" ),
start_neb = Number Edit Box(
0,
<<SET format=""></SET>