기본컨트롤 (2) 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 )
2/25 Contents 학습목표 윈도우의구성요소를시각화한표준컨트롤중리스트박스, 콤보박스, 스크롤바등을이해한다. 내용 ListBox와 ComboBox 컨트롤의속성과활용 Shape 컨트롤의이해 HScroll/VScroll 컨트롤의활용
3/25 ListBox 컨트롤 ListBox( 리스트박스 ) 컨트롤 : ListBox 컨트롤은여러항목중하나또는그이상을선택하는경우주로 사용하며, 다량의항목을넣을때사용하면편리하다. 종류이름설명 메소드 속성 AddItem RemoveItem Refresh Clear List ListIndex ListCount Sorted 문자열을항목에추가인덱스번호를사용하여항목삭제리스트박스컨트롤의항목을최근에입력한항목으로수정리스트박스내의모든항목을삭제인덱스번호를사용하여목록에서항목을알아내거나문자열추가현재선택된항목의위치를인덱스번호로설정하거나반환전체항목의개수를구함컨트롤의항목들을사전순으로정렬되게할것인지설정
4/25 ListBox 컨트롤 ListBox 에항목추가하기 List 속성을이용해서항목을삽입할때는 [Ctrl + Enter] 를누르면서 항목을구분한다.
5/25 ListBox 컨트롤 ListBox 에항목추가하기 AddItem 메소드를사용하여항목을추가한다. List1.AddItem 자료구조 리스트박스마지막항목에 자료구조 가추가된다. List1.AddItem 알고리즘, 3 리스트박스 4 번째항목으로 알고리즘 이추가된다. ListBox 에항목삭제하기 RemoveItem 메소드는리스트박스에있는어떤항목을삭제하는 메소드이다. 항목을삭제할때에는 Index 를이용한다. List1.RemoveItem 2 리스트박스 (List1) 의 3 번째항목을삭제한다. List1.RemoveItem List1.ListCount-1 리스트박스의마지막항목을삭제한다.
6/25 ListBox 컨트롤 ListBox 의모든항목삭제하기 Clear 메소드를사용하여모든항목을삭제한다. List1.Clear 리스트박스 (List1) 의모든항목을제거한다. 실습 > 항목을선택한후 [ 항목삭제하기 ] 버튼을눌러리스트박스의항목을삭제하자. Private Sub Form_Load() List1.AddItem " 비주얼베이직 " List1.AddItem " 자료구조 " List1.AddItem " 컴퓨터구조 " List1.AddItem " 알고리즘 " List1.AddItem " 인공지능 " Private Sub Command1_Click() List1.RemoveItem List1.ListIndex List1.RemoveItem List1.ListIndex 를 List1.RemoveItem (List1.ListIndex) 로표기가능실습동영상 (vb10_1.swf)
7/25 ListBox 컨트롤 실습 > 아래그림과같이텍스트박스에입력된내용을리스트박스에출력하자. 1 객체컨트롤이름속성속성값 1 List1 - - 2 3 2 Text1 Text 3 Command1 Caption 입력 Private Sub Command1_Click() List1.AddItem Text1.Text Text1.Text = "" Text1.SetFocus Private Sub Form_Activate() Text1.SetFocus Private Sub Form_Load() List1.Clear Form1.Caption = " 리스트박스항목삽입 " Text1.Text = "" 실습동영상 (vb10_2.swf)
8/25 ComboBox 컨트롤 ComboBox( 콤보박스 ) 컨트롤 : 리스트박스컨트롤과마찬가지로여러항목중하나또는그이상을선택하는경우주로사용하지만, 리스트박스에비해좁은공간을차지한다. : 리스트박스와거의같은속성을가지고있다. 실습 > 콤보박스컨트롤 (cbodept) 에아래와같이항목을추가하여보자. 실습동영상 (vb10_3.swf) Private Sub Form_Load() cbodept.additem " 소프트웨어개발전공 " cbodept.additem " 건축설비디자인과 " cbodept.additem " 산업디자인과 " cbodept.additem " 전자통신과 " cbodept.additem " 경영과 " cbodept.additem " 뷰티아트디자인과 " cbodept.additem " 간호과 " cbodept.listindex = 0
9/25 ComboBox 컨트롤 실습 > 아래그림과같이개설된과목을콤보박스에서선택한후 [>>] 버튼을누르면신청과목리스트박스로이동되고콤보박스의내용은삭제되도록한다. 또한, 신청된리스트박스에서과목을선택한후 [<<] 버튼을누르면콤보박스로이동되고그항목이삭제되도록프로그램을완성하시오. 이때, 신청 / 취소된과목명을레이블로출력하여확인가능하도록프로그램을완성하시오. 객체컨트롤이름속성속성값 1 2 1 Combo1 - - 3 4 2 List1 - - 3 cmdreq Caption >> 4 cmddrop Caption << 5 Label3 Caption 5
10/25 ComboBox 컨트롤 Private Sub Form_Load() Combo1.AddItem " 영어회화 (1)" Combo1.AddItem " 윈도우즈프로그래밍 (1)" Combo1.AddItem " 프로그래밍언어 " Combo1.AddItem " 이산수학 " Combo1.AddItem " 컴퓨터그래픽스 " Combo1.AddItem " 기독교의이해 " Combo1.AddItem " 전산개론 " Combo1.ListIndex = 0 Private Sub cmdreq_click() On Error GoTo Err kwamok = Combo1.List(Combo1.ListIndex) List1.AddItem kwamok Label3.Caption = kwamok & " 을 ( 를 ) 신청하였습니다 " Combo1.RemoveItem (Combo1.ListIndex) Combo1.ListIndex = 0 Exit Sub Err: Label3.Caption = "" MsgBox " 더이상신청할과목이없습니다.",, " 런타임오류 "
11/25 ComboBox 컨트롤 Private Sub cmddrop_click() On Error GoTo Err kwamok = List1.List(List1.ListIndex) Combo1.AddItem kwamok Label3.Caption = kwamok & " 을 ( 를 ) 취소하였습니다 " List1.RemoveItem (List1.ListIndex) Combo1.ListIndex = 0 Exit Sub Err: Label3.Caption = "" MsgBox " 취소할과목을선택하지않았습니다 ",, " 런타임오류 " 실습동영상 (vb10_4.swf)
12/25 Shape 컨트롤 Shape( 도형 ) 컨트롤 : 사각형, 정사각형, 타원형, 원형, 둥근사각형, 둥근정사각형형태의 6 가지다각형을그릴수있다. Shape 컨트롤의속성 속성 Shape BorderStyle FillColor FillStyle 설명 사각형, 정사각형, 타원형등 6 가지설정된도형을설정기본값은 0 ( 사각형 ) 도형의테두리선의종류 ( 투명, 단색, 대시, 점선등 ) 를설정기본값은 1 ( 단색 ) 도형을채우는데사용한색상을설정기본값은검정색 도형의채우기유형 ( 단색, 투명, 수평성, 수직선등 ) 을설정기본값은 1 ( 투명 )
Shape 컨트롤 실습 > 빨강 (cmdred), 파랑 (cmdblue), 노랑 (cmdyellow) 의버튼을클릭하면 사각형 (shape1) 에해당되는색이칠해지도록하자. 1 2 3 4 객체 컨트롤이름 속성 속성값 1 Shape1 - - 2 cmdred Caption 빨강 3 cmdblue Caption 파랑 4 cmdyellow Caption 노랑 Private Sub cmdred_click() Shape1.FillColor = vbred 위의프로시저와같이 [ 빨강 (cmdred)] 버튼을누르면 Shape1.FillColor=vbRed 문장만을 수행하면, Shape1 객체의내부색이빨간색으로칠해져야하는데아무변화가없을것이다. 그이유는 Shape1 객체의 FillStyle 속성의기본값이 1( 투명 ) 로설정되어있기때문이다. FillStyle 속성의값을 0( 단색 ) 으로설정한후실행하여색이칠해지도록하여보자. 13/25
14/25 Shape 컨트롤 Private Sub cmdblue_click() Shape1.FillStyle = 0 Shape1.FillColor = vbblue Private Sub cmdred_click() Shape1.FillStyle = 0 Shape1.FillColor = vbred Private Sub cmdyellow_click() Shape1.FillStyle = 0 Shape1.FillColor = vbyellow 실습동영상 (vb10_5.swf)
15/25 Shape 컨트롤 Shape 속성의값 값설명 0 사각형 1 정사각형 2 타원형 3 원형 4 둥근사각형 5 둥근정사각형 FillStyle 속성의값 값설명 0 단색 1 투명 2 수평선 3 수직선 4 상향대각선 5 하향대각선 6 교차 7 대각선교차 실습 > 콤보박스컨트롤을이용하여모양 (shape) 을바꾸어보자. 속성창에서모양컨트롤의 Shape 속성값과 FillStyle 속성값을살펴보고이것을콤보박스컨트롤의 ListIndex값으로프로그램을완성하여보자. 단, 초기모양은사각형, 빨간색단색으로한다.
16/25 Shape 컨트롤 1 2 3 4 객체 컨트롤이름 속성 속성값 1 Shape1 Shape 3 - 원형 FillStyle 0 - 단색 2 Combo1 3 Combo2 4 Combo3 Private Sub Form_Load() Combo1.AddItem " 사각형 " Combo1.AddItem " 정사각형 " Combo1.AddItem " 타원형 " Combo1.AddItem " 원형 " Combo1.AddItem " 둥근사각형 " Combo1.AddItem " 둥근정사각형 " Combo1.ListIndex = 0 Combo2.AddItem " 단색 " Combo2.AddItem " 투명 " Combo2.AddItem " 수평선 Combo2.AddItem " 수직선 Combo2.AddItem " 상향대각선 Combo2.AddItem " 하향대각선 " Combo2.AddItem " 교차 " Combo2.AddItem " 대각선교차 " Combo2.ListIndex = 0 Combo3.AddItem " 빨강 " Combo3.AddItem " 파랑 " Combo3.AddItem " 초록 " Combo3.AddItem " 노랑 " Combo3.ListIndex = 0
17/25 Shape 컨트롤 Private Sub Combo1_Click() Shape1.Shape = Combo1.ListIndex Private Sub Combo2_Click() Shape1.FillStyle = Combo2.ListIndex Private Sub Combo3_Click() Select Case Combo3.ListIndex Case 0 Shape1.FillColor = vbred Case 1 Shape1.FillColor = vbblue Case 2 Shape1.FillColor = vbgreen Case 3 Shape1.FillColor = vbyellow End Select [ 설명 ] 도형 (Shape1) 을사각형으로표현하려면 Shape 속성의값을 0 으로, 정사각형은 1, 타원형은 2, 원형은 3, 둥근사각형은 4, 둥근정사각형은 5 를할당하면된다. 따라서, Combo1 의목록의순서와동일하게사각형, 정사각형, 타원형, 원형, 둥근사각형, 둥근정사각형순으로항목으로추가한다면 Shape1.Shape 속성의값에 Combo1.ListIndex 를부여한다면간단하게프로그램을작성할수있다. 실습동영상 (vb10_6.swf)
18/25 HScroll/VScroll 컨트롤 수평 / 수직스크롤바 (HScroll/VScroll) 컨트롤 : 스크롤바는원하는값을직접입력하지않고마우스로스크롤바의이동탭을옮겨값을지정한다. : 수평스크롤바 (HScrollBar) 와수직스크롤바 (VScrollBar) 가있다. SmallChange 이동화살표 이동막대 Value LargeChange 이동줄 속성이름 설정 설명 LargeChange 1 스크롤바의몸통부분을눌렀을때의증가, 감소간격을설정 Max 32767 스크롤바의최대값을설정하거나반환 Min 0 스크롤바의최소값을설정하거나반환 SmallChange 1 스크롤바의양쪽끝에있는화살표를눌렀을때의증가, 감소간격을설정 Value 0 스크롤바의현재위치값을설정하거나반환
19/25 HScroll/VScroll 컨트롤 : 스크롤바에서많이사용되는이벤트에는스크롤바의중간막대를 선택하거나이동화살표를클릭했을때발생하는 Change 이벤트와 중간막대를드래그할때발생하는 Scroll 이벤트가있다. 예 ) Private Sub Form_Load() HScroll1.Min = 0 HScroll1.Max = 100 Private Sub HScroll1_Change() Label1.Caption = HScroll1.Value 실습 > 빨강 (HScroll1), 초록 (HScroll2), 파랑 (HScroll3) 의스크롤바를이용하여 사각형도형 (Shape1) 의색을바꾸어보자. (7 장에서학습했던 RGB(r, g, b) 함수를이용한다.)
20/25 HScroll/VScroll 컨트롤 각스크롤바를 0 ~ 255 값사이로이동함에따라해당색이변경되어야하므로 Click 이벤트가아니라 Change 이벤트를사용하여야한다. 1 2 3 4 5 6 7 객체컨트롤이름속성속성값비고 1 Shape1 FillStyle 0 단색 FillColor vbblack 검정색 2 HScroll1 Max 255 3 HScroll2 Max 255 4 HScroll3 Max 255 5 lblred Caption 0 6 lblgreen Caption 0 7 lblblue Caption 0
21/25 HScroll/VScroll 컨트롤 Private Sub Form_Load() Shape1.FillStyle = 0 Shape1.FillColor = vbblack Private Sub HScroll1_Change() Shape1.FillColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value) lblred.caption = HScroll1.Value Private Sub HScroll2_Change() Shape1.FillColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value) lblgreen.caption = HScroll2.Value Private Sub HScroll3_Change() Shape1.FillColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value) lblblue.caption = HScroll3.Value
22/25 HScroll/VScroll 컨트롤 실습동영상 (vb10_7.swf) 실습 > (144 쪽 ) 세과목의점수를스크롤바로입력하여평균을구하는프로그램 6 7 8 1 2 3 4 5
23/25 HScroll/VScroll 컨트롤 객체 컨트롤이름 속성 속성값 1 HScroll1 Max 100 2 HScroll2 Max 100 3 HScroll3 Max 100 4 txtaverage Text 5 cmdlog Caption 평균계산 6 lbljumsu1 Caption 0 7 lbljumsu2 Caption 0 8 lbljumsu3 Caption 0 Format 함수 Format 함수는숫자, 문자, 날짜및시간등미리정의된형식이나사용자가정의하는형식대로출력할때사용하는함수이다. < 형식 > Format( 데이터 [ 정의된예약어 ], 양식지정문자열 )
24/25 HScroll/VScroll 컨트롤 Dim jumsu1, jumsu2, jumsu3 As Integer Private Sub cmdlog_click() ave = (jumsu1 + jumsu2 + jumsu3) / 3 txtaverage.text = Format(ave, "##.00") Private Sub HScroll1_Change() jumsu1 = Val(HScroll1.Value) lbljumsu1.caption = HScroll1.Value Private Sub HScroll2_Change() jumsu2 = Val(HScroll2.Value) lbljumsu2.caption = HScroll2.Value Private Sub HScroll3_Change() jumsu3 = Val(HScroll3.Value) lbljumsu3.caption = HScroll3.Value 실습동영상 (vb10_8.swf)
연습문제 문제 ] 다음그림과같이스크롤바로글자크기를지정하면텍스트박스 (Text1) 의 글자크기가변화되도록프로그램을작성하시오. Private Sub HScroll1_Change() Label3.Caption = HScroll1.Value Text1.FontSize = Val(HScroll1.Value) 실습동영상 (vb10_9.swf) 25/25
윈도우즈프로그래밍 (1) ( 담당교수 : 박호균 )