17 리스트박스(ListBox)

Estimated reading: 2 minutes 23 views

ListBox(리스트박스)여러 개의 항목을 나열하고, 사용자가 하나 이상의 항목을 선택할 수 있도록 하는 GUI 컨트롤입니다.
오토핫키 v2에서는 단일 선택 모드다중 선택 모드를 모두 지원하며, 항목 추가, 삭제, 정렬, 선택된 항목의 값 확인 등 다양한 기능을 제공합니다.

ListBox의 활용 예시

  • 색상 선택: 색상 목록에서 하나의 색상을 선택할 수 있습니다.
  • 설정 메뉴: 옵션 목록을 만들어 사용자가 선택할 수 있습니다.
  • 파일 목록: 특정 폴더 내 파일 목록을 표시하고 선택할 수 있습니다.

이 장에서는 초급, 중급, 고급의 3단계로 나누어 ListBox의 기본 생성, 다중 선택, 항목 추가/삭제, 선택 값 반환, 동적 항목 제어까지의 내용을 다룹니다.

초급: 기본 ListBox 생성, 항목 선택, 단일 선택 모드와 기본 선택 항목 설정을 학습합니다.
중급: 다중 선택 모드, 항목 추가 및 삭제, 항목 자동 정렬을 다룹니다.
고급: 항목의 동적 제어, 이벤트 처리(Change 이벤트), 성능 향상을 위한 Redraw 옵션을 학습합니다.

초급 (기본 사용법)

목표: ListBox 컨트롤의 기본 생성, 단일 선택 및 선택 항목 반환 방법을 학습합니다.

1. 기본 ListBox 생성

가장 기본적인 ListBox 생성 예제입니다.

MyGui := Gui()
MyGui.Add("ListBox", "r5 vColorChoice", ["Red", "Green", "Blue"])
MyGui.Show()

설명

  • r5: ListBox에 표시할 줄 수(Row)를 5로 설정합니다.
  • vColorChoice: 선택한 항목의 값을 저장할 변수의 이름을 지정합니다.
  • [“Red”, “Green”, “Blue”]: ListBox에 추가할 항목 리스트입니다.

실행 결과

  • Red, Green, Blue 3개의 항목이 표시됩니다.
  • 사용자가 선택한 항목의 값이 vColorChoice 변수에 저장됩니다.

2. 기본 선택 항목 설정

ListBox의 기본 선택 항목을 설정할 수 있습니다.

MyGui := Gui()
MyGui.Add("ListBox", "r5 vColorChoice Choose2", ["Red", "Green", "Blue"])
MyGui.Show()

설명

  • Choose2: 두 번째 항목(Green)을 기본 선택 항목으로 설정합니다.
  • 프로그램을 실행하면 Green 항목이 기본 선택되어 있습니다.

3. 단일 선택 항목의 값 반환

선택한 항목의 텍스트 값을 반환하는 예제입니다.

MyGui := Gui()
MyListBox := MyGui.Add("ListBox", "r5 vColorChoice", ["Red", "Green", "Blue"])
MyGui.Add("Button", "gGetValue", "선택한 항목 확인")
MyGui.Show()

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

설명

  • 사용자가 버튼을 클릭하면 선택된 항목의 텍스트 값메시지 박스에 표시됩니다.
  • MyListBox.Text를 통해 현재 선택된 항목의 값을 가져올 수 있습니다.

중급 (다양한 기능 활용)

목표: 다중 선택 모드, 항목 추가 및 삭제, 항목 정렬을 학습합니다.

1. 다중 선택 모드 활성화

다중 선택 모드를 활성화하면 Shift + 클릭 또는 Ctrl + 클릭으로 여러 항목을 선택할 수 있습니다.

MyGui := Gui()
MyGui.Add("ListBox", "r5 Multi vColorChoice", ["Red", "Green", "Blue", "Yellow", "Purple"])
MyGui.Show()

설명

  • Multi 옵션을 추가하여 다중 선택 모드를 활성화합니다.
  • Shift + 클릭 또는 Ctrl + 클릭으로 여러 항목을 동시에 선택할 수 있습니다.
  • 선택한 항목은 vColorChoice 변수에 배열로 반환됩니다.

2. 항목 추가 및 삭제

동적으로 ListBox 항목을 추가하거나 삭제할 수 있습니다.

MyGui := Gui()
MyListBox := MyGui.Add("ListBox", "r5", ["Red", "Green", "Blue"])
MyGui.Add("Button", "gAddItem", "항목 추가")
MyGui.Add("Button", "gDeleteItem", "항목 삭제")
MyGui.Show()

AddItem() {
    MyListBox.Add("NewColor")
}

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

설명

  • Add() 메서드: “NewColor” 항목을 추가합니다.
  • Delete(1) 메서드: 첫 번째 항목을 삭제합니다.

3. 항목 자동 정렬 (Sort 옵션 사용)

ListBox에 추가된 항목을 알파벳 순으로 자동 정렬할 수 있습니다.

MyGui := Gui()
MyGui.Add("ListBox", "Sort r5", ["Yellow", "Green", "Blue", "Red", "Purple"])
MyGui.Show()

설명

  • Sort 옵션을 추가하면, 항목이 자동으로 정렬됩니다.
  • “Yellow”, “Green”, “Blue”, “Red”, “Purple” 순서로 입력했지만, 정렬 후에는 알파벳 순서로 표시됩니다.

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

목표: 항목의 동적 제어, 값 변경 감지, 이벤트 처리 등을 학습합니다.

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

선택 항목이 변경될 때마다 자동으로 이벤트를 처리할 수 있습니다.

MyGui := Gui()
MyListBox := MyGui.Add("ListBox", "r5", ["Red", "Green", "Blue", "Yellow", "Purple"])
MyListBox.OnEvent("Change", () => MsgBox("선택된 항목의 텍스트: " MyListBox.Text))
MyGui.Show()

설명

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

2. 중단 후 모든 항목 출력 (다중 선택의 모든 항목 반환)

다중 선택 모드에서 선택한 모든 항목을 가져오는 방법입니다.

MyGui := Gui()
MyListBox := MyGui.Add("ListBox", "r5 Multi", ["Red", "Green", "Blue", "Yellow", "Purple"])
MyGui.Add("Button", "gShowSelections", "선택 항목 보기")
MyGui.Show()

ShowSelections() {
    For Index, Field in MyListBox.Text
    {
        MsgBox("선택된 항목: " Field)
    }
}

설명

  • 다중 선택 모드에서 선택한 모든 항목을 가져옵니다.
  • For 루프를 사용하여 선택된 모든 항목의 텍스트를 출력합니다.

3. Redraw 옵션으로 성능 향상

Redraw 옵션을 사용하면 ListBox 항목을 빠르게 추가하거나 삭제할 수 있습니다.

MyGui := Gui()
MyListBox := MyGui.Add("ListBox", "r5")
MyListBox.Opt("-Redraw")
Loop 100 {
    MyListBox.Add("Item " A_Index)
}
MyListBox.Opt("+Redraw")
MyGui.Show()

설명

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