응 아니야



이번 글에서는 콤보박스와 리스트박스에 대해서 알아보겠습니다. 일단 어떻게 생겼는지부터 알고 어떻게 사용되는지 알아봐야겠죠?


 

 

 콤보박스 아이콘

 리스트박스 아이콘

 

 

 콤보박스

 리스트박스


콤보박스는 저렇게 (▼)화살표를 눌러서 목록을 열었다가 닫았다가 마음대로 할 수 있습니다. 리스트박스는 먼저 지정해둔 리스트박스의 크기에 맞춰서 목록의 갯수가 크기보다 크면 버티컬 스크롤바가 생겨나죠.


이 박스들을 사용할때 대게는 additem, removeitem, listcount, list(), listindex()를 많이 사용합니다. 앞선 배열강좌에서 보셨던 분은 눈치채셨을지도 모르겠습니다. 저 괄호는 배열을 의미합니다. 이 배열을 우리는 index 즉 색인 또는 목록이라고 해요~ 여기서는 목록이라고 부릅니다. 그래서 저 괄호안에 숫자를 넣어주면 숫자에 맞는 값을 반환하게 됩니다.


additem 문자열, 목록

additem(문자열, 목록)

지정한 문자열을 원하는 목록의 아이템에 추가합니다. 쉼표와 위치를 쓰지 않으면 마지막 목록 아래에 추가합니다.


removeitem 목록

removeitem(목록)

지정한 아이템에 있는 목록의 문자열을 삭제합니다. 목록에 들어갈 값은 어떤 과정은 거쳐도 되지만 결과적으로 반드시 숫자여야합니다.


listcount

박스안에 문자열이 있는 아이템의 목록의 갯수가 몇개나 되는지 그 값을 반환해줍니다. 연산자를 사용할수도 있습니다. listcount - 1처럼


list()

list(0)

list(array)

지정한 목록의 아이템 문자열을 반환합니다.


listindex()

지정한 리스트의 번호를 반환합니다. 마찬가지로 연산자를 사용할 수 있습니다.



이 네가지 함수를 사용한 프로그램을 만들어보겠습니다. 결과는 위와 같은데요.


나머지 removeitem은 깜빡하고 못넣었습니다. list1.removeitem list1.listindex() 이렇게 넣어주시면 됩니다. 그럼 커맨드 버튼을 누르기전에 리스트박스에 삭제하고 싶은걸 클릭해놓으면 됩니다. 클릭 안해놓으면 에러메세지가 나오니까 주의하세요. (조건문으로 이 에러메세지를 회피하면 완성도가 더 높겠죠?)


몇가지 특이한 요소를 제외하고 인덱스번호는 거의 0번부터 시작합니다. 이 콤보와 리스트도 마찬가지입니다. 위 사진처럼 인덱스를 선택하지 않았을때 -1이라는 값을 반환하게 되는것이죠. 이 함수들을 사용하는데 함수에 변수를 넣고 자료형까지 선언한 상태에서 자료형이 자연수만 담을 수 있으면 분명 에러메세지를 뱉어댈겁니다. 이것에만 유의하면 함수를 조합해 아주 멋진 프로그램을 만드실 수 있어요~ 끝~~


자 좀 아쉬우니까, 주소록의 뼈대를 만들어 보겠습니다.


정말 뼈대를 만들고


Private Sub Command1_Click()
If Option1.Value = True Then

If Text1.Text = vbNullString Then
Text1.SetFocus
Else
List1.AddItem Text1.Text
List1.ListIndex() = List1.ListCount - 1
Text1.Text = vbNullString
Text1.SetFocus
End If

Else

If Text1.Text = vbNullString Then
Text1.SetFocus
ElseIf List1.ListIndex() = -1 Then
Text1.SetFocus
List1.ListIndex() = List1.ListCount - 1
Else
List1.AddItem Text1.Text, List1.ListIndex()
Text1.Text = vbNullString
Text1.SetFocus
End If

End If
End Sub

Private Sub Command2_Click()
If List1.ListIndex() = -1 Then
List1.ListIndex() = List1.ListCount - 1
Text1.SetFocus
Else

If List1.ListCount = 0 Then
Text1.SetFocus
Else
List1.RemoveItem List1.ListIndex()
Text1.SetFocus
End If

End If
End Sub

Private Sub Command3_Click()
If List1.ListCount > 0 Then
If MsgBox("입력된 목록이 있습니다. 실수로 클릭한 경우 아니요를 눌러주십시오. 삭제후 어떠한 방법으로도 복구할 수 없습니다. 정말 삭제하시겠습니까?", vbCritical + vbYesNo, "중요!") = vbYes Then
List1.Clear
Text1.SetFocus
Else
Text1.SetFocus
End If
Else
Text1.SetFocus
End If
End Sub

Private Sub Command4_Click()
If List1.ListCount > 0 Then
If MsgBox("입력된 목록이 있습니다. 저장하지 않은 자료는 프로그램 종료 후 삭제되며 어떠한 방법으로도 복구할 수 없습니다. 정말 프로그램을 종료하시겠습니까?", vbCritical + vbYesNo, "중요!") = vbYes Then
End
Else
Text1.SetFocus
End If
Else
End
End If
End Sub

Private Sub Form_Load()
Form1.Caption = "주소록의"
Frame1.ForeColor = RGB(255, 0, 255)
Frame1.Caption = "뼈대 / 입력된 문자열을 마지막줄에 추가합니다."
Option1.Value = True
Option2.Value = False
Option1.Caption = "추가"
Option2.Caption = "삽입"
Command1.Caption = "입력"
Command2.Caption = "지정삭제"
Command3.Caption = "전체삭제"
Command4.Caption = "종료"
End Sub

Private Sub Option1_Click()
Option1.Value = True
Option2.Value = False
Frame1.ForeColor = RGB(255, 0, 255)
Frame1.Caption = "뼈대 / 입력된 문자열을 마지막줄에 추가합니다."
End Sub

Private Sub Option2_Click()
If List1.ListCount = 0 Then
Option1.Value = True
Option2.Value = False
Else
Option1.Value = False
Option2.Value = True
Frame1.ForeColor = RGB(0, 0, 255)
Frame1.Caption = "뼈대 / 입력된 문자열을 선택한 줄에 추가합니다."
End If
End Sub


소스를 입력해서 컴파일을 누르면?



잘됩니다.


이제 여기에다가 저장, 불러오기 버튼만 넣으면 말그대로 아주 간단한 주소록(?)으로 사용할 수 있죠!

공유하기

facebook twitter kakaoTalk kakaostory naver band