스크립트 된 "위젯"을 클래스로 변환 할 수 있습니까?이 토론과 동봉 된 스크립트는 다음과 같은 방법으로 시작되었습니다.
나는 빈스의 TextEditBox 자동 완성기는 내장형의 "wish"와 비슷하기 때문에 리스트 박스 필터. 두 항목 모두에 대해 비슷한 기능을 수행하는 특정 UI (대화 상자 / 창)를 프로그래밍했습니다. 그러나, 나는이 "위젯"을 자동으로 빌드하는 함수를 만들려고 결정했다. 그리고 성공하면, 수업 함수 대신 사용할 수 있습니다.
첨부 된 3 개의 스크립트가 있습니다.
- TEB_LB_Widget.jsl -이 스크립트는 지원 기능과이 위젯을 빌드하는 두 가지 주요 기능을 정의합니다. MakeLBFilter () 과 MakeTEBSelector () .
- TestMakeLBFilter.js l -이 스크립트는 위 스크립트 (경로의 경로를 해당 스크립트 위치로 변경해야 함)를 포함하고 두 개의 다른 목록 상자가있는 간단한 창을 작성한 다음 각각에 대한 목록 상자 필터를 작성합니다. 스크립트에는 데모 용 wait 문이 있습니다. 스크립트 맨 아래에 몇 가지 테스트 케이스가 있습니다. (코드 스 니펫 및 아래에 표시된 디스플레이.)
- TestTEBSelector.jsl - 이것은 스크립트 2와 유사합니다. 가려진 경로를 확인하십시오. 이 위젯은 덜 개발되었습니다.
두 위젯 모두 추가 기능을 추가 할 수 있었지만 각 위젯과 기능을 사용자 정의 클래스의 인스턴스로 만들 수 있는지 여부를 결정하기로 결정했습니다.
나는 토론을 읽었다. 객체 지향 JSL 예제 2011 년 8 월 18 일 구문은 여전히 나와 함께 "클릭"하지 않았으며 방향을 찾고 있습니다.
- JMP 클래스를 사용하여 객체 위젯을 정의 할 수 있습니까? 이 경우 클래스에는 기존 객체 (컨테이너 일 가능성이 있음)와 새 객체를 추가하는 함수가 필요하며 각각의 경우에는 목록이 필요합니다.
- 그렇다면 클래스가 더 좋은 방법입니다. 누군가가 간단한 예제 나 2016 링크에 포함 된 문서 이외의 링크를 가지고 있습니다. 감사하겠습니다. 그런 다음 전환을 추적합니다. 저는 2016 년 토론에서 이름을 추가 할 예정입니다. @ 드루 포 글 리아 , @Phil_Brown , @msharp
@vince_faller , 나는 당신의 소망 목록에 동의한다, 붙박이는 최상 일 것입니다. 그러나 새로운 예제를 프로토 타이핑하는 방법을 아는 것이 좋을 것입니다.
Names Default to Here(1);
Include("C:\temp\TEB_LB_Widget.jsl");
myList1 = {"cat", "dog", "head", "cow", "heel", "help"};
dt = Open("$sample_data/semiconductor capability.jmp",Invisible);
myList2 = dt << get column names("Continuous", "string");
nw = New Window( "Example ListBox Filter",
HListBox(
VlistBox(
lb1 = ListBox(mylist1,
<<SET size=""></SET>
텍스트 없음 - 전체 목록 표시됨
왼쪽에는 "포함"이 사용되고 오른쪽에는 "다음으로 시작"이 사용됩니다.
제목 : Re : 스크립트 "위젯"을 클래스로 변환 할 수 있습니까?업데이트 : 구문이 마침내 의미가 있으며 클래스 개체의 인스턴스를 만들었습니다. 그래서 나는 내 질문에 대답했다. 대답은 '예'입니다.
함수와 메소드가 스크립팅되면 LBFilter 및 TEBSelector라는 클래스를 정의하고 사용하기 위해이 게시물을 업데이트 할 것입니다. JMP14 클래스 구문을 사용하기가 더 쉽다.
제목 : Re : 스크립트 "위젯"을 클래스로 변환 할 수 있습니까?2016 년 대화가 시작된 이래로 JMP 14는 OOP를 클래스와 함께 JSL에 도입했습니다. 이전에는 JSL에서 OOP를 구현하지 않는 것이 좋았으며 이전 게시물에서 제안 된 방법은 매우 해킹되었습니다. 제 의견으로는, 제작 수준 코드를 만드는 과정에서 연습보다는 할 수 있는지를 결정하는 데 더 많은 훈련을 받았습니다. JMP 14가 클래스와 OOP를 지원한다는 점에서 공식적으로 그 의견을 철회하고 싶습니다. 내장 된 메소드를 사용하는 것이 더 낫습니다. 이미 알아 낸 것 같습니다. OOP는 사용자 정의 위젯을 만드는 훌륭한 방법입니다. 나는 당신의 최종 제품을 보는 것에 관심이 있습니다.
제목 : Re : 스크립트 "위젯"을 클래스로 변환 할 수 있습니까?@gzmorgan,
당신이 그것을 끝내고 나면, 당신이 나를 업데이트하고 나를 업데이트 할 수 있는지. 나는 그것을 매우 감사 할 것입니다. 나는 확실히 JSL 수업을 듣기를 좋아할 것이고, 나는 당신의 학습 연습에서 배울 수 있기를 원할 것입니다.
제목 : Re : 스크립트 "위젯"을 클래스로 변환 할 수 있습니까?그래서 저는 여전히 수업에 약간의 연구가 필요하다고 생각합니다. 서브 클래 싱 / 상속은 다소 불안해 보입니다. 클래스에는 네이티브 자체 참조가 없으므로 표시 상자를 사용하는 메서드는 해당 클래스의 함수에서 클래스 특성을 사용할 수 없습니다. 그러나 그 것들에 대한 해결 방법이 있습니다. @Justin_Chilton 보여 주었다 이리 . 이를 바탕으로 Autocompleter를 만들었습니다.
그러나 나는 또한 그것을 completer_box.jsl을 사용하여 기능적으로 만들었습니다. 그리고에 따르면 이 특수 네임 스페이스는 네임 스페이스 호출을 허용하므로 컨텍스트 상자에서도 만들었습니다. 개인적으로 지금 당장, 나는 이것을 위해 가장 좋은 컨텍스트 박스 방법을 좋아한다.
제목 : Re : 스크립트 "위젯"을 클래스로 변환 할 수 있습니까? @vince_faller JMP 클래스를 사용하는 AutoCompleter 스크립트는 매우 유익했습니다. 약 1 시간 전까지 대본 작업을 할 시간이 없었고 즉시 벽을 쳤습니다. 나는 당신의 제안 된 링크를 참조하고 당신의 반응을보기로 결정했다. 내 구석에서 나를 빼내기위한 핵심 코드는 self와 obj = Expr (self)를 사용하는 것입니다.
<<SET text="" changed=""></SET>
<< Set Text Changed ()에 대한 소유자 클래스를 참조하는 방법을 잘 모르겠습니다. 아주 좋아!
그리고 나는 이것을 발견했다. JMP 스크립팅 가이드 JMP 클래스 객체와 관련하여 매우 혼란 스럽습니다 (293 페이지).
노트:
• 모든 메서드, 멤버 변수 및 함수는 public입니다.
• 클래스 내에 정의 된 함수는 메소드 내에서 변수 또는 메소드에 액세스 할 수 없습니다.
수업.
나는 네가 모범을 보지 않고 오랫동안 붙어 있었을 것이라고 생각한다. 이것은 5 가지 명성의 가치가 있습니다!