페이지

2016년 3월 23일 수요일

pvdevelop 프로젝트 -UI 편집 방법 - Table 위젯

테이블 관련 함수들을 한번 확인해 보았습니다.

  • pvSetTableText(p,id,x,y,"text");
  • pvSetTaleButton(p,id, x,y,"text");
  • pvSetTableCheckBox(p, id, x, y, state,"text");
  • pvsetTableComboBox(p,id,x,y,editable,"choice1, choce2");
  • pvSetTableLabel(p,id,x,y,"text");
  • pvTablePrintf(p,id,x,y,"format");
  • pvSetColumnWidth(p,id,column,width);
  • /pvSetWordWrap(p,id,wrap);
  • /pvSetTablePixmap(p,id,x,y,"file.bmp");
  • /pvEnsureCellVisible(p,id,row,col);
  • /pvTableSetEnabled(p,id,enabled);
  • /pvTableSetHeaderResizeEnabled(p,id,horizontal,enabled,section);
  • pvSetNumRows(p, id, num);
  • pvSetNumCols(p, id, num);
  • pvInsertRows(p,id, row, count);
  • pvInsertColumns(p,id,col, count);
  • pvRemoveRow(p, id, row);
  • pvRemoveColumn(p, id, col);
  • pvSetTableTextAlignment(p,id,x,y,alignment);
  • /pvSave(p,id);
  • /pvMysqldump(p, id, command);
  • /pvCSVdump(p, id, filename);
  • /pvCSV(p, id, command);

많다... 하나씩 확인해 보겠습니다. (/ 가 붙은 함수는 확인하지 않았습니다.)

테스트 하기 위해 그림1과 같이 하나 만들었습니다.

그림 1.Table 실행화면
테이블 명을 table_01으로 하였습니다.


테이블 위젯만 추가하여 GUI 작성 후, pvbrowser에서실행한 화면입니다.
기본적으로 2x2 가 테이블이 만들어 지는 군요.

그림2. 테이블 기본팝업 창

테이블 영역에서 오른쪽 마우스버튼을 눌러을 때 기본적으로 나오는 팝업 메뉴입니다.
  • copy
    clipboard로 테이블 내용 복사
  • copy including title
    clipboard로 테이블 내용 복사, copy와 동일 차이는 title 포함
  • save as CSV file
    TAB 으로 구분,  다른 이름 저장 파일 창 열림
  • open table with "c:\path\to\oofice"
    외부프로그램을 이용하여 csv 파일을 볼 경우
    pvbrowser->option 에서 view.csv="c:\path\to\oofice" 항목을 변경하면 됩니다.
    notepad++ 같은 외부 프로그램 경로를 지정하십시오.

그림 3. 테이블 이벤트

자, 그럼 테이블을 누르면 어떤 이벤트가 나올까요.(가장 관심이 가는 항목이죠.)
테이블의 1,1 셀을 눌렀을 때 나오는 이벤트 입니다. TABLE_CLICKED 이벤트가발생하며, 선택된 셀의 위치가 나타나는 군요.


그림 4. 테이블 셀 내용입력 화면

테이블의 2, 1 셀에 "table" 텍스트를 입력하였습니다.

그림 5. 테이블 셀 입력 이벤트

셀에 텍스트를 입력하니, TABLE_TEXT_EVENT(1,0, "table") 이라는 이벤트가 발생하는 군요.
.
.
.
.
pvbrowser에서 column이나 Row를 추가할 경우가 있어 작성한 구문입니다.



Column, Row 부분을 눌렀을때 팝업창을 나타내는 구문입니다.
현재 선택된 column 이나 row를 제거하기 위해 선택된 column 이나 row를 기억합니다.



마스크의  DATA 구조체는 다음과 같이 정의되어 있습니다.




테이블의 현재 cel 위치, 테이블의 최대 col, row 확인을 위한 변수들입니다.

위에 있는 코드들을 입력한 후 실행한 화면입니다.

그림 6. 실행화면

두리 뭉실하게 TABLE EVENT 와 pvInsertColumns, pvInsertRows, pvRemoveColumn, pvRemoveRow 함수에 대해 알아 보았습니다. 자세한 사용범은 메뉴얼을 확인하시기 바랍니다.

자, 나는 처음 실해할 때 column을 8개 만들어야 겠다. 어떻게 할까요.

pvSetNumCols(), pvSetNumRows() 함수를 사용하면 됩니다.





그림 7.실행화면
column 8개 row 2개의 테이블이 만들어 졌습니다.

Column 폭



column의 폭을지정할 수 있읍니다.
column의 값이 -1 인 경우 셀의 가장자리 폭을 조정하는 군요.

Cell 라벨




x, y 로 지정한 셀에 입력한 text가 표시되며 마우스로 선택하여 셀의 내용을 변경할 수 없습니다.

그림 8. column 폭, 라벨 적용 화면

Text 입력



입력 예)
   pvSetTableText(p, table_01, 3, 1,"color(255,0,0)text");

   pvSetTableText(p, table_01, 4, 1,"color(0,255,0)");

그림 9.테이블 텍스 입력 예

셀에 문자를 집어넣을 뿐 아니라 색상까지 변경할 수 있습니다.




pvSetTableText와 동일합니다. 숫자 변수를 셀에 집에 넣을 떄 요긴하게 쓰입니다.
예)
   pvTablePrintf(p, table_01, 5, 1, "color(0,0,255)%d", 5);


Cell 내용 정렬



Cell 에 텍스트가 있는 경우 적용됩니다. 셀에 내용이 없는 경우 적용되지 않는 군요, alignment도 한개씩만 적용됩니다.

이런식으로 사용합니다.
pvTablePrintf(p, table_01, 5, 0, "color %d", 5);
pvSetTableTextAlignment(p, table_01, 5, 0, AlignRight);

순서대로 하지 않으면 정렬되지 않습니다.

Cell 버튼 삽입



사용 예) 
   pvSetTableButton(p, table_01, 0,0, "0K");

이벤트)  TABLE_TEXT_EVENT(0,0, "OK")

Cell 체크박스 삽입



사용 예)
   pvSetTableCheckBox(p, table_01, 2, 0, 0, "SET01");

   pvSetTableCheckBox(p, table_01, 2, 1, 1, "SET02");

이벤트 )  TABLE_TEXT_EVENT(2,0,"1,SET01");
         TABLE_TEXT_EVENT(2,1,"0,SET02");


Cell 콤보박스 삽입



사용 예)
  pvSetTableComboBox(p, table_01, 6, 0, 0, "choice1, choice2, choice3");
  pvSetTableComboBox(p, table_01, 7, 0, 1, "choice1, choice2, choice3");

이벤트 )  TABLE_TEXT_EVENT(6,0," choice2")
          TABLE_TEXT_EVENT(7,0," choice3")

그림 10. 버튼, 체크박스, 콤보박스 사용예

그림 11. 콤보박스editable 차이

콤보 박스의 경우 5번째 인자를 1 (editable)로 할 경우 내용을 추가할 수 있습니다. 당연히 0은 추가 불가능입니다.

테이블을 사용할 때 필요한 것들은 거의 다 기술한 것 같군요.
좋은 코드 만들어 사용하시기 바랍니다.

댓글 없음:

댓글 쓰기