[엑스플랫폼] 쇼케이스 따라하기 (22) - copy & Paste (1)
- Grid > Copy & Paste 1
타이틀이 많이 익숙한거죠. 이른바 개발자들의 신공이라 불리는...
물론 예제에서 설명하는 것은 그런건 아니고..
그리드의 데이터를 엑셀처럼 복사해다가 붙여넣는 여러가지 방법을 제안하고 있습니다.
그런건 엑셀에서 다 되는건데 엑스플랫폼에서는 복잡하게 뭔가 해야되는건가 싶을 수도 있지만
엑셀에서도 연산식이 포함된 셀을 복사하는 경우에는 셀 데이터만 복사하도록 설정해야 하는 과정이 있습니다.
그리고 엑셀과 그리드는 용도가 다르니깐...^^
첫 번째 예제에서는 2개의 그리드가 배치되어 있고
양쪽의 그리드에서 데이터를 복사해서 다른쪽으로 옮기거나 같은 그리드내에서 계속 작업을 진행할 수 있습니다.
그리드에 설정된 이벤트는 onkeydown 이벤트만 사용합니다.
이때 keyEventInfo가 전달되는데 altkey, ctrlkey, shiftkey는 상수로 제공되고
나머지는 keycode로 제공됩니다.
keycode 값은 해당 운영체제의 코드가 전달된다고 합니다.
기본적인 코드값은 도움말 Appendix > Key 에서 참고할 수 있습니다.
예제에서는 복사(Ctrl+C)와 붙여넣기(Ctrl+V) 입력값에 대한 처리를 진행합니다.
var strGrdDsNm = obj.binddataset;
var v_clip = "";
var strSeperate = " ";
for (var i=obj.selectstartrow;i<=obj.selectendrow;i++) {
for (var j=obj.selectstartcol;j<=obj.selectendcol;j++) {
if (j < obj.selectendcol) {
v_clip += obj.getCellValue(i,j) + strSeperate;
} else {
v_clip += obj.getCellValue(i,j);
}
}
if (i < obj.selectendrow) {
v_clip += "\r\n";
}
}
v_clip += "\r\n";
system.clearClipboard();
system.setClipboard("CF_TEXT",v_clip);
복사하기에서는 선택된 셀의 값을 v_clip에 텍스트 형식으로 담아주고 해당값을 시스템 클립보드에 담아주고 있습니다.
시스템 클립보드에 담아주기 때문에 외부 메모장 등에도 붙여넣을 수 있습니다.
예제이기 때문에 간단한 구분자만으로 데이터를 분리해주었습니다.
붙여넣기 작업은 이와 반대로 이루어지겠죠.
해당 위치를 확인하고 클립보드에서 데이터를 가져와서 배열에 담은 다음에
데이터를 붙여넣습니다.
//Dataset setcolumn
for (var j=nGrdCellPos;j<nLoopCnt;j++) {
obj.setCellPos(j);
obj.showEditor(true);
obj.setEditText(arrText2[k]);
k++;
obj.showEditor(false);
}