대화
대화는 두 사람 사이의 대화입니다. 두 사람은 보통 다음과 같은 대화를 나눕니다.
그 두 사람은 대화 중에 다른 것에 치중할 수 있는 방식으로 정보를 교환하고 있습니다.
때때로 두 사람이 집중하는 대화 모드로 전환합니다.
이 모드에서 부조종사는 솔리테어 게임을 무시하고 조종사는 샌드위치를 무시합니다.
대화 상자는 사람이 컴퓨터와 대화를 나누는 창입니다. JMP에는 모덜리스와 모달이라는 두 가지 종류의 대화 상자가 있습니다. 찾기/바꾸기 대화 상자는 모덜리스입니다. 조종사가 경제에서 음식으로 전환하는 것처럼 쉽게 열려 있고 창 사이에서 초점을 전환합니다. JMP의 저장 대화 상자는 모달입니다. JMP가 파일 저장 모드로 들어가면 파일이 저장되거나 저장이 취소될 때까지 아무 것도 방해가 되지 않습니다. JSL은 사용자 정의 대화 상자(모덜리스 또는 모달)를 만들어 일부 정보를 제공하고 응답을 받을 수 있습니다.
답변 받기
모달 대화 상자의 수명:
항목 1, 트리 구축은 종종 새 창 기능에 대한 인수로 수행됩니다. 항목 2와 3은 새 창 기능입니다. 다음은 경고 상자 모달 대화 상자입니다.
rdata = New Window( title, <<MODAL></MODAL>
<
Just thought you should know...Just thought you should know...Just thought you should know...Just thought you should know...당신이 알아야 할 생각 ...
이 작은 창의 양방향 대화는 매우 간단합니다.
반환할 데이터가 없습니다. New Window 함수는 값을 반환합니다. 확인 버튼을 눌렀는지 알려줍니다.
{Button( 1 )}
또는 OS 제공 닫기 버튼으로 창을 닫았습니다.
{Button( -1 )}
하나의 요소가 있는 목록을 반환합니다. 다음을 사용하여 취소와 확인을 테스트할 수 있습니다. rdata["버튼"] -1 또는 1이 됩니다. 대화 상자에 CANCEL 버튼을 넣지 않았기 때문에 아마 신경쓰지 않을 것입니다.
오래 전에 JMP는 창의 내용(표시 상자)을 다음과 같은 내부 구조에 넣었습니다. 쓰레기 OS에 창을 닫으라고 요청하기 전에.쓰레기 많은 문제를 해결하고 때로는 의도하지 않은 부작용을 일으키기 위해 시간이 지남에 따라 진화했습니다. 한 가지 부작용은 모달 대화 상자의 표시 상자를 JSL에서 잠시 동안 사용할 수 있게 만드는 것이었습니다. 짧은 대화 상자가 닫힌 후 시간이 걸렸고 이것이 일부 사용자가 모달 대화 상자에서 답변을 검색한 방법이었습니다.
문제 쓰레기 채우는 양과 비울 때를 중심으로 돌아갑니다. JMP의 초기 버전에서는 다음 창이 표시되거나 약간의 변형이 있을 때 휴지통이 비워졌습니다. 휴지통을 비우면 내용이 사라지고 모달 대화 상자 변수도 사라집니다. 대부분의 시간 동안 대부분 작동했지만 다양한 문제를 해결하기 위해 계속 진화했습니다. 결국 @hecht_jmp 최첨단 솔루션을 JMP에 도입하여 휴지통 문제를 해결했습니다. 하지만 모달 대화 상자에서 답변을 다시 얻으려면 좀 더 많은 계획이 필요했습니다.
올바른 방법으로 답변 받기
더 많은 데이터를 반환하려면 다음을 사용하여 요청해야 합니다. <<결과 반환 :
rdata = New Window( "modal dialog test", <<MODAL></MODAL>
It said "Enter your name" before I typed over it.It said "Enter your name" before I typed over it.It said "Enter your name" before I typed over it.It said "Enter your name" before I typed over it.입력하기 전에 "이름을 입력하세요"라고 표시되었습니다.
{대답 = "크레이지", 버튼( 1 )}
당신이 사용할 수있는 rdata["대답"] 후 새창() 변수의 텍스트 상자에서 값을 가져오기 위해 반환 답변 . (취소 테스트를 먼저 하세요.)
목록은 연관 배열과 같은가요?
위의 모든 예는 목록을 반환합니다. 목록의 항목은 모두 간단한 대입문 또는 일종의 함수 호출처럼 보입니다. JMP에서 거의 사용되지 않고 잘 이해되지 않는 기능은 일반적인 숫자 색인이 아니라 해당 이름을 사용하여 목록을 첨자화하는 것입니다.
result = New Window( "Tell us about yourself", <<MODAL></MODAL>
Bob is about to press OKBob is about to press OKBob is about to press OKBob is about to press OKBob이 확인을 누르려고 합니다.
결과의 값은 다음과 같을 수 있습니다.
{이름 = "밥", 제목 = "프로그래머", 버튼( 1 )}
또는 Bob이 취소하는 경우
{이름 = "밥", 제목 = "프로그래머", 버튼( -1 )}
If( result["Button"] == 1, Write( Eval Insert( "\!n\[^result["name"]^ is a ^result["title"]^]\" ) ) , // else Write( "\!nthe dialog canceled." ) );
밥은 프로그래머
목록 하다 순차 조회로 수행되지만 연관 배열처럼 작동합니다. (연관 배열이 필요한 경우 하나 만드십시오. 이 목록 동작을 사용하지 마십시오... 대체품이 아닙니다.)
모달 대화 의미 체계
사용자가 모달 대화 상자에서 취소 버튼을 누르면 아무 것도 변경되지 않을 것으로 예상합니다. 모달 대화 상자의 모든 JSL은 나머지 프로그램의 변수를 변경하지 않고 대화 상자를 작동해야 합니다. 여기에 더 큰 예가 있습니다. 보고서 실행을 위한 모덜리스 대화 상자가 있습니다.
You can work in other windows while this window is open; it is a modeless dialog.You can work in other windows while this window is open; it is a modeless dialog.You can work in other windows while this window is open; it is a modeless dialog.You can work in other windows while this window is open; it is a modeless dialog.이 창이 열려 있는 동안 다른 창에서 작업할 수 있습니다. 모덜리스 대화 상자입니다.
보고서 만들기 버튼을 누를 때마다 다른 창이 열립니다.
A report showing the values from the modeless launcher.A report showing the values from the modeless launcher.A report showing the values from the modeless launcher.A report showing the values from the modeless launcher.모덜리스 실행기의 값을 보여주는 보고서입니다.
유효성 검사 루틴이 포함된 모달 대화 상자를 여는 매개 변수 설정 버튼도 있습니다. 이 취소 버튼은 위 런처에 변경 사항을 적용하지 않습니다.
The validation routine opens yet another modal dialog.The validation routine opens yet another modal dialog.The validation routine opens yet another modal dialog.The validation routine opens yet another modal dialog.유효성 검사 루틴은 또 다른 모달 대화 상자를 엽니다.
// here's a simple modal window. It provides a warning, but no data is returned. alert = Function( {title, text, icon = "error"}, New Window( title, <<MODAL></MODAL>
모달 대화 상자란 무엇이며 더 나은 대화 상자를 작성하는 방법입니다.