MiPlatform 에서는 함수를 사용하여 팝업창의 폼에 접근을 하였지만
XPlatform 에서는 팝업창의 폼에 접근하기 위해서 popupframes 로 접근이 가능.
Ex)
application.popupframes['id'].form
'Tools > XPlatform' 카테고리의 다른 글
천단위마다 콤마(,) 출력 (0) | 2015.10.14 |
---|---|
autosizingtype 문제점 (0) | 2015.10.13 |
MiPlatform 에서는 함수를 사용하여 팝업창의 폼에 접근을 하였지만
XPlatform 에서는 팝업창의 폼에 접근하기 위해서 popupframes 로 접근이 가능.
Ex)
application.popupframes['id'].form
천단위마다 콤마(,) 출력 (0) | 2015.10.14 |
---|---|
autosizingtype 문제점 (0) | 2015.10.13 |
바인딩을 사용하여 masknumber 를 사용하여 자동으로 천단위로 콤마(,)를 출력 할 수 있지만.
하나의 필드에 숫자타입과 문자열을 혼합하여 사용하는 경우 숫자타입부분에 콤마를 생성해서 문자열로 리턴하는 스크립트이다.
utlf_numberFormat()
/*******************************************************************************
* 함수명 : utlf_numberFormat()
* 설명 : 숫자에 ','를 입력하여 반환
* argument : strNum : 숫자 또는 숫자형식 문자열( 예 : -1234567.89 , "123456789")
* sFind : 찾고자 하는 문자열( 예 : "bb" )
* nStart : 검색 시작위치 (옵션 : Default=0) ( 예 : 1 )
* return Type : (String)
* 변경된 문자열이나 숫자가 없으면 Null 리턴
* 변경된 문자열이나 숫자가 있으면 ","가 들어간 문자열 ( 예 : -1,234,567.89 )
* Test Ex)
* trace("문자열" + utlf_numberFormat("1234565789"));
* trace("문자열 소수점 포함" + utlf_numberFormat("12345657.89"));
* trace("문자열 - 포함" + utlf_numberFormat("-1234565789"));
* trace("문자열 - 포함 소수점 포함" + utlf_numberFormat("-12345657.89"));
*
* trace("숫자형" + utlf_numberFormat(1234565789));
* trace("숫자형 소수점 포함" + utlf_numberFormat(12345657.89));
* trace("숫자형 - 포함" + utlf_numberFormat(-1234565789));
* trace("숫자형 - 포함 소수점 포함" + utlf_numberFormat(-12345657.89));
*
* trace("한글,영문 포함" + utlf_numberFormat("한x-12345657.89"));
* trace("한글 포함" + utlf_numberFormat("한-12345657.89"));
* trace("영문 포함" + utlf_numberFormat("x-12345657.89"));
******************************************************************************/
function utlf_numberFormat(strNum)
{
var ppos, sDigit, nEnd, nStart=0, sRet="";
if( utlf_isNull(strNum) ) return "";
var reg = /(^[+-]?\d+)(\d{3})/; // 정규식
if( !reg.test(strNum) ) return strNum;
strNum = strNum.toString();
if( strNum.charAt(0) == "+" || strNum.charAt(0) == "-" ) {
sRet += strNum.charAt(0);
nStart = 1;
}
ppos = utlf_Pos(strNum, ".", nStart);
if( ppos < 0 ) {
nEnd = strNum.length;
}
else {
nEnd = ppos;
}
sDigit = strNum.substr(nStart, nEnd - nStart);
for( pos = 0 ; pos < sDigit.length ; pos ++ ) {
if( pos != 0 && (sDigit.length-pos)%3 == 0 )
sRet += ",";
sRet += sDigit.charAt(pos);
}
sRet += strNum.substr(nEnd);
return sRet;
}
utlf_Pos()
/*******************************************************************************
* 함수명 : utlf_Pos()
* 설명 : 문자열의 위치를 대소문자 구별하여 찾는다
* argument : sOrg : 원래 문자열( 예 : "aaBBbbcc" )
* sFind : 찾고자 하는 문자열( 예 : "bb" )
* nStart : 검색 시작위치 (옵션 : Default=0) ( 예 : 1 )
* return Type : (Number)
* 찾고자 하는 문자열의 시작위치가 없으면 -1 리턴
* 찾고자 하는 문자열의 시작위치 ( 예 : 4 )
******************************************************************************/
function utlf_Pos(sOrg, sFind, nStart)
{
if( utlf_isNull(sOrg) || utlf_isNull(sFind) ) return -1;
if( utlf_isNull(nStart) ) nStart = 0;
return sOrg.indexOf(sFind, nStart);
}
GetFormFromHandle (0) | 2015.11.06 |
---|---|
autosizingtype 문제점 (0) | 2015.10.13 |
그리드의 컬럼의 하나의 데이터가 여러행일 경우 autosizingtype : row 로 설정 해주면 해당하는 row만큼 그리드의 row의 height를 자동으로 맞춰준다.
문제는 이 그리드가 입력이 가능한 상태일 때 값을 변경하고 엔터키를 입력하여도 다음 컬럼으로 포커스가 이동하지 않는 현상이 있다.(버그인지 확인안됨)
이런 경우 엔터키로 다음 컬럼으로 포커스를 이동해주기 위해서는 다음과 같이 기능 구현을 해주어야 한다.
Grid Event ( onenterdown )
function grd_onenterdown( obj:Grid, e:GridEditEventInfo ) {
// 첫번째 입력 셀의 col 의 Number
var firstCol = 0;
// 마지막 입력 셀의 col 의 Number
var lastCol = 10;
// 현재 선택된 row의 Position 위치
var nCurrow = ds.rowposition;
// Cell 이동 결과 값 (boolean)
var res = false;
// 현재 col의 값이 마지막 입력 셀이면,
if ( e.col == lastCol ) {
// row의 위치를 하나 증가 시킴.
ds.rowposition = nCurrow + 1;
// 첫번째 입력 셀로 포커스 이동.
obj.setCellPos(firstCol);
}
// 현재 col의 값이 마지막 입력 셀이 아니면, (엔터입력으로 두칸씩 이동하는 경우 아래 else 를 제외)
else {
// 현재 위치에서 다음 위치의 셀로 이동 시킴. (이동이 성공하면 true, 실패하거나 이동할 셀이 없으면 false)
res = obj.moveToNextCell();
}
}
GetFormFromHandle (0) | 2015.11.06 |
---|---|
천단위마다 콤마(,) 출력 (0) | 2015.10.14 |