기본컨트롤 (1) 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 )
2/33 Contents 학습목표 기본컨트롤에서레이블컨트롤, 텍스트박스컨트롤, 프레임컨트롤, 옵션버튼컨트롤, 체크박스컨트롤을이해하고메시지박스를활용할수있다. 내용 레이블컨트롤 텍스트박스컨트롤 프레임컨트롤 옵션버튼컨트롤 체크박스컨트롤 메시지박스함수
3/33 기본컨트롤 기본컨트롤 : 비주얼베이직통합개발환경의도구상자에포함되어있는컨트롤로서화면디 자인이나내부기능들을제어하기위해제공된다. (1) (2) (1) 마우스포인터 (Pointer) (2) 픽처박스 (Picture Box) (3) (4) (3) 레이블 (Label) (4) 텍스트박스 (Text Box) (5) (6) (5) 프레임 (Frame) (6) 커맨드버튼 (Command Button) (7) (8) (7) 체크박스 (Check Box) (8) 옵션버튼 (Option Button) (9) (10) (9) 콤보박스 (Combo Box) (10) 리스트박스 (List Box) (11) (12) (11) 수평스크롤바 (Horizontal Scroll Bar) (12) 수직스크롤바 (Vertical Scroll Bar) (13) (14) (13) 타이머 (Timer) (14) 드라이브리스트박스 (Drive List Box) (15) (16) (15) 디렉토리리스트박스 (Directory List Box) (16) 파일리스트박스 (File List Box) (17) (18) (17) 도형 (Shape) (18) 선 (Line) (19) (20) (19) 이미지 (Image) (20) 데이터 (Data) (21) (21) OLE
4/33 기본컨트롤 주요기본컨트롤의기능
5/33 기본컨트롤 기본컨트롤의종류 : 도구상자에있는기본컨트롤 : 표준컨트롤 : ActiveX컨트롤 [ 프로젝트 > 구성요소 ] 컨트롤과객체 : 컨트롤은일종의클래스이며비주얼베이직의도구상자에있는아이콘 : 객체는폼에배치된컨트롤 이미우리는앞에서명령버튼 (CommandButton), 텍스트박스 (TextBox), 레이블 (Label) 과같이프로그램에서가장많이사용되는컨트롤을배웠다. 이처럼도구상자에있는아이콘이바로 기본컨트롤 이다.
6/33 Label 컨트롤 레이블컨트롤 : 레이블컨트롤은텍스트박스컨트롤과는달리실행중에포커스를갖지못함 : 문자열이나숫자를폼에보여주는컨트롤로단순히문자열을출력한다. 레이블컨트롤의속성
TextBox 컨트롤 텍스트박스 (TextBox) 컨트롤 : 문자열이나숫자형태의값을사용자가입력또는출력할수있다. : 텍스트박스에사용자가숫자를입력하더라도텍스트 ( 문자열 ) 로입력받는다. : Text속성은텍스트박스에입력되어있는문자열을나타내는속성이다. 실습 텍스트박스에 안녕하세요! 라는문자열의글자색을바꾸는프로그램을작성하시오. 객체컨트롤이름속성속성값 1 2 3 4 1 Text1 Text 안녕하세요 2 cmdr Caption 빨강 3 cmdb Caption 파랑 4 cmdg Caption 초록 Private Sub cmdr_click() Text1.ForeColor = vbred Private Sub cmdb_click() Text1.ForeColor = vbblue Private Sub cmdg_click() Text1.ForeColor = vbgreen 실습동영상 (vb5_1.swf) 7/33
8/33 TextBox 컨트롤 실습 텍스트박스에 안녕하세요! 라는문자열의속성을바꾸는프로그램을작성하시오. 객체컨트롤이름속성속성값 1 2 3 4 1 Text1 Text 안녕하세요 2 cmdbold Caption 진하게 3 cmditalic Caption 기울임꼴 4 cmdunder Caption 밑줄 Private Sub cmdbold_click() Text1.FontBold = True Private Sub cmditalic_click() Text1.FontItalic = True Private Sub cmdunder_click() Text1.FontUnderline = True 실습동영상 (vb5_2.swf)
9/33 TextBox 컨트롤 포커스 (Focus) 1 객체에마우스또는키보드를이용해서커서를위치시키는것. 2 포커스를객체에맞추려면프로그램실행중에객체를클릭하거나 SetFocus 메소드를사용한다, 3 포커스는가장자리에점선이있거나, 텍스트박스인경우에는커서가있다. ( 예 ) 다음프로그램을실행시켰을때커서가아래에있는텍스트박스에위치되도록프로그램을작성하시오. 객체컨트롤이름속성속성값 1 2 3 1 Text1 Text 공란 2 Text2 Text 공란 3 Command1 Caption 입력 Private Sub Form_Activate() Text2.SetFocus
10/33 MsgBox 함수 우리는 3 장에서프로그램실행중간단한데이터를입력받는 InputBox() 함수를배웠다. 그렇다면, 반대로사용자에게간단한메시지를출력하기위한대화상자는없는가? MsgBox 함수 사용자에게간단한메시지를전달하기위한대화상자이다. 사용자에게정보를제공하거나, 확인을하는용도로사용한다. 사용자가누른버튼의종류 ( 예, 아니오, 확인등 ) 에따라정수값을반환한다. MsgBox( 프롬프트 [, 버튼 ] [, 제목 ] [, 도움말파일, 컨텍스트 ] ) 변수 = MsgBox( 프롬프트 [, 버튼 ] [, 제목 ] [, 도움말파일, 컨텍스트 ] ) 예 ) 제목 프롬프트 ( 메시지내용 ) 버튼종류 MsgBox " 정말종료하시겠습니까?", vbyesno, " 종료확인 " 1 프롬프트 ( 메시지내용 ) 2 3 제목 버튼종류
11/33 MsgBox 함수 MsgBox 에서버튼의종류 상수 값 설명 vbokonly 0 [ 확인 ] 버튼만표시 vbokcancel 1 [ 확인 ][ 취소 ] 버튼표시 vbabortretryignore 2 [ 중단 ][ 재시도 ][ 무시 ] 버튼표시 vbyesnocancel 3 [ 예 ][ 아니오 ][ 취소 ] 버튼표시 vbyesno 4 [ 예 ][ 아니오 ] 버튼표시 vbretrycancel 5 [ 재시도 ][ 취소 ] 버튼표시 MsgBox 에서아이콘의종류 상수 값 설명 VbCritical 16 치명적오류메시지 vbquestion 32 질의메시지 vbexclamation 48 경고메시지 vbinformation 64 정보메시지
12/33 MsgBox 함수 예 ) 아래와같이느낌표모양의아이콘과 [ 예 (Y)] / [ 아니오 (N)] 버튼을나타내려면 vbexclamation+vbyesno 를입력한다. 제목 버튼 ( 아이콘 ) 프롬프트 ( 메시지내용 ) 버튼종류 MsgBox " 정말종료하시겠습니까?", vbexclamation + vbyesno, " 종료확인 " 1 프롬프트 ( 메시지내용 ) 2 버튼 ( 아이콘 ) + 버튼종류 3 제목 예 ) 아래문장과같이버튼의종류를생략하면기본값은 [ 확인 ] 버튼이나타난다. MsgBox " 비밀번호오류입니다 ",, " 오류확인 "
13/33 MsgBox 함수 아래와같이메시지박스의프롬프트 ( 메시지내용 ) 를여러줄로표시하고싶다면?. 메시지박스의프롬프트 ( 메시지의내용 ) 는하나의문자열로표현해야한다. 문자열결합연산자 : & 줄바꿈을의미하는기호상수값 : vbcrlf CR은캐리지리턴 (Carriage Return) 으로커서를현재커서가위치한줄의맨처음으로옮기는것이며, LF은라인피드 (Line Feed) 로커서를다음줄로옮기는역할을한다. 아스키코드 (ASCII) 로 CR =chr(13) 이고 LF = chr(10) 이다. 따라서, 줄바꿈기호는 chr(13) & chr(10) 으로표현가능하다. 줄바꿈을의미하는아스키코드값 : chr(13) & chr(10)
MsgBox 함수 ( 예 ) 다음두문장은동일한기능이다, 각각실행시키시오. MsgBox " 비밀번호가틀렸습니다." & vbcrlf & " 다시입력해주세요 ",, " 비밀번호오류 MsgBox " 비밀번호가틀렸습니다." & Chr(13) & Chr(10) & " 다시입력해주세요 ",, " 비밀번호오류 실습텍스트박스 2에문장을입력한후 [ 입력 ] 버튼 3을누르면텍스트박스 2의문자열이텍스트박스 1로문자열이옮겨간다. 다음입력을위하여텍스트박스 2가클리어되고커서가위치되도록프로그램을완성하시오. 객체컨트롤이름속성 1 1 Text1 Text 2 Text2 Text 3 Command1 Caption 2 3 14/33
TextBox 컨트롤 주의사항 : 텍스트박스에두줄이상출력하려면 MultiLine 속성의값을 True 로 정의해줘야한다. 즉, Text1 객체의 MultiLine 속성을 True 로설정한다.. 완성된프로그램은다음과같다. Private Sub Command1_Click() Text1.Text = Text1.Text & Text2.Text & vbcrlf Text2.Text = "" Text2.SetFocus Private Sub Form_Activate() Text2.SetFocus Private Sub Form_Load() Text1.Text = "" Text2.Text = "" 실습동영상 (vb5_3.swf) 15/33
16/33 MsgBox 함수 변수 = MsgBox( 프롬프트 [, 버튼 ] [, 제목 ] [, 도움말파일, 컨텍스트 ] ) 예 ) k = MsgBox(" 정말종료하겠습니까?", vbyesno, " 종료확인 ") ( 실행순서 ) 1 아래와같은메시지박스를출력한다. 2 사용자가선택한버튼에해당하는상수값이변수 k 에반환한다. 만약 [ 예 (Y)] 버튼을누르면상수 6 이반환되며, [ 아니오 (N)] 버튼을누르면상수 7 이반환되어변수 k 에저장된다. 그럼, 반환되는상수를모두외워야하나요?
17/33 MsgBox 함수 [ 예 (Y)] 버튼을누르면 MsgBox 는 vbyes 값을반환하며, [ 아니오 (N)] 버튼을누르면 MsgBox 는 vbno 값이반환된다. MsgBox 에서 [ 예 (Y)] 버튼을누르면반환되는값이상수 6 대신 vbyes 값이반환되며, [ 아니오 (N)] 버튼을누르면반환되는값이상수 7 대신 vbno 가반환된다고생각하면된다. 이렇듯 vb 라는접두어를붙여서표기되는기호화된상수 (Symbolic Constant) 가이미 비주얼베이직패키지내에존재하기때문에편리하게프로그램을작성할수있습니다. vbyes, vbno, vbok, vbcancel, vbabort, vbretry, vbignore 앞으로배우겠지만색깔도 vbred, vbyellow, vbblack, vbwhite 등을사용한다.
18/33 MsgBox 함수 ( 예 ) [ 종료 ] 라는명령버튼을누르면 정말종료하겠습니까? 라고메시지박스에표시하고사용자의 [ 예 ]/[ 아니오 ] 버튼에따라프로그램이종료될수있도록프로그램을작성하시오. Private Sub cmdexit_click() k = MsgBox(" 정말종료하겠습니까?", vbyesno, " 종료확인 ") If k = vbyes Then End. 프로그램을분석하면다음과같다. 1 메시지박스가나타나며, 사용자가 [ 예 (Y)] 버튼을누르면 vbyes 값이변수 k에저장된다. 2 만약변수 k에저장된값이 vbyes 값과같다면프로그램을종료한다. 3 End는프로그램을종료하라는명령이다.
19/33 TextBox 컨트롤 실습 (114쪽) 텍스트박스에암호를입력하여암호가맞으면해당메시지를출력하고틀리면에러메시지를출력하는프로그램. 1 폼에레이블과텍스트박스컨트롤을아래와같이디자인한후속성을지정한다. 5 1 2 3 4 6 객체컨트롤이름속성 1 txtname Text = 2 txtpassword 3 txttel Text = 4 txtaddr Text = PasswordChar = # Text = 5 cmdinput Caption = 입력 6 cmdexit Caption = 종료 2 간단하게프로그램을작성하면다음과같다. Private Sub cmdexit_click() End
20/33 TextBox 컨트롤. Private Sub cmdinput_click() Dim name, password, tel, addr As String Dim bimil As String bimil = hello" name = txtname.text password = txtpassword.text tel = txttel.text addr = txtaddr.text If password = bimil Then MsgBox " 아이디 : " & name & Chr(10) & Chr(10) & _ " 전화번호 : " & tel & Chr(10) & Chr(10) & _ " 주소 : " & addr, vbokcancel, " 입력내용 " Else MsgBox " 비밀번호정보오류!!!", vbokcancel + vbexclamation, " 오류대화상자 "
21/33 TextBox 컨트롤 3 프로그램을실행하면다음과같다.. 실습동영상 (vb5_4.swf)
22/33 Option Button 컨트롤 프레임컨트롤 다른컨트롤들을그룹화시키는기능을갖는다. 프레임으로그룹화된컨트롤들은해당프레임과 함께이동, 삭제가가능하다. 주로 CheckBox 나 OptionButton 을그룹화하는데많이사용된다. 그룹화할경우에프레임컨트롤을먼저그린후, 프레임내부에속하는컨트롤들을그린다. 옵션버튼 (Option Button) 옵션버튼은여러개의선택항목중하나의항목만을선택할때사용한다. ( 다른언어에서는 라디오버튼 (Radio Button) 으로불린다.) 속성 설명 Value Style 옵션버튼이선택되었는지여부 = True : 선택함 = False : 선택안함 옵션버튼의표현양식 = 0 : 표준 = 1 : 그래픽
23/33 Option Button 컨트롤 실습아래그림처럼폼을디자인하고옵션버튼을이용하여남자 / 여자를선택하면메시지박스로이를출력하는프로그램을작성하시오. 객체컨트롤이름속성 1 2 3 1 OptMan Value = True 2 optwoman Value = False 3 cmdok Caption = 확인 Private Sub cmdok_click() If optman.value = True Then MsgBox " 당신은남자입니다 " If optwoman.value = True Then MsgBox " 당신은여자입니다 " 실습동영상 (vb5_5.swf)
24/33 Option Button 컨트롤 실습 아래그림처럼폼을디자인하고옵션버튼을선택하면해당되는각국가의수도가텍스트박스에 출력되도록프로그램을작성하시오. 객체컨트롤이름속성 1 2 3 4 5 실행결과 6 1 optkorea Value = True 2 optjapan Value = False 3 optchina Caption = 확인 4 optindia 5 optusa 6 txtcapital
25/33 Option Button 컨트롤 각옵션버튼 optkorea, optjapan, optchina, optindia, optusa 객체를선택했을때해당되는 각나라의수도를텍스트박스 (txtcapital) 에출력한다. Private Sub optchina_click() If optchina.value = True Then txtcapital.text = "BEIJING" Private Sub optindia_click() If optindia.value = True Then txtcapital.text = "NEW DELHI" Private Sub optjapan_click() If optjapan.value = True Then txtcapital.text = "TOKYO" Private Sub optkorea_click() If optkorea.value = True Then txtcapital.text = "SEOUL" Private Sub optusa_click() If optusa.value = True Then txtcapital.text = "WASHINGTON D.C." 실습동영상 (vb5_6.swf)
26/33 CheckBox 컨트롤 체크박스 (CheckBox) 컨트롤 체크박스컨트롤은여러개의항목중하나이상의항목을선택할때사용한다. 속성 설명 Value Style 체크박스의체크되어있는지확인 = 0 : 확인안함 = 1 : 확인 = 2 : 연회색 체크박스의표현양식 = 0 : 표준 = 1 : 그래픽 ( 예 ) 아래폼과같이체크박스컨트롤을삽입하여디자인하였다. 체크박스에원하는메뉴를체크한후 [ 주문 ] 버튼을누르면해당되는메뉴의값이텍스트박스에출력되며, [ 취소 ] 버튼을누르면 모두삭제되는프로그램을작성하시오. 우선 TextBox 컨트롤의 MultiLine 속성을 True 로설정 하며, 텍스트박스에서줄바꿈을표시하려면 vbcrlf 또는 chr(13) & chr(10) 을이용한다.
27/33 CheckBox 컨트롤 프로그램소스 (ver.1) Private Sub Command1_Click() If Check1.Value = 1 Then Text1.Text = Text1.Text & " 비빔밥 " & vbcrlf If Check2.Value = 1 Then Text1.Text = Text1.Text & " 육개장 " & vbcrlf If Check3.Value = 1 Then Text1.Text = Text1.Text & " 갈비탕 " & vbcrlf If Check4.Value = 1 Then Text1.Text = Text1.Text & " 설렁탕 " & vbcrlf Private Sub Command2_Click() Text1.Text = "" Check1.Value = 0: Check2.Value = 0: Check3.Value = 0: Check4.Value = 0 실습동영상 (vb5_7(1).swf) 위프로그램에서만약메뉴의내용이변경되었다면폼의디자인은당연히변경되어야할것이며, 프로그램소스도변경되어야한다. 위문장에서 비빔밥 은 Check1.Caption으로바꾸면메뉴의내용이바뀌더라도프로그램의내용을변경하지않아도될것이다.
28/33 CheckBox 컨트롤 프로그램소스 (ver.2) Private Sub Command1_Click() If Check1.Value = 1 Then Text1.Text = Text1.Text & Check1.Caption & vbcrlf If Check2.Value = 1 Then Text1.Text = Text1.Text & Check2.Caption & vbcrlf If Check3.Value = 1 Then Text1.Text = Text1.Text & Check3.Caption & vbcrlf If Check4.Value = 1 Then Text1.Text = Text1.Text & Check4.Caption & vbcrlf Private Sub Command2_Click() Text1.Text = "" Check1.Value = 0: Check2.Value = 0: Check3.Value = 0: Check4.Value = 0 실습동영상 (vb5_7(2).swf)
29/33 CheckBox 컨트롤 실습 (124 쪽 ) : 체크박스와옵션버튼컨트롤 : 설문조사하여선택된내용을출력하는프로그램 1 컨트롤을먼저디자인한다. 단, 프레임컨트롤을먼저디자인하고체크박스와옵션버튼컨트롤을 디자인한다. 1 6 7 객체컨트롤이름속성 1 txtname Text = 2 3 4 5 8 9 2 chkseoul Caption = 서울 3 chkbusan Caption = 부산 4 chkincheon Caption = 인천 5 chkkwangju Caption = 광주 6 optman Caption = 남자 7 optwoman Caption = 여자 8 cmdsee Caption = 보기 9 cmdexit Caption = 종료 2 [ 보기 ] 와 [ 종료 ] 컨트롤을더블클릭하여다음과같이코딩한다. Private Sub cmdexit_click() End
30/33 CheckBox 컨트롤 Private Sub cmdsee_click() Dim TextStr As String TextStr = " 이름 : " & txtname.text & vbcrlf & vbcrlf If optman.value = True Then TextStr = TextStr & " 성별 : " & " 남자 " & vbcrlf & vbcrlf Else TextStr = TextStr & " 성별 : " & " 여자 " & vbcrlf & vbcrlf TextStr = TextStr & " 거주지역 : " If chkseoul.value = 1 Then TextStr = TextStr & chkseoul.caption & " " If chkbusan.value = 1 Then TextStr = TextStr & chkbusan.caption & " " If chkincheon.value = 1 Then TextStr = TextStr & chkincheon.caption & " " If chkgyeong.value = 1 Then TextStr = TextStr & chkkwangju.caption & " " MsgBox TextStr, vbokcancel, " 설문조사 "
31/33 CheckBox 컨트롤 3 실행결과 실습동영상 (vb5_8.swf)
연습문제 문제 ] 다음그림과같이폼을디자인하고글자색과글자모양을선택하면입력된문자열의 속성이변경되어표시되도록프로그램을작성하시오. 글자색을바꾸는속성은 ForeColor ( 예 ) Text1.ForeColor = vbred 색을지정하는기호상수값은 vbred, vbblue 등 글자모양을바꾸는속성은 FontBold, FontItalic, FontUnderline 등이있다. ( 예 ) Text1.FontBold = True ( 실행예 ) 32/33
33/33 연습문제 Private Sub cmdok_click() If optred.value = True Then txtstr.forecolor = vbred If optgreen.value = True Then txtstr.forecolor = vbgreen If optblue.value = True Then txtstr.forecolor = vbblue If optblack.value = True Then txtstr.forecolor = vbblack If chkbold.value = 1 Then txtstr.fontbold = True If chkitalic.value = 1 Then txtstr.fontitalic = True If chkunderline.value = 1 Then txtstr.fontunderline = True 실습동영상 (vb5_9.swf)
윈도우즈프로그래밍 (1) ( 담당교수 : 박호균 )