여보세요,
저는 데이터를 테이블로 수집하고 사용자 친화적 인 방식으로 데이터를 시각화하기위한 JMP 앱을 만드는 작업을하고 있습니다. 이 앱의 일부로 사용자가 대부분의 시간을 보내는 MainWin 모듈이 있습니다. MainWin 모듈에는 포함 된 데이터 테이블의 데이터로 UI (대부분 요약 된 테이블 상자)를 새로 고치는 데 사용되는 UpdateGUI 함수가 있습니다.
사용자가 데이터를 추가하려는 경우 데이터 입력을위한 두 번째 모듈을 시작합니다. 데이터를 입력하고 "확인"을 누르면 데이터가 기본 테이블에 추가됩니다. MainWin 모듈의 UpdateGUI 함수를 호출하기 위해이 모듈을 닫고 싶습니다. 어떻게 작성했는지 기억이 나지 않지만 두 번째 모듈이 모달 창일 때 작동했습니다. 이제 두 번째 모듈을 대화 창으로 변경했으며 UpdateGUI에 대한 호출이 더 이상 작동하지 않습니다.
이 문제를 해결하기 위해 몇 가지를 시도했습니다.
첫 번째 오류는 UpdateGUI 함수가 두 번째 모듈에 알려지지 않았다는 것이지만 (돌아 보면 분명한 것처럼 보임) 이름을 전역 적으로 사용할 수있게 만들었을 때 두 번째 모듈에서 이름을 호출하면 MainWin 모듈에 대한 함수 내의 모든 참조가 또한 ..
두 번째로 시도한 것은 MainWin에 변수가 1로 설정되기를 기다리는 while 루프를 추가 한 다음 새로 고침을 호출하는 것입니다. 이것은 기술적으로 작동했지만 상당한 속도 저하를 일으켰습니다 ... 아마도 Wait () 함수를 사용했기 때문일 수 있습니다.
이러한 종류의 교차 모듈 함수 호출을 처리하는 것이 좋습니다.
감사합니다!</CODE></P></LINGO-BODY><LINGO-SUB id="lingo-sub-313041" slang="en-US" mode="NONE">Re : JMP 앱 모듈 및 네임 스페이스</LINGO-SUB><LINGO-BODY id="lingo-body-313041" slang="en-US" mode="NONE"><P>안녕하세요<A href="https://community.jmp.com/t5/user/viewprofilepage/user-id/20438" target="_blank"> 뿡뿡</A> ,</P>
<P>당신이하려는 일에 대한 해결책이 있다고 생각합니다.기본적으로 MainWin 인스턴스 네임 스페이스에 대한 참조를 애플리케이션 네임 스페이스까지 범위를 지정하려고합니다.이를 위해 MainWin 스크립트에 다음 줄을 추가했습니다.</P>
<PRE><CODE class=" language-jsl">Application:MainInstance = this module instance;
설명하기 위해 간단한 앱을 만들었습니다.MainWin은 숫자 만 표시합니다.UpdateWin을 사용하면 닫기를 누를 때 MainWin의 디스플레이를 업데이트하는 새 번호를 입력 할 수 있습니다.모든 모듈에서 업데이트 GUI 표현식을 사용할 수 있도록 애플리케이션 네임 스페이스 스크립트에서 어떻게 정의했는지 확인할 수 있습니다.
display_num = 0;
Update GUI = Expr(
Show(MainInstance:Text_Disp << Get Text);
MainInstance:Text_Disp << Set Text(char(display_num));
);
접근 방식은 원하는 작업을 일반화해야합니다.
뿡뿡 조사해 주셔서 감사합니다!
응용 프로그램 네임 스페이스에 참조를 추가하면 이전보다 훨씬 더 깔끔한 방식으로 UpdateWin에 함수에 액세스 할 수 있습니다. 감사합니다! 나는 이것을 미래의 상황에서 확실히 활용할 것입니다.
불행히도 UpdateWin에서 함수를 호출하면 여전히 함수의 모든 변수 범위가 UpdateWin으로 변경됩니다. 제가 배운 것은 네임 스페이스를 정리해야한다는 것입니다. 아마 필요 이름 기본값은 Here (1); 거기에 던져졌습니다.
내가 원하는 것을 보낼 수있었습니다. << 클릭; MainWin에있는 새로 고침 버튼에 이것은 모든 것이 올바르게 범위를 유지하는지 확인하는 것 같습니다.
도와 주셔서 다시 한 번 감사드립니다.