[출처] http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tutorial&no=62
1. 속성 수정
위 그림 처럼, VirtualTreeView는 처음 가져다 놓으면,
Column 0 -> TreeView 같은 형태이고,
Column 1 이후 -> ListView 같은 형태입니다.
그러므로,
첨부한 그림 같은 것이 아니라 List같은 형태를 원하시면,
Object Inspector 에서 원하는 속성을 수정하여야 합니다.
[List 같은 형태로 바꿀때]
* 한라인 전체 선택 : TreeOptions -> SelectionOptions -> toFullRowSelect : true
* Column 0 의 Child와 Parent 사이의 연결관계 표시하는 점선 없애기 :
TreeOptions -> PaintOptions -> toShowTreeLines : false
* Column 0 의 앞쪽 여백을 없애기 : Indent : 0
Indent는 Child와 부모사이의 들여쓰기 할때의 간격입니다.
이렇게 3가지 속성을 변경하면,
VTV가 List 형태처럼 보이게 됩니다.
이전강좌에서 위 3가지 속성을 수정한 실행 파일을 첨부하였습니다.
2. 이미지 출력하기
BCB에서 메뉴등에 이미지 출력하기 위해서는 ImageList를 사용하잔아요.
VTV도 마찬가지로 이미지 출력을 위해서는 ImageList를 사용하게 됩니다.
[Win32] 팔렛트에서 TImageList 콤포넌트를 폼에 올려 놓습니다.
폼에 올려 놓은 것은 TImageList를 더블클릭해서 첨부화일에 있는 bmp 파일을 등록해 줍니다.
각 이미지의 크기는 24x24 입니다. TImageList의 Widht 와 Height를 24로 변경해 주신후에
불러와야 합니다.
TVirtualStringTree의 속성에서 Images 속성에 방금전에 올리 ImageList의 이름을 설정합니다.
그럼 이제 이미지를 출력할 준비가 된것이구요.
VTV에 어떤 이미지를 출력할 것인지 알려 주는 메소드를 만들어 주서야 합니다.
Events 중에 OnGetImageIndex 란 메소드가 있는데요.
이것을 구현해 주면 됩니다.
위 예제는 무조건 ImageList의 index가 1번이 이미지를 출력하라는 것입니다. ImageList는 0부터 시작하므로 1은 두번째 이미지가 나오게 됩니다. 그런데 위 코드를 넣고 실행해 보시면 모든 Column에 동일한 이미지가 나오는 것을 보실 수 있습니다. 두번째 첨부한 그림이 그것입니다. 그럼 Column 0 에만 이미지가 나오고, 다른 컬럼에는 안 나오게 하려면 어떻게 할까요? 그것은 Column 파라미터를 이용하면 됩니다. 이렇게 바꾸었습니다. 그러면 Column 0 에만 이미지가 출력 됩니다. 실제 상황에서는 보통 이미지가 모두 동일하게 출력하지는 않지요. 각 라인의 정보에 따라서 이미지를 다르게 출력하는 것이 보통이지요. 그래서, 처음에 만들었던 구조체에 어떤 이미지를 출력할지를 결정하는 변수를 하나 추가 합니다.
1. 속성 수정
위 그림 처럼, VirtualTreeView는 처음 가져다 놓으면,
Column 0 -> TreeView 같은 형태이고,
Column 1 이후 -> ListView 같은 형태입니다.
그러므로,
첨부한 그림 같은 것이 아니라 List같은 형태를 원하시면,
Object Inspector 에서 원하는 속성을 수정하여야 합니다.
[List 같은 형태로 바꿀때]
* 한라인 전체 선택 : TreeOptions -> SelectionOptions -> toFullRowSelect : true
* Column 0 의 Child와 Parent 사이의 연결관계 표시하는 점선 없애기 :
TreeOptions -> PaintOptions -> toShowTreeLines : false
* Column 0 의 앞쪽 여백을 없애기 : Indent : 0
Indent는 Child와 부모사이의 들여쓰기 할때의 간격입니다.
이렇게 3가지 속성을 변경하면,
VTV가 List 형태처럼 보이게 됩니다.
이전강좌에서 위 3가지 속성을 수정한 실행 파일을 첨부하였습니다.
2. 이미지 출력하기
BCB에서 메뉴등에 이미지 출력하기 위해서는 ImageList를 사용하잔아요.
VTV도 마찬가지로 이미지 출력을 위해서는 ImageList를 사용하게 됩니다.
[Win32] 팔렛트에서 TImageList 콤포넌트를 폼에 올려 놓습니다.
폼에 올려 놓은 것은 TImageList를 더블클릭해서 첨부화일에 있는 bmp 파일을 등록해 줍니다.
각 이미지의 크기는 24x24 입니다. TImageList의 Widht 와 Height를 24로 변경해 주신후에
불러와야 합니다.
TVirtualStringTree의 속성에서 Images 속성에 방금전에 올리 ImageList의 이름을 설정합니다.
그럼 이제 이미지를 출력할 준비가 된것이구요.
VTV에 어떤 이미지를 출력할 것인지 알려 주는 메소드를 만들어 주서야 합니다.
Events 중에 OnGetImageIndex 란 메소드가 있는데요.
이것을 구현해 주면 됩니다.
위 예제는 무조건 ImageList의 index가 1번이 이미지를 출력하라는 것입니다. ImageList는 0부터 시작하므로 1은 두번째 이미지가 나오게 됩니다. 그런데 위 코드를 넣고 실행해 보시면 모든 Column에 동일한 이미지가 나오는 것을 보실 수 있습니다. 두번째 첨부한 그림이 그것입니다. 그럼 Column 0 에만 이미지가 나오고, 다른 컬럼에는 안 나오게 하려면 어떻게 할까요? 그것은 Column 파라미터를 이용하면 됩니다. 이렇게 바꾸었습니다. 그러면 Column 0 에만 이미지가 출력 됩니다. 실제 상황에서는 보통 이미지가 모두 동일하게 출력하지는 않지요. 각 라인의 정보에 따라서 이미지를 다르게 출력하는 것이 보통이지요. 그래서, 처음에 만들었던 구조체에 어떤 이미지를 출력할지를 결정하는 변수를 하나 추가 합니다.
'1.소프트웨어 이야기 > 00.VCL(C++ Builder, Delphi)' 카테고리의 다른 글
[펌]VirtualTreeView 사용법 - 3 (0) | 2008.01.03 |
---|---|
[펌]VirtualTreeView 사용법 - 1 (0) | 2008.01.03 |
Edit 창에 숫자만 입력 받기.. (0) | 2007.12.26 |