XPLATFORM 101

- Grid > ToolTipText


툴팁은 그리드에만 있는 것은 아니고 왠만한 눈에 보이는 컴포넌트에는 대부분 제공되고 있습니다.

어떻게 보여질지는 tooltiptype 으로 지정하게 되고

어떤 것을 보여질지는 tooltiptext 로 지정하게 됩니다.


타입은 hover와 inplace 2가지 유형이 있습니다.

기본값이 hover 이고 inplace 는 컴포넌트 왼쪽 상단에 보여지는 형식입니다.


툴팁의 스타일은 CSS에서 조정할 수 있고

Tooltip 컴포넌트를 가지고 원하는 형식으로 재정의할 수도 있습니다.



* 타입이 inplace 일 경우에는 컴포넌트 밖에 나갔다 와야 다시 툴팁을 표현하는 것이 독특하네요.


* 윈도우에서 이야기하는 in-plcae 툴팁과는 또 다른 개념입니다.

http://msdn.microsoft.com/en-us/library/hh298402(v=vs.85).aspx 

inplace 는 어떤 경우에 쓰는지 좀 난감하네요. ^^

http://cafe.naver.com/xplatform101/177 

XPLATFORM 101

- Grid > Copy & Paste 3


음. 이번 예제는 Copy & Paste 기능보다는 셀 고정 기능이 주 대상이네요.


셀 고정 기능을 추가하기 위해서 각 셀(여기서는 헤더만) 클릭시 컨텍스트 메뉴(팝업메뉴)를 제공합니다.

function Grid02_onrbuttondown(obj:Grid, e:GridMouseEventInfo)

{

clickRow  = e.row;

clickCell = e.cell;

if(clickRow < 0 && clickCell > -1) {

popup_GridHead.trackPopup(e.screenX+5,e.screenY+5,"right bottom");

}

}

해당하는 셀의 위치를 찾아서 팝업 메뉴를 올려줍니다.

단 해당 위치가 헤더인지 아닌지 구분해서 헤더인 경우에만 처리하게 됩니다.

이벤트에서 헤더 여부를 판단할 수 없어 셀의 위치로 판단하게 되네요. 


팝업메뉴에서 틀고정/해제/기본을 선택하면 해당 명령이 실행됩니다.


http://cafe.naver.com/xplatform101/163 에서 틀고정에 대해서 간략하게 설명했는데

여기에서는 해당 기능을 동적으로 어떻게 처리하는지 설명해주고 있습니다.


컬럼일 경우에는 left나 head 로 band 속성을 정의해주면 되고

row 인 경우에는 fix 속성을 fixed 로 정의해주면 됩니다.


이번 예제에서는 컬럼만 해당하니 row는 신경쓸 필요없고.

하여간 동적으로 틀 고정 기능을 변경할 수 있다는 것이 중요한것 아닌가 싶습니다.


* 오른쪽 마우스 클릭시 팝업 메뉴를 띄우도록 했는데

쇼케이스에서 기본적으로 보여지는 애플리케이션 정보와 이벤트가 중복되어 

아래 이미지와 같이 보이게 됩니다.



기본적인 이벤트는 상위 컴포넌트로 타고 올라가기 때문입니다.

이럴 때에는 최초 발생하는 이벤트에서 return true 를 반환해주면 됩니다.

모든 이벤트는 기본 return 값이 false 이기 때문에

이벤트를 계속 상위 컴포넌트로 넘겨줍니다.

그래서 필요에 따라 해당 이벤트를 잘 조정해주면 됩니다.

http://cafe.naver.com/xplatform101/176 

XPLATFORM 101

- Grid > Copy & Paste 2


1번 예제와 다른 점은 1번은 동일한 테이블 구조를 가지고 있었는데 

2번 예제는 이동할 테이블이 아무런 구조가 없다는 겁니다.



앞에서는 그냥 셀의 위치만 설정해주고 편집모드로 들어가 값만 넣어주면 되었는데

이번에는 좀 복잡해졌네요.


내용을 가져오는 과정은 크게 다른부분이 없습니다.

오히려 아무것도 없는 상태에서 새로운 컬럼을 추가하고

데이터를 넣어주기때문에 깔끔하게 정리가 되네요.

function Grid01_onkeydown(obj:Grid, e:KeyEventInfo)

{


if(e.ctrlKey && e.keycode == 86)

{

var setGridData = system.getClipboard("CF_TEXT");


var arrLineSplitData = setGridData.split("\n");

/* 해더생성 */

for(i=0;i<arrLineSplitData.length;i++)

{

var arrTabSplitData = arrLineSplitData[i].split("\t");


for(j=0;j<arrTabSplitData.length;j++)

{

Dataset00.addColumn( "column"+j, "string", 256);

}

}

/* 데이타 setColumn */

for(i=0;i<arrLineSplitData.length;i++)

{

Dataset00.addRow();

var arrTabSplitData = arrLineSplitData[i].split("\t");


for(j=0;j<arrTabSplitData.length;j++)

{

Dataset00.setColumn(i, j, arrTabSplitData[j]);

}

}

}

Grid01.binddataset = "Dataset00";

Grid01.createFormat();

}

특이한 내용은 없어서 소스만 첨부합니다.

http://cafe.naver.com/xplatform101/175