정확한 상태로 새 window()를 다시 만듭니다.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />x개의 탭과 차트(기타 항목)가 포함된 동적 새 창()을 만들고 있습니다.창을 정확하게 다시 생성하는 Eval(dt << Get Script) 같은 것이 있습니까?모든 버튼 기능을 그대로 유지하고 내가 어디에 있는지 효과적으로 알 수 있습니다.
지금 당장 그렇게 하면 eval(nw<
편집* 명확히 하기 위해.창 안에 무엇이 있는지 정확히 알지 못한 채 창을 다시 만들려고 합니다. 이것은 내가 말하는 것을 보여주기 위해 내가 생각해낸 예입니다.
이름의 기본값은 여기입니다. ( 14 );
CWD = 파일 경로 변환 ( "./" );
새창 ( "시험" ,
Hlistbox (
TB = 탭박스 (
"탭1" ,
패널박스 ( "탭 1" ,
파운드 = 리스트 박스 ( 파일인디렉토리 ( "$SAMPLE_DATA" )),
버튼박스 ( "열려 있는" ,
파일 = (파운드 << 선택받기 )[ 1 ];
dt = 열려 있는 ( "$SAMPLE_DATA\" ||파일)
)
),
)
),
Hlistbox (
버튼박스 ( "뒤쪽에" , 결핵<< 선택 항목 설정 ((TB << 선택받기 )- 1 )),
버튼박스 ( "다음" ,
새탭 = 평가 (other_boxes[(tb<< 선택받기 )]);
TB<< 추가 ( "탭" , 새 탭);
TB<< 선택 항목 설정 ((TB<< 선택받기 )+ 1 )
)
)
);
other_boxes = {
패널박스 ( "공백, 왜냐면... 이유가 있나요?" ),
패널박스 ( "열 이름" ,
콜리스트박스 (dt, 모두)
)
};
일반적인 합의는 '아니요'인 것 같습니다. 그래서 나는 그것을 답변으로 표시하겠습니다.
Re: 정확하게 정확한 상태로 새 window()를 다시 만듭니다.감사해요.즐기다.
Re: 정확하게 정확한 상태로 새 window()를 다시 만듭니다.죄송해요. 제가 우스꽝스럽게 말했어요.나는 당신이 비디오 게임을 만드는 것이 아니라는 것을 알고 있었습니다.
다음으로, 내 예는 방법론을 보여주며 독립형입니다.나는 당신을 위해 마법의 버튼을 만들지 않았습니다.방법론만 훔칠 수는 없습니다.당신이 내 코드를 당신의 코드에 집어넣고 그것이 작동할 것이라고 기대할 수 있다고 생각했다는 것이 나를 웃게 만듭니다.하지만 대답하자면, 오른쪽 창은 절대 바뀌지 않으며, 코드가 매번 정확히 그 창을 복제하는 것처럼 보입니다.위에서 아래로 비교해야합니다.
나는 이 포럼의 사람들을 돕기 위해 돈을 받지 못했고 인내심이 부족합니다.돌아가서 실제로 코드를 읽고 그것이 무엇을 하는지 이해하는 것이 좋습니다.최선을 다하길 바랍니다.
Re: 정확하게 정확한 상태로 새 window()를 다시 만듭니다.감사합니다. 유용하지만 선택한 값만 가져옵니다.나는 창 자체의 복제를 더 찾고 있습니다.
Re: 정확하게 정확한 상태로 새 window()를 다시 만듭니다.아니요, 비디오 게임을 만드는 것이 아닙니다.그러므로 유사라는 단어가 사용됩니다. 예는 다음과 같습니다.
이름의 기본값은 여기입니다. ( 14 );
CWD = 파일 경로 변환 ( "./" );
새창 ( "시험" ,
Hlistbox (
TB = 탭박스 (
"탭1" ,
패널박스 ( "탭 1" ,
파운드 = 리스트 박스 ( 파일인디렉토리 ( "$SAMPLE_DATA" )),
버튼박스 ( "열려 있는" ,
파일 = (파운드 << 선택받기 )[ 1 ];
dt = 열려 있는 ( "$SAMPLE_DATA\" ||파일)
)
),
),
버튼박스 ( "재창조" ,
탭카운터 = 1 ;
텍스트 목록 = { "" };
포함하다 (cwd|| "/recreateWindow2.jsl" )
)
),
Hlistbox (
버튼박스 ( "뒤쪽에" , 결핵<< 선택 항목 설정 ((TB << 선택받기 )- 1 )),
버튼박스 ( "다음" ,
새탭 = 평가 (other_boxes[(tb<< 선택받기 )]);
TB<< 추가 ( "탭" , 새 탭);
TB<< 선택 항목 설정 ((TB<< 선택받기 )+ 1 )
)
)
);
other_boxes = {
패널박스 ( "공백, 왜냐면... 이유가 있나요?" ),
패널박스 ( "열 이름" ,
콜리스트박스 (dt, 모두)
)
};
이제 이것을 실행하면 재생성 키를 눌렀을 때 얻은 결과 옆에 실행하면 이와 같은 결과가 나타납니다.

다음은 데이터 테이블을 선택하고 연 후 다음을 누르는 것입니다.

여기서 다시 다음을 누르면 됩니다.

이제 왼쪽 이미지와 오른쪽 이미지의 차이점을 표시해 보겠습니다.내가 이것이 효과가 없다고 말하는 것은 내가 그것을 시도했기 때문입니다.내가 당신이 작업이라고 부르는 것이나 스크립트를 사용하는 방법을 오해하지 않는 한.하지만 내 기대는 오른쪽이 왼쪽과 똑같아야 한다는 것입니다(적절한 데이터 테이블을 열었다고 가정).뿐만 아니라 모든 탭의 모든 버튼도 작동해야 합니다.
Re: 정확하게 정확한 상태로 새 window()를 다시 만듭니다.죄송합니다. 비디오 게임을 제작하고 계신지 몰랐습니다.따라서 먼저 게임 엔진을 구축하는 데 집중하는 것이 좋습니다. 그 후에는 저장 상태를 구축하는 것이 간단할 것입니다.
이 포럼을 읽고 창을 다시 만드는 더 간단한 방법을 원하지만 방법론을 이해하지 못하는 다른 사람들을 위해.견고성과 단순성을 보여주는 좀 더 복잡한 예를 첨부했습니다.
recreateWindow2.jsl 경로를 묻는 메시지를 표시하는 recreateWindow.jsl을 실행합니다.
이 파일을 실행하는 데 질문이 있으면 알려주십시오.
Re: 정확하게 정확한 상태로 새 window()를 다시 만듭니다.여러분이 오래된 Nintendo 게임에 에뮬레이터를 사용해 본 적이 있는지는 모르겠지만, 이는 이와 유사한 저장 상태라는 것을 사용합니다.
내가 원하는 것은 저장 상태입니다. 내가 현재 있는 레벨, 화면의 어디에 있는지 등을 정확하게 저장하는 것입니다. 게임을 다시 시작하라고 말하는 것은 제가 원하는 것이 아닙니다.
이 방법은 다른 문제를 해결합니다.이것이 어떻게 도움이 되는지 모르겠습니다.
동의하지 않는 것 같아요. 나는 모욕을 의미하지 않았습니다.처음부터 제대로 설명하지 못해 죄송합니다.
Re: 정확하게 정확한 상태로 새 window()를 다시 만듭니다.효과가 있는 것이 있으면 더 이상 추진하지 않겠습니다.하지만 위에서 말씀하신 내용을 명확하게 설명하겠습니다.
이것 방법 하다 탭 1의 사용자 제공 정보가 탭 4(또는 다른 탭)를 생성하기 위해 제공되기 때문에 귀하에게 도움이 됩니다.
스크립트를 다시 실행하면 사용자는 원래 있었던 탭 4로 돌아가기 위해 탭 1-3을 거쳐야 합니다.이는 사실이지만 적용되지 않습니다. 방법 , 이것은 단지 예제를 적용하는 것입니다.
"지금은 필요한 모든 기능을 가져오는 스크립트를 작성하고 이를 jsl에 저장해야 합니다(즉석에서 작성해야 한다는 점을 제외하면 말씀하신 내용과 매우 유사합니다)."
이미 생성된 경우 즉시 생성해야 하는 이유는 무엇입니까? 일명, 한 번만 빌드할 수 있는 스크립트가 있는데 왜 두 번 빌드하기 위해 두 번째 스크립트를 빌드합니까?
Re: 정확하게 정확한 상태로 새 window()를 다시 만듭니다.죄송합니다. 제 문제를 잘못 언급한 것 같습니다.탭 1의 사용자 제공 정보가 탭 4(또는 다른 탭)를 생성하기 위해 제공되기 때문에 이 방법은 나에게 적합하지 않습니다.스크립트를 다시 실행하면 사용자는 원래 있었던 탭 4로 돌아가기 위해 탭 1-3을 거쳐야 합니다.그리고 탭은 지정되지 않으며 무엇이든 될 수 있습니다.지금은 필요한 모든 기능을 가져오는 스크립트를 작성하고 이를 jsl에 저장해야 합니다(즉석에서 작성해야 한다는 점을 제외하면 말씀하신 내용과 매우 유사합니다). 단지 약간 난독화되는 것뿐입니다.더 좋은 방법이 없으면 처리하겠습니다.감사합니다.
Re: 정확하게 정확한 상태로 새 window()를 다시 만듭니다.선택된 탭과 텍스트 편집 상자, 숫자 편집 상자, 콤보 상자 및 목록 상자의 값을 캡처하고 창이 닫힐 때 전역 2차원 배열에 저장하는 스크립트를 작성했습니다. 창이 열리면 해당 값은 창이 닫힐 때 캡처된 값으로 설정됩니다.
기능을 보여주기 위해 스크립트에 예제 창을 포함시켰지만 getValues 및 setValues 함수는 상태를 캡처하고 스크립트가 다시 실행될 때 상태를 재설정하는 데 사용됩니다.
제한사항:
1. 이 코드는 동적으로 생성된 디스플레이 상자를 고려하지 않습니다. 이를 설명하려면 코드를 조정해야 합니다.
2. 이 코드는 귀하의 플랫폼을 다시 실행하지 않습니다. 이를 위해 필요에 따라 코드를 조정할 수 있습니다.
3. JMP를 닫으면 상태가 손실됩니다. 그러나 전역 변수가 아닌 텍스트 파일에 배열을 저장할 수 있으며 JMP의 모든 인스턴스에서 값을 검색할 수 있습니다.
4. 이 스크립트에는 확인란(및 잊어버린 다른 표시 상자)을 구현하지 않았습니다.
스크립트가 첨부되어 있습니다.
스크립트에 대해 궁금한 점이 있으면 알려주세요.
Re: 정확하게 정확한 상태로 새 window()를 다시 만듭니다.무슨 말을 해야 할지 모르겠습니다.내 솔루션은 창 k를 정확하게 다시 생성합니다. 모든 버튼 기능은 완전히 그대로 유지되며 현재 어느 탭에 있는지, OP에서 요청하는 모든 항목을 알 수 있습니다.
게다가 Eval(nw<Re: 정확하게 정확한 상태로 새 window()를 다시 만듭니다.
스크립트를 사용하여 생성하고 있지만 사용자는 창의 모양(열 데이터 테이블 등)을 선택합니다.그리고 저장 상태를 누를 때 탭(2)에 있는 경우 탭(2)이 현재 선택되어 있고 모든 보고서와 테이블이 동일한 위치에 열려 있는 저장 상태로 다시 열 수 있기를 원합니다.지금은 모든 관련 함수를 문자열로 가져온 다음 eval(parse())하는 함수를 생성(생성하려고 시도 중)하고 있습니다.Eval(nw<Re: 정확하게 정확한 상태로 새 window()를 다시 만듭니다.
스크립트를 사용하여 동적 창을 생성했다고 가정합니다.이 경우 버튼을 눌러 스크립트를 다시 실행할 수 있습니다.
이름의 기본값은 여기입니다. ( 1 ) ;
dt = 열려 있는 ( "$SAMPLE_DATA/빅 클래스.jmp" ) ;
뉴 = 새창 ( "시험" , vlistbox ( "대본" ,
이변량 ( 와이 ( : 키 ) , 엑스 ( : 무게 ) ) ;
분포 (
지속적인 배포 (
열 ( : 키 ) ,
요약 통계 사용자 정의 ( 평균 ( 0 ) )
) ,
지속적인 배포 (
열 ( : 무게 ) ,
요약 통계 사용자 정의 ( 평균 ( 0 ) )
)
) ;
버튼 상자 ( "창 재생성" ,
포함하다 ( "경로\to\this\script\recreateWindow.jsl" ) ;
)
)
) ;
Re: 정확하게 정확한 상태로 새 window()를 다시 만듭니다.세션 스크립트가 내가 원하는 것이 아니라는 점에서 당신이 옳을 것입니다.내가 그렇게 하려고 하면 내가 열어 놓은 데이터 테이블만 열리게 됩니다.새 창()을 만들려고 시도하지도 않습니다.
또한 eval(nw< 뭐 그리고 이것이 왜 작동하지 않는지 이해가 가며, 모든 것이 어떻게 될지 모르면 모든 것을 다시 만들어야 하는 것보다 쉬운 해결책이 있기를 바랐을 뿐입니다.
조금 더 희망을 이어가겠습니다.
내가 요구하는 것이 무엇인지 명확히 하기 위해:
상자1 = 패널박스 ( "1" , 테브 = 텍스트 편집 상자 ( "이건 테스트야" ), 버튼박스 ( "인쇄" , 인쇄 (테브<< 문자 받기 )));
상자2 = 패널박스 ( "2" , 테브 = 텍스트 편집 상자 ( "이건 테스트야" ), 버튼박스 ( "인쇄" , 인쇄 ((테브<< 문자 받기 )|| "찰리" )));
상자3 = 패널박스 ( "삼" , 테브 = 텍스트 편집 상자 ( "이건 테스트야" ), 버튼박스 ( "인쇄" , 인쇄 ((테브<< 문자 받기 )|| "수지" )));
뉴 = 새창 ( "예" ,
TB = 탭박스 ()
);
물건 = 평가자 ({상자1, 상자3});
~을 위한 (나= 1 , 나는<= 항목 (물건), 난++,
TB<< 추가 ( 숯 (나), 물건 )
);
지금<< 스크립트 받기
/* 반환
V 목록 상자(
V 목록 상자(
탭 상자(
탭 페이지 상자(
제목( "1" ),
패널 상자( 텍스트 편집 상자( "테스트입니다" ), ButtonBox )
),
탭 페이지 상자(
제목( "2" ),
패널 상자( 텍스트 편집 상자( "테스트입니다" ), ButtonBox )
)
)
)
)
*/
창 제목이나 버튼 상자의 스크립트가 없습니다.또한 실행되지 않습니다.
Re: 정확히 정확한 상태로 새 window()를 다시 만듭니다.안타깝게도, " ㅏ 세션 스크립트 대부분의 기능을 포착할 것입니다."는 Vince가 원하는 것을 포착하지 못하는 것 같습니다.동적 탭 상자는 잘 처리되지 않습니다.위 스크립트의 수정된 버전에서 이를 실행한 다음 세션 스크립트를 저장하고 검사했습니다.탭 상자는 세션 스크립트로 전달되지 않습니다.
초기 스크립트
이름의 기본값은 여기에 있습니다. ( 1 ) ;
dt = 열려 있는 ( "$SAMPLE_DATA/큰 클래스.jmp" ) ;
새창 ( "시험" , 탭 상자 ( "탭 1" , vlb = V 목록 상자 () ) ) ;
만약에 ( 모드 ( 낮 ( 오늘 () ) , 2 ) == 0 ,
x1 = V 목록 상자 (
탭 상자 (
"이변량 우선" ,
비브 = 이변량 ( 와이 ( : 키 ) , 엑스 ( : 무게 ) ) ,
거리 = 분포 ( 명목분포 ( 열 ( : 나이 ) ) )
)
) ,
x1 = V 목록 상자 (
탭 상자 (
"유통이 우선" ,
거리 = 분포 ( 명목분포 ( 열 ( : 나이 ) ) ) ,
비브 = 이변량 ( 와이 ( : 키 ) , 엑스 ( : 무게 ) ) ;
)
)
) ;
vlb << 추가 ( x1 ) ;
세션 스크립트
열려 있는 ( "C:\Program Files\SAS\JMPPRO\12\Samples\Data\Big Class.jmp" , 창 경계 ( 275 , 484 , 1288 , 1141 ) ) ;
새창 ( "시험" ,
V 목록 상자 (
분포 ( 명목분포 ( 열 ( : 나이 ) ) ) ,
이변량 ( 와이 ( : 키 ) , 엑스 ( : 무게 ) )
)
) << 창 이동 ( 722 , 15 ) << 크기 창 ( 488 , 1025 ) << 창 아이콘 설정 ( "보고서파일" ) ;
Re: 정확히 정확한 상태로 새 window()를 다시 만듭니다.ㅏ 세션 스크립트 Jim의 예와 같은 복합 보고서를 포함하여 사용자 정의 보고서 및 대화형 변경 사항의 대부분의 기능을 포착합니다. 그러나 사용자가 신경 쓰지 않을 수도 있는 다른 창과 테이블을 다시 만들기 위한 코드도 절약됩니다.
언제든지 세션 스크립트를 저장할 수 있습니다. 파일 메뉴.
JMP를 종료할 때 항상 세션 스크립트를 저장하도록 기본 설정에서 설정할 수도 있습니다.
Re: 정확히 정확한 상태로 새 window()를 다시 만듭니다.JMP는 개별 플랫폼을 다시 생성하는 스크립트를 아주 훌륭하게 생성할 수 있지만, 해당 플랫폼으로 구성된 사용자 생성 디스플레이 창에 해당 스크립트를 전달하지는 않습니다.
아래 스크립트는 JMP가 사용자 정의 표시 창에서 사용 가능한 스크립트를 생성하지 않음을 보여주는 매우 간단한 예입니다.
이름의 기본값은 여기입니다. ( 1 ) ;
dt = 열려 있는 ( "$SAMPLE_DATA/빅 클래스.jmp" ) ;
뉴 = 새창 ( "시험" , 탭 상자 ( "대본" ,
이변량 ( 와이 ( : 키 ) , 엑스 ( : 무게 ) ) ;
분포 (
지속적인 배포 (
열 ( : 키 ) ,
요약 통계 사용자 정의 ( 평균 ( 0 ) )
) ,
지속적인 배포 (
열 ( : 무게 ) ,
요약 통계 사용자 정의 ( 평균 ( 0 ) )
)
) ;
)
) ;
rr = 뉴 << 스크립트 받기 ;
보여주다 ( rr ) ;
평가 ( rr ) ;