한 가지 예외를 제외하고 모든 분개 닫기하나의 창을 제외한 모든 열린 저널을 닫을 수있는 스크립트 코드 줄을 찾고 있습니다.
올바른 이름 목록의 추출이 작동하지 않습니다. 그런 다음 열려 있어야하는 저널 이름과 일치시킬 수 없습니다. 아래 스크립트 ***를 참조하십시오.
CloseAllJournalsExcept = Function( {},
JournalName = "StaysOpen";
For( i = N Items( Window() ), i > 0, i--,
If( Window( i ) << GetName != JournalName, //***
Window( i ) << close window()
)
);
);
감사.
다시 : 하나의 예외로 모든 저널을 닫습니다
용도 findAll (저널) 저널 목록을 만들고 loc () 키퍼를 목록에서 제거하는 데 도움이됩니다. 그런 다음 창 닫기 목록에 명령. 아래에 잠긴 아이콘이 각 저널에 추가되어 JMP에 "이 저널이 잠겨 있습니다.이 저널에 추가하지 않고 다음 번에 다른 저널을 작성하십시오"라고 표시합니다. 그렇지 않으면 많은 저널을 만들기가 어렵습니다. 저널도 표시되어 있습니다 setDirty (0) 따라서 닫을 때 프롬프트가 없습니다. 당신이 열어 놓은 것을 원하지 않을 수도 있습니다.
myJrns = {};
For( i = 1, i <= 5, i += 1,
w = New Window( Char( i ), V List Box( Text Box( Char( i ) ) ) );
j = w << journalwindow;
w << closewindow;
j[Text Box( 1 )] << sibAppend( Icon Box( "Locked" ) ); // locked: just to make a new window each time
Insert Into( myJrns, j );
);
myJrns << setDirty( 0 ); // these were just created, make it easy to close them
// get a list of all open journals
alljournals = Find All( Journals );
// close all but the 2nd one just created...
// myJrns[...] is the list of journals just created
// myJrns[2] is the 2nd one that we decide to keep
// the allJournals list might be in a different order, so
// use loc() to find the matching index in allJournals
keeper = Loc( alljournals, myJrns[2] ); // returns a matrix
keeper = keeper[1]; // was a matrix of one element, now a scalar
// modify the allJournals list so we can close all of its items
Remove From( allJournals, keeper ); // remove the keeper from the list
allJournals << closewindow; // closes all the journals that remain in the list