변경 스크립트의 번호 편집 상자저는 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: 변경 스크립트의 번호 편집 상자좋은 제안을 해주신 모든 분들께 감사드립니다. 나는 아직 그것들을 모두 시험해보지는 않았지만, "진짜" 일에서 쉬는 대로 시험해 볼 것입니다.
그동안 제 생각에 많은 문제의 근본 원인은 앱 빌더(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>