제가 작업 중인 스크립트에는 기본값을 인수로 사용하는 날짜 상자를 생성하는 함수가 있습니다. 사용자가 날짜로 인식할 수 없는 값을 입력하면 텍스트를 해당 기본값으로 되돌립니다. 날짜 상자에 특정 키워드를 입력하면 특정 동작을 수행하는 기능을 추가하고 싶습니다. 예를 들어 사용자가 "어제"를 입력하면 날짜/시간이 전날의 시작으로 설정됩니다.
날짜가 적절하지 않아서 텍스트를 기본값으로 변환하기 전에 함수가 키워드를 확인하도록 하는 방법을 모르겠습니다. 이 작업을 수행하는 방법에 대한 조언이 있을까요?
(JMP 17을 사용하지만 이상적으로는 최신 버전에서도 작동할 것입니다)
timeBox = Function( {time},
Eval(
Substitute(
NameExpr( NumberEditBox(
time,
10, //width
<< SetFunction( Function( {self}, {},
If( IsMissing(self << get), self << Set(Eval(dummy)) );
) ),
<< Set Format( Format( "m/d/y h:m:s", 23, 0 ) );
) ),
Expr( dummy ),
time
)
);
);
timeEntryWindow = NewWindow( << Modal,
PanelBox( "Start Time", startTimeBox = timeBox( Today() - 12*60*60 ) )
);
숫자 입력란이므로 숫자만 입력할 수 있습니다. 아주 간단한 것부터 시작해서 다양한 방식으로 테스트해 보세요. (텍스트를 입력하면 값이 누락될 수 있습니다.)
Names Default To Here(1);
nw = new window("",
neb = Number Edit Box(.)
);
neb << Set Function(function({this},
show(this << get)
));
/*
neb << Set Number Changed(function({this, val},
show(this << get);
show(val);
));
*/
어제 값을 설정하기 위해 드롭다운/버튼을 만들 수도 있고, 텍스트 편집 상자를 사용하여 사용자 정의 달력 상자/숫자 편집 상자를 만들 수도 있습니다.