Graphisoft®

Dialog ManagerVersion: 2.0

리스트 뷰

리스트 뷰 컨트롤은 사용자가 1개 이상의 항목들을 선택할 수 있는 항목들의 모음을 표시하는 창입니다. 각 항목은 이미지와 항목 텍스트(라벨)로 구성되어 있습니다. 리스트 뷰 컨트롤들은 몇 가지 뷰 모드를 제공합니다. 예. 항목들을 정렬하고 개별 항목들을 표시하는 방법.

리스트 뷰들은 단일 선택(한 번에 한 항목만 선택 가능) 또는 다중 선택(한 번에 하나 이상의 항목 선택 가능)이 될 수 있습니다. 기본적으로 리스트 뷰는 수평 스크롤 바는 없지만 수직 스크롤 바는 항상 가지고 있습니다. 만약 리스트 뷰가 한 번에 모든 리스트 뷰 항목들을 표시하기에 충분히 크지 않다면, 스크롤 바가 활성화되고 그렇지 않으면 비활성화됩니다. 리소스에서 NoScroll flag를 사용하여 기본 수직 스크롤 바 없이 리스트 뷰 컨트롤을 표시할 수 있습니다. 사용자가 필요할 때 리스트를 스크롤하고, 항목들을 선택 혹은 선택 해제할 수 있습니다. 리스트 뷰 항목을 선택하면 시각적 외형이 변하는데, 보통 이미지가 혼합되고 선택된 항목들에 대하여 텍스트와 배경색이 운영체제가 지정한 컬러로 바뀝니다.

다중 선택 리스트 뷰 컨트롤은 아직 구현되지 않았습니다.

항목 타입

DG_ITM_LISTVIEW

서브 타입

서브 타입 의미
DG_LVT_SINGLESELECT 1개만 선택 가능합니다.
DG_LVT_MULTISELECT 다중 선택이 가능합니다.

뷰 모드

의미
DG_LVVM_BOTTOMTEXT 항목 텍스트는 이미지 밑에 표시됩니다.





DG_LVVM_RIGHTTEXT 항목 텍스트는 이미지 오른쪽에 표시됩니다.





DG_LVVM_SINGLECOLUMN 리스트는 단일 컬럼입니다: 이미지는 왼쪽으로 정렬되고, 항목 텍스트 영역은 행 끝까지 확장됩니다.





GRC 사양

    SingleSelListView    x  y  dx  dy  fontSpec  imWidth  imHeight  cellWidth  cellHeight  lvModeFlag  [NoScroll]

xy는 리스트 뷰의 좌상단 코너의 픽셀 좌표입니다. dxdy는 컨트롤의 너비와 높이의 픽셀 크기입니다. fontSpec은 항목 라벨들의 글꼴 크기와 스타일을 선언합니다. cellWidth, cellHeight 그리고 imWidth, imHeight는 각각 리스트 뷰 항목과 항목 이미지의 너비와 높이의 픽셀 크기입니다. lvModeFlag는 리스트 뷰 컨트롤의 뷰 모드를 정의합니다. 선택적인 NoScroll flag에 의해 기본 수직 스크롤 바가 없는 리스트 뷰 컨트롤이 생성됩니다.

fontSpec의 가능한 값은 다음과 같습니다:

Value DGSetItemFont에서 사용되는 DG 상수 조합입니다.
ExtraSmall DG_IS_EXTRASMALL
SmallPlain DG_IS_SMALL | DG_IS_PLAIN
SmallBold DG_IS_SMALL | DG_IS_BOLD
SmallItalic DG_IS_SMALL | DG_IS_ITALIC
SmallUnderline DG_IS_SMALL | DG_IS_UNDERLINE
LargePlain DG_IS_LARGE | DG_IS_PLAIN
LargeBold DG_IS_LARGE | DG_IS_BOLD
LargeItalic DG_IS_LARGE | DG_IS_ITALIC
LargeUnderline DG_IS_LARGE | DG_IS_UNDERLINE

lvModeFlag의 가능한 값은 다음과 같습니다:

의미
bottomText DG_LVVM_BOTTOMTEXT 뷰 모드가 세트되었싑니다.
rightText DG_LVVM_RIGHTTEXT 뷰 모드가 세트되었싑니다.
singleColumn DG_LVVM_SINGLECOLUMN 뷰 모드가 세트되었싑니다.

메시지

메시지 의미
DG_MSG_CHANGE 리스트 뷰에서 선택이 변경되었습니다. 메시지 데이터 파라미터는 항상 0입니다.
DG_MSG_DOUBLECLICK 리스트 뷰 항목을 더블 클릭했습니다. 메시지 데이터는 리스트 뷰 항목의 1-기반 인덱스를 포함하고 있습니다.
DG_MSG_FOCUS 리스트 뷰가 키보드 포커스를 얻거나 잃었습니다. 메시지 데이터는 각각 1 또는 0입니다.
DG_MSG_UPDATE 리스트 뷰 항목의 이미지를 다시 그려야 합니다. 리스트 뷰 항목의 이미지 타입이 DG_LVIT_OWNERDRAW일 때에만 DG가 이 메시지를 다이얼로그 콜백 함수에게 보냅니다. 메시지 데이터 파라미터는 애플리케이션에 의해 이미지를 그리기 위해 필요한 모든 정보를 포함하는 DGListViewUpdateData structure에 대한 포인터입니다.
DG_MSG_DRAGDROP 드래그 앤 드롭 관련 이벤트가 발생했습니다. 이 메시지는 DGEnableMessage로 활성화 된 후에만 올 수 있습니다. 리스트 뷰들은 드래그 소스 또는 드래그 대상 어느 것이든 될 수 있습니다.

수정 Flag

DGListViewSelectItemDGListViewDeselectItem 함수들은 다이얼로그 콜백 함수에서 DG_MSG_INIT 메시지를 처리할 때 호출되는 경우를 제외하고 리스트 뷰의 수정 flag를 세트할 수 있습니다. flag는 또한 리스트 뷰의 선택을 변경하고 DG_MSG_CHANGE 메시지를 발생시키는 사용자 액션에 의해서도 세트될 수 있습니다. 수정 flag의 상태를 가져오거나 리셋(지우기)하려면 DGModified 또는 DGResetModified를 사용하십시오.

설명

리스트 뷰 컨트롤에 항목들을 삽입하려면 DGListViewInsertItem을 호출하고, 제거하려면 DGListViewDeleteItem을 호출하십시오. 리스트 뷰의 현재 항목들의 수는 DGListViewGetItemCount로 가져올 수 있습니다.

리스트 뷰 항목의 너비와 높이는 DGListViewSetItemSizeDGListViewGetItemSize로 각각 세트하거나 가져올 수 있습니다. 이미지 직사각형은 이 항목 직사각형을 초과할 수 없습니다. 만약 이미지가 리스트 뷰 항목보다 크다면, 이미지는 거기에 맞추려고 잘리게 됩니다. 이미지 직사각형을 세트하거나 가져오려면 DGListViewSetImageSizeDGListViewGetImageSize를 사용하십시오. 리스트 뷰 컨트롤에는 최대 3가지 뷰 모드가 있습니다. 뷰 모드는 GRC뿐만 아니라 프로그램 코드에서 DGListViewSetViewMode 함수 호출을 통해서도 세트할 수 있습니다. 현재 뷰 모드를 가져오려면 DGListViewGetViewMode를 사용하십시오.

리스트 뷰 항목 이미지를 정의하는 2가지 방법이 있습니다:

리스트 뷰 항목 이미지를 지정하는 첫 번째 방법은 DGListViewSetItemImage 또는 DGListViewSetImage에 의한 이미지 핸들로 그것을 세트하는 것입니다. 다른 방법은 DGListViewSetItemImageId 또는 DGListViewSetImageId에 의한 리소스 ID로 그것을 세트하는 것입니다. 이미지 핸들은 DGListViewGetItemImage 또는 DGListViewGetImage로 가져올 수 있으며, 이미지 리소스 ID는 DGListViewGetItemImageId 또는 DGListViewGetImageId로 가져올 수 있고, 이미지의 리소스 모듈 ID는 DGListViewGetItemImageResource 또는 DGListViewGetImageResource로 가져올 수 있습니다.

DGListViewSetItemText 그리고 DGListViewGetItemText는 리스트 뷰 항목들의 텍스트를 세트하고 가져오는 역할을 합니다. 텍스트 직사각형은 세트할 수 없습니다. DG는 항목과 이미지 직사각형으로부터 그것의 크기를 계산합니다. 적절한 파라미터들을 활용하여 멀티-라인 항목 텍스트를 만들 수도 있습니다. 이미지 텍스트는 end-of-line 문자들을 포함할 수 없습니다. 그러나 DG가 라인 끊기를 할 수 있습니다. 만약 텍스트가 항목 직사각형에 맞지 않으면, DG는 자동으로 생략 문자("...")를 이용해 그것을 잘라냅니다.

각 리스트 뷰 항목의 텍스트 스타일, 상태, 컬러는 DGListViewSetItemStyle, DGListViewSetItemStatus 그리고 DGListViewSetItemColor로 변경할 수 있습니다. 이 리스트 뷰 항목 프로퍼티들을 가져오려면 DGListViewGetItemStyle, DGListViewGetItemStatus 그리고 DGListViewGetItemColor를 각각 사용하십시오. 각 리스트 뷰 항목은 사용자 정의 값을 가질 수 있습니다. 이것은 아무 항목 지정 사용자 데이터를 저장하는 데 사용될 수 있습니다. DGListViewSetItemUserData 그리고 DGListViewGetItemUserData give an access to this value.

리스트 뷰 컨트롤은 단일 선택 또는 다중 선택이 될 수 있습니다. 사용자는 보통 방식대로 마우스나 키 누름을 통해 리스트 뷰 항목들을 선택할 수 있습니다. 프로그램 코드를 통해 1개 이상의 리스트 뷰 항목들을 선택 또는 선택 해제하려면 DGListViewSelectItem 그리고 DGListViewDeselectItem을 각각 호출하십시오. 선택한 리스트 뷰 항목들의 수를 가져오려면 DGListViewGetSelCount를 사용하십시오. 그리고 그것들의 인덱스를 가져오려면 DGListViewGetSelected 또는 DGListViewGetSelItems를 사용하십시오. 리스트 뷰의 빈 클라이언트 영역(리스트 뷰 항목이 없는 곳)을 마우스로 클릭하면 예전에 선택한 것들이 모두 해제됩니다. 이 경우 애플리케이션에게 알리기 위해 DG_MSG_CHANGE 메시지를 보냅니다.

리스트 뷰 항목의 파라미터들은 리스트 뷰 지정 함수들을 호출하여 세트할 수 있습니다. 이 함수 호출들의 순서-의존성을 피하려면, DG는 리스트 뷰 항목을 그릴 때 파라미터들의 일관성만 확인합니다. 이것은 만약 더 많은 항목들이나 파라미터들이 변경되면 리스트 뷰 함수 호출들을 DGListViewDisableDraw 그리고 DGListViewEnableDraw로 감싸는 것이 좋은 이유입니다. DGListViewEnableDraw 자체는 리스트 뷰 컨트롤을 업데이트하지 않으므로 DGInvalidateItem 또는 DGRedrawItem을 호출하여 유효하지 않은 영역들을 다시 그리는 것은 애플리케이션의 책임입니다.

만약 리스트 뷰 항목의 이미지 타입이 DG_LVIT_OWNERDRAW이고 이 항목을 다시 그려야 한다면, DG는 DG_MSG_UPDATE 메시지를 다이얼로그 콜백 함수에게 보냅니다. 이 메시지의 메시지 데이터 파라미터는 애플리케이션에 의해 드려야 할 이미지의 필요한 모든 정보를 포함하는 DGListViewUpdateData structure에 대한 포인터입니다. 애플리케이션은 단지 이미지를 그려야 합니다; 다이얼로그 콜백 함수가 리턴한 후에 DG는 graying과 blending을 처리합니다. 리스트 뷰 항목의 owner draw flag를 세트하려면 DGListViewSetItemOwnerDrawFlag 함수를 사용하십시오.

리스트 뷰는 DG의 포커스 가능한 컨트롤 중 하나입니다. 리스트 뷰가 사용자 액션에 의해 키보드 포커스를 얻거나 잃었을 때, 다이얼로그 콜백 함수는 DG_MSG_FOCUS 메시지를 받습니다. 리스트 뷰에 키보드 포커스를 세트하는 것은 프로그램 코드에서 DGSetFocus를 통해서도 할 수 있습니다. 현재 키보드 포커스를 가지고 있는 컨트롤을 가져오려면 DGGetFocus를 사용하십시오.

DG에서 키보드 포커스와 포커스 가능한 컨트롤 카테고리는 본질적으로 Macintosh 운영체제에서와 동일한 의미를 갖고 있습니다. (즉, DG와 Macintosh에서 포커스 가능한 컨트롤들의 타입이 동일함) 그러나 Windows에서는 더 많은 컨트롤들이 키보드 포커스를 가질 수 있습니다. DG의 포커스 가능한 컨트롤들은 Windows에서 포커스 가능한 컨트롤들의 부분집합입니다. DGSetFocusDGGetFocus 함수들은 DG의 포커스 가능한 컨트롤들에서만 작동합니다.

키보드 포커스를 포커스 가능한 다이얼로그 항목으로 설정한 다음 Windows의 [F1] 키 또는 Macintosh의 [Help] 키를 누르거나 항목의 마우스 오른쪽 버튼을 클릭하거나 다이얼로그 캡션에 있는 도움말[?] 버튼을 클릭한 뒤 항목 자체를 클릭하여 항목의 자세한 도움말 정보를 호출할 수 있습니다. 만약 툴팁이 활성화되면 단축 도움말 정보가 평소와 같이 표시됩니다. 리스트 뷰에 도움말 텍스트를 표시하는 방법은 2가지가 있습니다. 리스트 뷰의 각 항목에 대해 도움말 텍스트를 표시하거나 리스트 뷰에 도움말 텍스트를 하나만 표시할 수 있습니다. 리스트 뷰의 도움말 스타일은 DGListViewSetHelpStyleDGListViewGetHelpStyle 함수로 각각 세트하거나 가져올 수 있습니다.

요구사항

버전: DG 2.2.0 또는 이후
헤더: DG.h

참고사항

다이얼로그 항목 타입, 리스트 뷰 지정 함수, DGGetFocus, DGInvalidateItem, DGModified, DGRedrawItem, DGResetModified, DGSetFocus, DGSetItemFont, 콜백 함수
DG_MSG_CHANGE, DG_MSG_DOUBLECLICK, DG_MSG_FOCUS, DG_MSG_INIT, DG_MSG_UPDATE
DGListViewUpdateData