<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />생각보다 쉽지 않습니다. 어떤 이유로 인해 "<< Set Window Icon ()"명령을 생성 프로세스 중에 보낼 수 없습니다. 일반적으로 명령은 바로 창에 보낼 수 있기 때문에 괜찮습니다. 이렇게 :
북아 일 = 새창 ( "테스트" , << 모달 , 텍스트 상자 ( "테스트" )) ;
북아 일 << 창 아이콘 설정 ( "$ SAMPLE_IMAGES / pi.gif" ) ;
그러나 모달 창과 관련하여 몇 가지 흥미로운 문제가 발생합니다. 첫째, 모달 창은 사용자가 모달 창과 상호 작용할 때까지 더 이상의 스크립트가 실행되는 것을 차단합니다. 이는 일반적으로 창 아이콘 설정 명령을 보낼 수있는 시점까지 창은 이미 닫혀 있음을 의미합니다. 이 문제를 해결하기 위해 앞으로 0 초 동안 send 명령을 예약 할 수 있습니다. JMP가 가능한 한 빨리 명령을 전송하도록 알려주는 것인가? 모달 윈도우는 스크립트가 계속되는 것을 멈추게 할 것이기 때문에, 윈도우가 나타난 직후입니다. 우리의 의도에 완벽합니다.
위의 내용에서 OK를 훌륭하다고 생각할 수 있습니다. 일정을 잡을 것이고 코드를 창 만들기 위에 올려 놓으면 좋습니다.
시간표 ( 0 , 북아 일 << 창 아이콘 설정 ( "$ SAMPLE_IMAGES / pi.gif" )) ;
북아 일 = 새창 ( "테스트" , << 모달 , 텍스트 상자 ( "테스트" )) ;
잘못된!
이 문제는 모달 윈도우가 응답 할 때까지 nw 객체가 생성되지 않는다는 것을 참조하십시오. 다른 창과 달리 nw 객체는 표시 창에 대한 참조를 포함하지 않고 모달 창에 의해 전송 된 데이터 객체를 저장하도록 설정됩니다. 대부분의 경우 "Ok"또는 "Cancel"중 어느 것을 눌렀는 지에 따라 {Button = -1} 또는 {Button = 1}이됩니다. 따라서이 문제를 해결하려면 명령을 보낼 수있는 표시 객체가 필요합니다. 텍스트 상자가 작동하지만 목록 상자에 포장하여 보내려면 선택했습니다.
따라서 우리는 (약간의 리팩토링 이후)
iconFunction = 기능 ({ 상자 , 통로 } ,
상자 << 창 아이콘 설정 ( 통로 ) ;
) ;
에스 = 시간표 ( 0 , iconFunction ( vlb , "$ SAMPLE_IMAGES / pi.gif" )) ;
보고서 ( 에스 ) << 창 표시 ( 0 ) ;
북아 일 = 새창 ( "테스트" , << 모달 , vlb = vlistbox ( 텍스트 상자 ( "테스트" )))) ;
이것은 JSL의 재미있는 변칙이었습니다. JSL의 가장 좋아하는 단점은 무엇입니까?