18 리스트뷰(ListView)

Estimated reading: 2 minutes 24 views

ListView(리스트뷰)여러 개의 항목을 표 형태로 표시할 수 있는 컨트롤입니다. 탐색기의 파일 목록과 유사한 형태로, 행(Row)과 열(Column)으로 구성된 테이블 뷰를 제공합니다. 사용자는 각 항목을 선택하거나 정렬, 편집할 수 있으며, 체크박스 추가, 아이콘 추가, 더블 클릭 이벤트 처리와 같은 다양한 기능을 사용할 수 있습니다.

ListView는 파일 목록 표시, 작업 목록 관리, 데이터 테이블 표시와 같은 기능을 구현할 때 매우 유용합니다. 오토핫키 v2의 ListView 컨트롤을 활용하면 열(Column)과 행(Row)의 동적 추가, 편집, 삭제가 가능합니다.

이 장에서는 초급, 중급, 고급의 3단계로 나누어 ListView의 기본 생성, 항목 추가 및 삭제, 다중 선택, 동적 제어 등을 다룹니다.

초급: ListView 생성, 항목 추가, 선택 항목 반환을 학습합니다.
중급: 항목 추가, 삭제, 정렬 기능을 학습합니다.
고급: 동적 제어, 다중 선택, 이벤트 처리(Change 이벤트), 성능 향상을 위한 Redraw 옵션을 학습합니다.

초급 (기본 사용법)

목표: ListView 컨트롤의 기본 생성, 항목 추가 및 기본 선택 방법을 학습합니다.

1. 기본 ListView 생성

MyGui := Gui()
MyGui.Add("ListView", "r10 w400", ["이름", "폴더", "크기(KB)", "타입"])
MyGui.Show()

설명

  • r10: ListView에 표시할 줄 수(Row) 10개를 지정합니다.
  • w400: ListView의 너비를 400px로 설정합니다.
  • [“이름”, “폴더”, “크기(KB)”, “타입”]: 열(Column) 이름을 설정합니다.

실행 결과

  • 이름, 폴더, 크기(KB), 타입의 4개의 열(Column)을 포함하는 ListView가 표시됩니다.

2. 기본 항목 추가

MyGui := Gui()
MyListView := MyGui.Add("ListView", "r10 w400", ["이름", "폴더", "크기(KB)", "타입"])
MyListView.Add(["파일1.txt", "C:\\Downloads", "120", "텍스트 파일"])
MyListView.Add(["파일2.jpg", "C:\\Images", "3200", "이미지 파일"])
MyGui.Show()

설명

  • MyListView.Add(): ListView에 항목(Row)을 추가합니다.
  • [“파일1.txt”, “C:\Downloads”, “120”, “텍스트 파일”]: 열(Column)에 해당하는 데이터를 추가합니다.

출력 결과

  • ListView에 파일1.txt파일2.jpg의 정보가 표시됩니다.

3. 선택 항목의 값 반환

MyGui := Gui()
MyListView := MyGui.Add("ListView", "r10 w400", ["이름", "폴더", "크기(KB)", "타입"])
MyListView.Add(["파일1.txt", "C:\\Downloads", "120", "텍스트 파일"])
MyListView.Add(["파일2.jpg", "C:\\Images", "3200", "이미지 파일"])
MyGui.Add("Button", "gGetValue", "선택 항목 확인")
MyGui.Show()

GetValue() {
    MsgBox("선택된 항목의 텍스트: " MyListView.Text)
}

설명

  • MyListView.Text: 현재 선택된 항목의 텍스트를 반환합니다.
  • 사용자가 버튼을 클릭하면 선택된 항목의 텍스트 값메시지 박스에 표시됩니다.

중급 (다양한 기능 활용)

목표: 항목 추가, 삭제, 수정 및 정렬 기능을 학습합니다.

1. 항목 추가 및 삭제

MyGui := Gui()
MyListView := MyGui.Add("ListView", "r10 w400", ["이름", "폴더", "크기(KB)", "타입"])
MyGui.Add("Button", "gAddItem", "항목 추가")
MyGui.Add("Button", "gDeleteItem", "항목 삭제")
MyGui.Show()

AddItem() {
    MyListView.Add(["파일3.pdf", "C:\\Documents", "2500", "PDF 파일"])
}

DeleteItem() {
    MyListView.Delete(1) ; 첫 번째 항목 삭제
}

설명

  • MyListView.Add(): ListView에 파일3.pdf 항목을 추가합니다.
  • MyListView.Delete(1): 첫 번째 항목을 삭제합니다.

2. 열(Column) 정렬 기능

MyGui := Gui()
MyListView := MyGui.Add("ListView", "r10 w400", ["이름", "폴더", "크기(KB)", "타입"])
MyListView.Add(["파일1.txt", "C:\\Downloads", "120", "텍스트 파일"])
MyListView.Add(["파일2.jpg", "C:\\Images", "3200", "이미지 파일"])
MyListView.Opt("+Sort")
MyGui.Show()

설명

  • MyListView.Opt(“+Sort”): 항목이 알파벳 순으로 정렬됩니다.

고급 (동적 제어 및 이벤트 처리)

목표: 항목의 동적 제어, 선택 항목 변경 감지, 성능 향상을 위한 Redraw 옵션을 학습합니다.

1. 선택 항목의 변경 감지 (Change 이벤트 활용)

MyGui := Gui()
MyListView := MyGui.Add("ListView", "r10 w400", ["이름", "폴더", "크기(KB)", "타입"])
MyListView.Add(["파일1.txt", "C:\\Downloads", "120", "텍스트 파일"])
MyListView.OnEvent("Change", () => MsgBox("선택된 항목의 텍스트: " MyListView.Text))
MyGui.Show()

설명

  • OnEvent(“Change”): 사용자가 항목을 선택할 때 자동으로 이벤트가 발생합니다.
  • MyListView.Text를 통해 선택된 항목의 값을 실시간으로 확인할 수 있습니다.

2. 다중 선택 모드 활성화

MyGui := Gui()
MyListView := MyGui.Add("ListView", "r10 w400 Multi", ["이름", "폴더", "크기(KB)", "타입"])
MyListView.Add(["파일1.txt", "C:\\Downloads", "120", "텍스트 파일"])
MyListView.Add(["파일2.jpg", "C:\\Images", "3200", "이미지 파일"])
MyGui.Show()

설명

  • Multi 옵션을 추가하여, 다중 선택 모드를 활성화합니다.
  • Ctrl + 클릭 또는 Shift + 클릭으로 여러 항목을 선택할 수 있습니다.

3. Redraw 옵션으로 성능 향상

MyGui := Gui()
MyListView := MyGui.Add("ListView", "r10 w400", ["이름", "폴더", "크기(KB)", "타입"])
MyListView.Opt("-Redraw")
Loop 100 {
    MyListView.Add(["파일" A_Index ".txt", "C:\\Documents", A_Index * 10, "텍스트 파일"])
}
MyListView.Opt("+Redraw")
MyGui.Show()

설명

  • -Redraw: 다시 그리기 중지하여 항목 추가 속도를 향상시킵니다.
  • +Redraw: 항목 추가 작업이 끝난 후 다시 그리기를 활성화합니다.
  • 이 방법을 사용하면 대량의 항목을 추가할 때 성능이 향상됩니다.
Subscribe
Notify of
guest
0 댓글
Inline Feedbacks
View all comments