사용자에게 선택할 수 있는 컨트롤 제공
대부분의 애플리케이션은 사용자에게 간단한 "예/아니요" 옵션이나 수백 가지 가능성 목록에서 선택하는 등의 선택 사항을 제공해야 합니다. Visual Basic에는 선택 항목을 제공하기 위한 여러 가지 표준 컨트롤이 포함되어 있습니다. 다음 표에는 이러한 컨트롤과 그 용도가 요약되어 있습니다.
CheckBox로 단일 옵션 선택
CheckBox는 특정 상태가 선택되었는지(켜짐) 또는 지워졌는지(꺼짐)를 나타냅니다. 응용 프로그램에서 CheckBox를 사용하면 사용자에게 "True/False" 또는 "yes/no" 선택이 제공됩니다. CheckBox는 서로 독립적으로 작동하므로 사용자는 동시에 원하는 만큼 많은 CheckBox를 선택할 수 있습니다. 예를 들어, 그림 3.9에서는 볼드체와 이탤릭체를 모두 선택할 수 있습니다.
체크박스 앱
이 예제에서는 CheckBox를 사용하여 텍스트를 일반 글꼴로 표시할지 아니면 기울임꼴로 표시할지 결정합니다. 이 예제의 작업 버전은 응용 프로그램 예제 Controls.vbp의 Check.frm을 참조하세요. 그림 3.10에 표시된 대로 이 애플리케이션에는 TextBox, Label, CommandButton 및 두 개의 CheckBox가 있습니다.
다음 표에는 응용 프로그램의 개체에 대한 속성 설정이 나열되어 있습니다.
굵게 또는 기울임꼴을 선택하면 CheckBox의 Value 속성이 1로 설정되고 선택하지 않으면 0으로 설정됩니다. 기본 값은 0이므로 Value 속성을 변경하지 않으면 CheckBox가 처음 표시될 때 선택되지 않습니다. vbChecked 및 vbUnchecked 상수를 사용하여 값 1과 0을 나타낼 수 있습니다.
체크박스 애플리케이션의 이벤트
CheckBox를 클릭하면 CheckBox의 Click 이벤트가 발생합니다. 이 이벤트 프로시저는 CheckBox가 선택되었는지 여부(즉, Value=vbChecked인지 여부)를 테스트합니다. 선택한 경우 TextBox의 Font 속성에서 반환된 Font 개체의 Bold 또는 Italic 속성을 설정하여 텍스트를 굵게 또는 기울임꼴로 변환합니다.
PRivateSubchkBold_Click()
IfChkBold.Value=vbCheckedThen '선택된 경우.
txtDisplay.Font.Bold=True
Else '선택하지 않은 경우.
txtDisplay.Font.Bold=거짓
종료
EndSub
PrivateSubchkItalic_Click()
IfChkItalic.Value=vbCheckedThen '선택한 경우.
txtDisplay.Font.Italic=True
Else '선택하지 않은 경우.
txtDisplay.Font.Italic=거짓
종료
EndSub
옵션 버튼을 사용하여 옵션 그룹화
옵션 버튼은 사용자에게 두 개 이상의 선택 항목 집합을 나타냅니다. 그러나 CheckBox와 달리 옵션 버튼은 항상 그룹의 일부로 작동하므로 옵션 버튼을 선택하면 그룹의 다른 버튼이 즉시 지워집니다. 사용자에게 "이것은 선택 항목 집합입니다. 하나만 선택하세요."라고 알려주는 옵션 버튼 그룹을 정의합니다.
예를 들어, 그림 3.11에 표시된 옵션 버튼 그룹에서 사용자는 세 개의 옵션 버튼 중 하나만 선택할 수 있습니다.
옵션 버튼 그룹 만들기
양식(즉, Frame이나 PictureBox가 아닌)에 직접 배치된 모든 옵션 단추는 그룹을 형성합니다. 다른 옵션 단추 그룹을 생성하려면 해당 그룹 중 일부를 Frame 또는 PictureBox에 배치해야 합니다.
PictureBox의 모든 옵션 버튼과 마찬가지로 지정된 프레임의 모든 옵션 버튼은 별도의 그룹을 형성합니다. 이 방법을 사용하여 독립 그룹을 생성하는 경우 항상 Frame 또는 PictureBox를 먼저 그린 다음 내부에 옵션 버튼을 그립니다. 그림 3.12는 두 개의 옵션 버튼 그룹이 있는 양식을 보여줍니다.
옵션 버튼 그룹이 프레임에 그려진 후에 사용자는 그룹에서 하나의 옵션 버튼만 선택할 수 있습니다. 프레임에서 컨트롤을 그룹화하려면 다음 단계를 따르세요.
1. "도구 상자"에서 프레임 컨트롤을 선택하고 폼에 프레임을 그립니다.
2. "도구 상자"에서 OptionButton 컨트롤을 선택하고 프레임에 컨트롤을 그립니다.
3. 프레임에 옵션 버튼도 추가하려면 2단계를 반복하세요. 먼저 프레임을 그린 다음 프레임에 각 컨트롤을 그려서 프레임이 이동될 때 컨트롤도 함께 이동하도록 합니다. 기존 컨트롤을 프레임으로 이동하면 컨트롤이 프레임과 함께 이동하지 않습니다.
기존 컨트롤을 프레임으로 그룹화하는 경우 이러한 컨트롤을 선택한 다음 잘라서 프레임 또는 그림 컨트롤에 붙여 넣을 수 있습니다.
컨트롤 컨테이너
컨트롤이 독립 개체인 경우 양식과 컨트롤 사이에는 일종의 부모-자식 관계가 있습니다. 그림 3.12는 옵션 버튼이 폼이나 프레임 컨트롤 내에 포함될 수 있는 방법을 보여줍니다.
컨테이너의 개념을 이해하려면 먼저 모든 컨트롤이 해당 컨트롤이 있는 형식의 자식이라고 상상해 보세요. 실제로 대부분의 컨트롤은 컨트롤이 위치한 형식에 해당하는 값을 갖는 읽기 전용 Parent 속성을 지원합니다. 자식 컨트롤은 부모 폼에서의 위치를 결정합니다. 컨트롤의 Left 속성과 Top 속성은 부모 폼을 기준으로 하며 컨트롤은 부모 폼의 경계를 넘어 이동할 수 없습니다. 컨테이너가 이동되면 컨트롤도 이동하므로 컨트롤과 컨테이너의 상대적 위치는 변경되지 않은 상태로 유지됩니다. 즉, 컨트롤의 Left 속성과 Top 속성은 변경되지 않은 상태로 유지됩니다.
옵션 버튼 선택 또는 비활성화
옵션 버튼은 다음과 같은 방법으로 선택할 수 있습니다.
1. 런타임 중에 마우스로 옵션 버튼을 클릭합니다.
2. Tab 키를 사용하여 옵션 버튼 그룹을 찾은 다음 화살표 키(화살표 키)를 사용하여 그룹 내에서 옵션 버튼을 찾습니다.
3. optChoice.Value=True 코드를 사용하여 Value 속성을 True로 설정합니다.
4. 라벨 제목에 지정된 단축키를 사용하세요.
5. 버튼을 옵션 버튼 그룹의 기본 버튼으로 만들려면 디자인 타임에 Value 속성을 True로 설정하면 됩니다. 사용자가 다른 옵션 버튼을 선택하거나 코드를 사용하여 변경할 때까지 선택된 상태로 유지됩니다.
옵션 버튼을 비활성화하려면 Enabled 속성을 False로 설정하십시오. 프로그램 실행 중 이 옵션 버튼이 회색으로 변하면 해당 옵션 버튼을 선택할 수 없다는 뜻입니다.
옵션 앱
그림 3.13에 표시된 양식에서는 옵션 버튼을 사용하여 컴퓨터의 프로세서 유형과 운영 체제를 선택합니다. 사용자가 그룹 내에서 옵션 버튼을 선택하면 레이블 제목이 현재 선택 사항을 반영하도록 변경됩니다. 이 예제의 작업 버전은 응용 프로그램 예제 Controls.vbp의 Options.frm을 참조하세요.
다음 표에는 응용 프로그램의 개체 속성에 대한 설정이 나열되어 있습니다.
옵션 애플리케이션의 이벤트
옵션 애플리케이션은 다음과 같이 이벤트에 응답합니다.
처음 세 개의 옵션 단추의 Click 이벤트는 양식 수준 문자열 변수 strComputer에 해당 설명을 할당합니다.
후자의 두 옵션 단추의 Click 이벤트는 두 번째 양식 수준 변수 strSystem에 해당 설명을 할당합니다.
이 방법의 핵심은 두 개의 양식 수준 변수인 strComputer와 strSystem을 사용하는 것입니다. 이 두 변수는 서로 다른 문자열 값을 가지며 옵션 버튼의 최종 선택은 이 값에 따라 달라집니다.
새 옵션 버튼을 선택할 때마다 해당 Click 이벤트의 코드가 해당 변수의 값을 업데이트합니다.
PrivateSubopt586_Click()
str컴퓨터=펜티엄
통화표시캡션
EndSub
그런 다음 두 변수를 연결하고 Label의 Caption 속성을 변경하는 DisplayCaption이라는 프로시저를 호출합니다.
하위디스플레이캡션()
lblDisplay.Caption=당신이 선택했습니다&
_str컴퓨터&실행&str시스템
EndSub
상황에 따라 변수의 값이 달라지는 점만 제외하면 Caption 속성을 변경하는 과정은 기본적으로 다섯 가지 옵션 버튼 모두 동일하기 때문에 서브루틴을 사용합니다. 이렇게 하면 모든 Click 이벤트에서 동일한 코드가 중복되는 것을 방지할 수 있습니다.
변수 및 하위 프로세스 에 대한 자세한 내용은 5장 "프로그래밍 기초"에서 설명합니다.
ListBox 및 ComboBox 사용
ListBox와 ComboBox는 사용자에게 선택권을 제공합니다. 기본적으로 옵션은 세로 단일 열에 표시되지만 여러 열로 설정할 수도 있습니다. 항목 수가 ComboBox 또는 ListBox가 표시할 수 있는 수를 초과하면 자동으로 ScrollBar가 컨트롤에 나타납니다. 그러면 사용자는 목록을 위, 아래, 왼쪽, 오른쪽으로 스크롤할 수 있습니다. 그림 3.14는 단일 열 ListBox를 보여줍니다.
ComboBox에는 TextBox와 ListBox의 기능이 모두 있습니다. 이 컨트롤을 사용하면 사용자는 텍스트를 입력하거나 목록에서 항목을 선택하여 선택할 수 있습니다. 그림 3.15는 ComboBox를 보여줍니다.
Label의 Caption 속성이나 TextBox의 text 속성과 같이 단일 값을 포함하는 다른 컨트롤과 달리 ListBox 및 ComboBox에는 여러 값 또는 값 모음이 포함됩니다. 기본 제공 메서드를 사용하여 런타임 시 컬렉션의 값을 추가, 삭제 및 유지합니다. List1이라는 ListBox에 여러 항목을 추가하려면 코드는 다음과 같습니다. List1.AddItemParis
List1.AddItemNewYork
목록1.항목 추가SanFrancisco
ListBox와 ComboBox는 제한된 공간에서 사용자에게 많은 옵션을 제공하는 효과적인 방법입니다.
ListBox 및 ComboBox 컨트롤에 대한 자세한 내용은 7장 "Visual Basic의 표준 컨트롤 사용"을 참조하십시오.
->