2 장비주얼베이직 6.0 프로그램시작하기
2-1 비주얼베이직 6.0 프로그램의작성단계 비주얼베이직에서의프로그램은일련의두가지단계를거치면서프로그램을작성 첫단계인시각적단계에서는화판에그림을그리듯이폼위에여러컨트롤들을하나씩올려놓고이렇게올려놓은컨트롤에자기마음에드는색상 ( 속성 ) 을지정 두번째단계로하는일을지정을하는것이직접프로그램을작성하기위한코드프로그래밍단계 < 처리순서 > 시각적프로그래밍단계 폼과컨트롤을배치하기 ( 모양꾸미기 ) 폼과컨트롤의속성지정하기 코드프로그래밍단계 폼과컨트롤에코드연결하기
2-2 프로젝트만들기 프로젝트란비주얼베이직프로그램을작성하면서동일한목적으로생성되는폼과컨트롤그리고코드를포함한여러파일들의유기적인집합 vbp 라는확장자를가진다. 새프로젝트 대화상자에서 표준 EXE 를선택했을때의화면
2-2 프로젝트만들기 프로젝트이름은우리가프로그램을작성했을때그프로그램이어떤프로그램인지를알수있도록지정 메뉴바에서 [ 파일 ] 메뉴를선택한후 [ 프로젝트를다른이름으로저장 ] 을선택하면폼 (Form) 이름을지정하기위한대화상자가나온다. [ 파일이름 ] 의입력상자에폼 (Form) 이름을입력하여지정한후 [ 저장 ] 단추를눌러서저장
2-2 프로젝트만들기 폼파일은 frm 이라는확장자를가지면서저장 폼 (Form) 이름을지정하고나면다음으로프로젝트이름을물어보는대화상자가나타남 프로젝트이름을지정하고 [ 저장 ] 단추를클릭해서저장 프로젝트파일은 vbp 라는확장자를가지며비주얼베이직이프로젝트를구성하는데필요한각종정보들을포함
컨트롤 2-3 프로그램작성을위한기본요소의개념 기본컨트롤의종류 컨트롤편집 마우스포인터 (Pointer) 컨트롤을편집할때사용 별도의컨트롤이선택되지않았을때선택되어있는, 일종의가상 (dummy) 컨트롤 데이터컨트롤 (Data Control) 데이터베이스의열기, 검색, 삽입 / 삭제 / 갱신, 종료등의작업을수행 윈도우구성요소컨트롤 윈도우의구성요소들을컨트롤화시켜놓은버튼들 윈도우에서기본적으로제공해주는윈도우클래스에해당하는것들
컨트롤 2-3 프로그램작성을위한기본요소의개념 기본컨트롤의종류 윈도우구성요소컨트롤 픽쳐박스 (Picturen Box) 그래픽메소드를가지고있는컨트롤 레이블 (Label) 레이블을표시 텍스트박스 (Text Box) 텍스트를쓰고편집할수있게해준다 프레임 (Frame) 관련있는컨트롤들을모아서관리 커맨드버튼 (Command Button) 클릭해서명령을내릴수있는버튼모양의컨트롤
컨트롤 2-3 프로그램작성을위한기본요소의개념 기본컨트롤의종류 윈도우구성요소컨트롤 체크박스 (Check Box) On/Off 중의한가지상태를갖는컨트롤 옵션버튼 (Option Button) 현재프레임안에있는옵션버튼중에서는단하나만이 On 될수있다 콤보박스 (Combo Box) 텍스트박스와리스트박스를하나로합쳐놓은컨트롤 리스트박스 (List Box) 여러개의텍스트중에하나혹은여러개를선택할수있도록해주는컨트롤 수평스크롤바 (HScroll Bar) 수평방향의스크롤바
컨트롤 2-3 프로그램작성을위한기본요소의개념 기본컨트롤의종류 윈도우구성요소컨트롤 수직스크롤바 (VScroll Bar) 수직방향의스크롤바 타이머 (Timer) 일정시간마다자동으로타이머이벤트를발생시키는컨트롤. 파일컨트롤 파일명이나디렉토리등을나열해주는컨트롤 드라이브리스트박스 (Drive List Box) 디스크드라이브목록을나타내는리스트박스 디렉토리리스트박스 (Diretory List Box) 디렉토리목록을나타내는리스트박스 파일리스트박스 (File List Box) 현디렉토리의파일내용을나타내는리스트박스
컨트롤 2-3 프로그램작성을위한기본요소의개념 기본컨트롤의종류 그래픽컨트롤 도형 (Shape) 원, 타원, 사각형등의기본도형 선 (Line) 양끝점을잇는직선 이미지 (image) 이미지를표시 그래픽메소드가없는대신메모리를덜소모 비트맵이미지를표시할목적이라면픽쳐박스보다는이미지컨트롤을사용하는것이메모리절약
컨트롤 2-3 프로그램작성을위한기본요소의개념 기본컨트롤의종류 데이터베이스컨트롤 데이터베이스개체 (DAO) 를컨트롤화시킨것 DB(Database) 프로그램을작성할것이라면이컨트롤을잘활용 OLE 컨트롤 OLE 컨트롤 (OLE) OLE 로등록된개체를삽입 유용성이많이퇴색된컨트롤
2-3 프로그램작성을위한기본요소의개념 컨트롤의이름작성 객체의이름은그객체의특성을잘나타내어요약 객체의종류에따라다른접두사를붙임으로써객체를구분 txtname 이라는객체가있다면앞의 txt 라는접두사에의해텍스트박스이며, 아마도 Name, 즉이름과관련된객체일것이라는예상 원하는이름컨트롤종류명명법에의한이름 Test Tel Hello Exit Mountain 이상한 _ 컨트롤 폼텍스트박스레이블커맨드버튼픽쳐박스종류불명 frmtest txttel lblhello cmdexit picmountain ctr 이상한 _ 컨트롤
2-3 프로그램작성을위한기본요소의개념 코드윈도우와오브젝트브라우저 코드윈도우 ( 프로그램작성을위한편집기 ) 코드윈도우는폼이나콘트롤을더블클릭하면창이나타난다. 비주얼베이직의모듈에코드를입력하고, 나타내고, 편집, 수정하는데사용되는편집기 프로그램편집을쉽게하기위해왼쪽상단에 오브젝트박스 를배치 코딩하고자하는오브젝트를쉽게선택할수있게구성 오른쪽리스트박스에는 이벤트프로시저 박스를두어각오브젝트의이벤트에코딩을쉽게할수있도록구성
2-3 프로그램작성을위한기본요소의개념 코드윈도우와오브젝트브라우저 코드윈도우 ( 프로그램작성을위한편집기 ) 비주얼베이직은오브젝트중심으로코딩 오브젝트박스에나타난객체이름은현재프로시저가어떤객체에대한것인지를나타냄 객체에대한프로시저인경우거의이벤트핸들러 오브젝트박스에 일반 혹은 general 이라는값이선택되었다면현재코딩중인프로시저는일반프로시저 비주얼베이직은선택된오브젝트에대한이벤트중심으로코딩 오브젝트박스에객체가선택되었다면, 대상이되는객체는대부분이벤트핸들러 프로시저박스에 선언 혹은 Declaration 이선택되어있다면현재코딩중인부분은변수나상수의선언부라는것을의미
2-3 프로그램작성을위한기본요소의개념 코드윈도우와오브젝트브라우저 오브젝트브라우저 현재프로젝트에서사용가능한객체타입들이어떤메소드와속성, 그리고이벤트를갖는지한눈에보여주는비주얼베이직의 Addin 중하나 F2 키를누르면오브젝트브라우저가나타난다.
2-3 프로그램작성을위한기본요소의개념 속성 ( 프로퍼티 ) 속성의개념 속성 (Property) 이란각컨트롤이갖는속성을의미하며프로퍼티라고한다. 텍스트박스에쓰여질내용등이텍스트박스에있어서는프로퍼티가되는것 컨트롤로서다른컨트롤과구분되는모든속성이프로퍼티가되는것 프로퍼티상태의조회와편집의핵심은프로퍼티윈도우 프로퍼티윈도우는선택된컨트롤의프로퍼티를알파벳순, 혹은항목별로나열하고, 각각의종류별로편리하게프로퍼티를편집
2-3 프로그램작성을위한기본요소의개념 속성 ( 프로퍼티 ) 속성의개념 컨트롤의위치를나타내는프로퍼티는숫자의값을가짐 텍스트박스의내용과같은프로퍼티는문자열의형태를가짐 프로퍼티편집에관계된기능도비주얼베이직이버전업을반복하는동안계속해서발전 색상을나타내는프로퍼티를편집할때엔별도의화면이나타남 폰트프로퍼티를편집할때엔폰트를선택하는다이얼로그박스가나타남
2-3 프로그램작성을위한기본요소의개념 속성 ( 프로퍼티 ) 속성의개념 비트맵이미지프로퍼티를편집할때엔비트맵파일을고르는다이얼로그박스가나타남 프로퍼티의편집은코드로도가능 프로퍼티윈도우를이용해편집하는것을 디자인 - 타임에디팅 (Design-time Editing) 실행시코드를이용해편집하는것을 런 - 타임에디팅 (Run-time Editing) Name 과같은프로퍼티는디자인 - 타임에만편집이가능 리스트박스의 ListIndex 와같은프로퍼티는런 - 타임에만읽고쓰기가가능 기본적인프로퍼티를파악한후, 각컨트롤마다차이가나는프로퍼티만추가로파악
2-3 프로그램작성을위한기본요소의개념 속성 ( 프로퍼티 ) 속성의설정 속성은디자인타임중에서속성윈도우를통해서설정 설정된속성은프로그램이실행될때마다초기값으로사용 디자인타임중에는다음과같이객체속성값을설정 객체를설정 속성윈도우를활성화 바꾸기원하는속성을찾는다. 속성윈도우내에값을직접입력 런타임중에객체속성값을제어하기위해서는문법의코드구문을사용
2-3 프로그램작성을위한기본요소의개념 속성 ( 프로퍼티 ) 속성의설정 종류에따라서런타임중에는읽기만가능한속성 Object.Property = Expression 텍스트박스인 txtmessage 에 Hello, World 를나타내려면 Text 속성을다음과같이코딩 txtmessage.text = "Hello, World!" 런타임중에속성값을알아내는방법 Variable = Object.Property txtname 이라는텍스트박스의 Text 속성에저장된내용을 setusername 이라는변수에저장 setusername = txtname.text
2-3 프로그램작성을위한기본요소의개념 자주사용되는속성의소개 Name(Design-time Only) 컨트롤의이름 비주얼베이직내에선변수와같이취급되기때문에변수이름정하는규칙이그대로적용 이프로퍼티는오직디자인 - 타임에만편집 [ 컨트롤 ].Name Name 프로퍼티는문자로시작되어야하며최대 40 자까지지정가능 Index 컨트롤의배열이생성되었을때그인덱스를나타낸다 동일한이름을가진컨트롤을생성하면선택적으로컨트롤배열을생성하며이인덱스가 0 부터시작하여차례로카운트 번호에해당하는값은 0 부터 32767
2-3 프로그램작성을위한기본요소의개념 자주사용되는속성의소개 Appearance(Design-time Only) 컨트롤의시각적인유형을결정하는프로퍼티 런 - 타임에서는읽기전용이된다. [ 컨트롤 ].Apperance [=0/1] Appearance 속성설정 값 설명 0 평면 (Flat). 컨트롤과폼을시각적인효과없이그린다. 1( 기본값 ) 3D. 컨트롤을 3 차원효과를사용하여그린다.
2-3 프로그램작성을위한기본요소의개념 자주사용되는속성의소개 ForeColor, BackColor BackColor 는컨트롤의배경색을나타내는프로퍼티 ForeColor 는컨트롤의텍스트나그래픽을표시하는데사용되는색을나타내는프로퍼티 [ 컨트롤 ].BackColor [= 컬러값 ] [ 컨트롤 ].ForeColor [= 컬러값 ] 컬러값은해당색상의빨강, 초록, 파랑 (=RGB) 값을포함한 32 비트정수값 도스 (DOS) 의기본바이오스컬러 16 색을지정한 QBColor() 함수를사용가능 컬러값으로사용될수있는값의범위는 0 에서 16,777,215 (&HFFFFFF)
2-3 프로그램작성을위한기본요소의개념 자주사용되는속성의소개 DragMode 컨트롤의 Drag&Drop( 끌어다놓기 ) 동작이수동인가자동인가를설정 [ 컨트롤 ].DragMode [=0/1] DragMode 를나타내는상수값 상수값설명 vbmanual ( 기본값 ) 0 수동 :Drag 시작을위해컨트롤의 Drag 메소드를사용해야한다. vbautomatic 1 자동 : 컨트롤을드래그하면자동으로 Drag 작업을시작한다. DragMode 가 vbautomatic 으로설정되었을때, 컨트롤은마우스이벤트에응답하지않는다 Drag&Drop 작업을진행하는동안, 특정컨트롤위에마우스포인터가위치하고있으면해당컨트롤에는 DragOver 이벤트가발생 컨트롤이 Drag&Drop 작업중일때엔다른마우스또는키보드이벤트인 KeyDown, KeyPress, KeyUp, MouseDown, MouseMove, MouseUp 을인식하지못한다
2-3 프로그램작성을위한기본요소의개념 자주사용되는속성의소개 MousePointer 런 - 타임시컨트롤위에마우스가위치하고있을때나타나는마우스포인터모양 [ 컨트롤 ].MousePointer [= 값 ] 마우스포인터를나타내는값 상수값설명 vbdefault ( 기본값 ) vbarrow vbcrosshair vbibeam vbiconpointer vbsizepointer vbsizenesw vbsizens vbsizenwse vbsizewe vbuparrow vbhourglass vbnodrop vbarrowhourglass vbarrowquestion vbsizeall vbcustom 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 99 각컨트롤에따른기본모양화살표십자모양포인터 I 자막대아이콘 ( 사각형내의작은사각형 ) 크기 ( 동서남북을가리키는 4 방향화살표 ) NE SW 크기 ( 북동쪽과남서쪽을가리키는화살표 ) N S 크기 ( 북쪽과남쪽을가리키는화살표 ) NW SE 크기 ( 북서쪽과남동쪽을가리키는화살표 ) W E 크기 ( 서쪽과동쪽을가리키는화살표 ) 위화살표모래시계 ( 대기 ) 놓기금지화살표와모래시계화살표와물음표모든크기 MouseIcon 속성으로지정한사용자정의마우스커서
2-3 프로그램작성을위한기본요소의개념 자주사용되는속성의소개 TabIndex, TabStop TabIndex 는 [ 탭키 ] 에의해포커스를가질수있는컨트롤간의우선순위 컨트롤이탭키에의해포커스를가질수있는가를결정 [ 컨트롤 ].TabIndex [= 값 ] [ 컨트롤 ].TabStop [=True/False] TabIndex 는적절한정수값을입력하는것으로끝난다 TabStop 프로퍼티의설정값 값 설명 True ( 기본값 ) 컨트롤이탭키에의해포커스를가질수있게한다. False 탭키에의해자신의차례가되었음에도포커스가자신이아닌다음컨트롤로지나치게한다.
2-3 프로그램작성을위한기본요소의개념 자주사용되는속성의소개 OLEDropMode 컨트롤이 OLE Drop 연산을하는방법을설정 [ 컨트롤 ].OLEDropMode [= 값 ] 모드를설정하는상수값 상수값설명 vboledropnone ( 기본값 ) 0 없음. 해당컨트롤은 OLE Drop 을적용하지않으며, 드래그중인커서가이컨트롤위로나타나면 No Drop 커서가나타난다. vboledropmanual 1 수동. 해당컨트롤은 OLE Drop 이벤트를시작하며, 이것은코드의 OLE Drop 이벤트핸들러를발생시킨다. vboledropautomatic 2 자동. 해당컨트롤은자동으로 OLE Drop 를적용시킨다.
2-3 프로그램작성을위한기본요소의개념 자주사용되는속성의소개 Enabled 컨트롤이활성화될수있는가의여부를지정 이것이 False 이면포커스를가질수없기때문에그림이나다를바가없다 [ 컨트롤 ].Enabled [=True/False] Visible 화면에컨트롤을보이는가의여부를지정 필요에따라이프로퍼티를 Off 시켜놓고선택적으로표시 [ 컨트롤 ].Visible [=True/False] Font 글자가있는컨트롤의경우에그글자의글꼴을지정 초기상태는 'Ms Sans Serif' 이며글자의크기는 8 로지정 한글을쓰려면적절한폰트로바꾸는것이좋다.
2-3 프로그램작성을위한기본요소의개념 자주사용되는속성의소개 Font [ 컨트롤 ].Font [= 폰트 ] [ 컨트롤 ].Font.Name [= 문자열 ] [ 컨트롤 ].Font.Size [= 값 ] [ 컨트롤 ].Font.Bold [=True/False] [ 컨트롤 ].Font.Italic [=True/False] [ 컨트롤 ].Font.StrikeThrough [=True/False] [ 컨트롤 ].Font.Underline [=True/False] [ 컨트롤 ].Font.Weight [= 값 ] 폰트컬렉션의각프로퍼티는다음과같은의미 프로퍼티 설명 Bold 글자를두껍게한다. Italic 글자를약간기울어지게한다. Name 폰트에해당하는문자열을지정한다. Size 글자의크기를조정한다. 최대값은 2048이다. StrikeThrough 글자의가운데를가로지르는선을그린다. Underline 글자의아래에선을그린다. Weight 폰트의두께를조정한다. 보통은 400, Bold는 700의값을갖는다.
메소드 2-3 프로그램작성을위한기본요소의개념 메소드의개념 메소드 (Method; 방법 ) 란개체에포함된고유한동작을의미 서브루틴 / 함수와흡사하지만특정한개체를대상으로한다는점에서서브루틴 / 함수와는구별 개체이름과메소드사이에. 을하나찍어주는것 메소드를호출하는이름만차이가날뿐, 인수의전달이라든가결과값을얻는방식은프로시저 / 함수와거의동일 컨트롤도개체이기때문에각각의메소드를가지고있다 메소드의작성 메소드는객체가액션 (Action) 이나일을수행하도록하는방법 메소드를이용하는방법은두가지 메소드가인자를가지고있는가? 메소드가값을리턴하는가? 만약그렇다면그값을사용하기를원하는가?
메소드 2-3 프로그램작성을위한기본요소의개념 메소드의작성 메소드는다음의문법 Object.Method [arg1, arg2,...] 메소드가값을리턴하도록할때인자들을포함하는괄호를사용 폼에 Hello, World! 라는말을나타내는메소드 form1.print "Hello, World! 프린터출력할때 Hello, World 라는말을인쇄하는메소드 Printer.print "Hello, World!" Printer.EndDoc
메소드 2-3 프로그램작성을위한기본요소의개념 메소드의종류 Drag 몇몇컨트롤 (Line, Menu, Shape, Timer 등 ) 을제외한컨트롤의드래그작업을시작하거나끝내거나, 취소 object.drag 동작값 동작값에해당하는상수 상수 값 설명 vbcancel 0 드래그작업을취소한다. vbbegindrag 1 드래그를시작한다. vbenddrag 2 드래그를끝내고컨트롤을드롭한다.
메소드 2-3 프로그램작성을위한기본요소의개념 메소드의종류 Drag 컨트롤의 DragMode 프로퍼티를수동 (=0) 으로설정했을경우에만이 Drag 메소드가효과 드래그중에는마우스포인터의모양도변한다 Move 메소드 컨트롤을이동 컨트롤의수평너비와수직폭도함께조정할수있다 Left, Top, Width, Height 프로퍼티를동시에세트하는메소드 object.move Left, Top, Width, Height Move 메소드에서사용하는인수의단위는 ScaleMode 에근거하여결정 이컨트롤이폼일경우에는좌표시스템이항상트윕단위
메소드 2-3 프로그램작성을위한기본요소의개념 메소드의종류 Refresh 컨트롤을다시그린다 object.refreshmove 메소드 Refresh 메소드를사용하는것은대체로다음의경우 그래픽메소드를사용한컨트롤을완전히다시표시할경우 다른폼을불러오는동안하나의폼을완전히표시할경우 FileListBox 컨트롤과같은파일시스템목록상자의내용을갱신하는경우 Data 컨트롤의데이터구조를갱신하는경우 Refresh 메소드가그래픽메소드를갖는컨트롤에사용될때에는내부적으로 Paint 이벤트를발생
메소드 2-3 프로그램작성을위한기본요소의개념 메소드의종류 SetFocus 컨트롤로입력포커스를가져오는기능을하는메소드 object.setfocus 이메소드를사용할수있는컨트롤은반드시포커스를가질수있는컨트롤 Enabled 프로퍼티가 False 로설정된경우에도컨트롤은포커스를가져올수없다 Enabled 프로퍼티가 False 일때엔 SetFocus 메소드를호출하기전에먼저그프로퍼티를 True 로변경
이벤트 2-3 프로그램작성을위한기본요소의개념 이벤트의개념 이벤트는객체에일어나는사건 이벤트설정 Event-Driven 윈도우전반에걸쳐서동일하게적용되는개념 어떤객체에일어난사건에대해서반응함으로써작업이이루어진다. 만약버튼이눌렸다면버튼에는클릭이벤트가발생 클릭이벤트에대한핸들러를준비하였으면윈도우는이핸들러내의코드를실행 윈도우의이벤트는아주종류가많으며, 또객체에따라서각각고유한이벤트들을갖게된다.
이벤트 2-3 프로그램작성을위한기본요소의개념 이벤트프로시저 객체의특정이벤트가발생했을때수행되는코드묶음 문법 Sub ObjectName_EvaneName(arg1, arg2,...) 다음예제는 Command1 이라는이름을가진버튼이눌린경우, 눌렸습니다. 라는메시지를화면에보이도록한다 폼에 Command 버튼을추가한후커멘드버튼을두번클릭하면프로그램을넣을수있는코드편집윈도우가나타난다. Sub Command1_Click() Msgbox " 눌렸습니다!" End Sub
2-4 프로그램작성하기 Windows 프로그램의작성 Windows 프로그래밍을하는데있어서가장중요한것은이프로그램이과연무슨일을하는프로그램인가를정의하는일 비주얼베이직에서의입출력은어떻게정의해야하는가. 정답은컨트롤이그역할을담당 컨트롤의구현 실습 2-1 자신의성명을입력하면프로그램은사용자의이름과함께 안녕하세요 라고출력하는프로그램을작성
2-4 프로그램작성하기 컨트롤의구현 컨트롤추가 사용자의이름을입력받는다. 사용자의이름과함께 안녕하세요 를출력 컨트롤배치 폼위에배치하기위한컨트롤을컨트롤박스에서선택 사용하려는컨트롤위에서마우스버튼을한번누른후폼위에서원하는크기만큼을마우스를누른상태에서이동을하면선택한컨트롤이생성
2-4 프로그램작성하기 컨트롤의구현 컨트롤배치 사용하려는컨트롤들을원하는위치에알맞은크기로폼위에배치한화면 컨트롤의속성설정 컨트롤들을배치한후에는각컨트롤들의속성을지정 안녕하세요 프로그램에서도텍스트박스가두개사용 입력에쓰이는텍스트박스는 txtinput, 출력에쓰이는텍스트박스는 txtoutput 이라이름을설정
2-4 프로그램작성하기 컨트롤의구현 컨트롤의속성설정 같은컨트롤이지만이름을달리하는이유 두개의컨트롤이름이같으면어느텍스트박스를선택해야할지를모르기때문 컨트롤들의이름을정하는데있어서각컨트롤의기능을잘알수있도록사용자가정하는컨트롤이름앞에선행자를붙이는것을원칙 일반적인컨트롤의이름을구분하기위한선행자들 컨트롤 선행자 컨트롤 선행자 PictureBox pic VscrollBar vsb Label lbl Timer tmr TextBox txt DriveListBox drv Frame fra DirListBox dir CommandButton cmd FileListBox fil CheckBox chk Shape shp OptionButton opt Line lin ListBox lst Image img ComboBox cbo Data dat HscrollBar hsb form frm
2-4 프로그램작성하기 컨트롤의구현 컨트롤의속성설정 객체의이름은그객체의특성을잘나타내어요약하는것이어야생산성이높아진다 객체의종류에따라다른접두사를붙임으로써객체를구분 txtname 이라는객체가있다면앞의 txt 라는접두사에의해텍스트박스이며, 아마도 Name, 즉이름과관련된객체일것이라는예상 컨트롤표시어사용예제 CheckBox chk chkreadonly ComboBox cbo cboenglish CommandButton cmd cmdexit CommonDiallogBox dlg dlgfileopen Form frm frmentry Label lbl lblhelpmessage ListBox lst lstpolicycodes Menu mnu mnufileopen Picture pic picvga TextBox txt txtlastname
2-4 프로그램작성하기 컨트롤의구현 개체별속성창지정 안녕하세요 컨트롤별속성설정값 frmhello 컨트롤의속성 컨트롤이름 frmhello lblinput cmdinput txtinput 컨트롤종류 폼 라벨 명령버튼 텍스트박스 사용된속성 (Name) = frmhello Caption = 안녕하세요... (Name) = lblinput Caption = 이름을입력하세요 (Name) = cmdinput Caption = 입력 (Name) = txtinput Text = txtoutput 텍스트박스 (Name) = txtoutput Text =
2-4 프로그램작성하기 컨트롤의구현 개체별속성창지정 lblinput 컨트롤의속성 cmdinput 컨트롤의속성
2-4 프로그램작성하기 컨트롤의구현 개체별속성창지정 txtinput 컨트롤의속성 txtoutput 컨트롤의속성
2-4 프로그램작성하기 컨트롤의구현 컨트롤에대한코드프로시저작성 각컨트롤이나폼을더블클릭하거나 [ 보기 ] 메뉴에서 [ 코드 ] 항목을클릭하거나프로젝트탐색기창에서코드버튼을클릭하면 Code Window 가니티남
2-4 프로그램작성하기 컨트롤의구현 컨트롤에대한코드프로시저작성 오른쪽상단의리스트박스에서마우스나키보드에서일어날수있는경우의목록들이나열 나열된리스트항목을선택하게되면그창에서작성된코드는그항목이발생되는경우에만실행 Windows 는 Event Driven 방식 Windows 가미리정해놓은 Event 가발생하게되면 Windows 는그 Event 에따라일정한행동 비주얼베이직에서는각컨트롤마다 Event 를정할수있게 Code Window 에서제공
2-4 프로그램작성하기 컨트롤의구현 컨트롤에대한코드프로시저작성 작성된코드는 cmdinput 컨트롤에 Click 이벤트가발생했을때즉, 입력버튼을마우스로클릭했을때실행
2-4 프로그램작성하기 컨트롤의구현 cmdinput 컨트롤의코드내용 비주얼베이직에서자동으로입력해주는코드로서우리는 Private Sub cmdinput_click() 과 End Sub 사이에코드를작성
2-4 프로그램작성하기 컨트롤의구현 cmdinput 컨트롤의코드내용 Private Sub cmdinput_click() 의의미는 cmdinput 컨트롤에 Click 이란이벤트가발생했을때코드의시작부분을의미하며 End Sub 는그코드의마지막이라는의미 Dim strhello As String 스트링형으로 strhello 라는변수를선언 strhello = 안녕하세요? + txtinput.text + 님 변수 strhello 에 = 오른쪽의내용을대입 txtoutput.text = strhello 변수 strhello 의내용을 txtoutput 컨트롤의 Text 속성에대입
2-4 프로그램작성하기 컨트롤의구현 안녕하세요 프로그램의실행 실행방법 실행 메뉴에서 시작 을선택하거나도구바에서 [ 시작 ] 단추를선택하여실행 실행결과
2-4 프로그램작성하기 컨트롤의구현 안녕하세요 프로그램의실행 프로그램의종료 오른쪽상단의프로그램닫기단추를누르거나도구바에서 [ 종료 ] 단추를누르면프로그램이종료 프로그램의구성 모든프로그램이종료
2-4 프로그램작성하기 컨트롤의구현 비주얼베이직의파일형식 형식확장자설명 폼파일 frm 폼과개체에대한속성과이벤트프로시저 프로젝트파일 vbp 프로젝트를구성하는파일과개체목록, 시작폼 표준모듈 bas 프로젝트에있는폼과객체에서호출되는공통속성과프로시저
Label( ) 폼위에문자정보를표시하는컨트롤 컨트롤윈도우에서 Label 컨트롤을선택한후드래그하여 Label 컨트롤을폼위에배치 원하는위치에원하는크기의 Label 컨트롤이배치되었는지확인하고언제든지위치와크기는조정
Label( ) Label 속성의종류와그기능 이름 (Name) 속성 모든컨트롤은모두이름속성을가지고있어야함 컨트롤제어를위해서컨트롤의이름을참조 컨트롤의이름은다음의규칙을따라작성 255 자이내 영문자, 숫자, 밑줄문자 (_) 로구성 첫번째문자는영문자로구성 Sub, For, End 등예약어 ( 비주얼베이직이내부적으로사용하는단어 ) 는사용불가 동일폼내에중복된이름사용불가 이름을보고그컨트롤이어떤종류의것인지어떤역할을하는것인지알수있도록한다
Label( ) Label 속성의종류와그기능 Caption 속성 Label 컨트롤에표시되는문자열을의미 속성윈도우에서 Caption 속성을찾아출력하고자하는내용을입력 Label 컨트롤의표시내용이바뀌었는지확인
Label( ) Label 속성의종류와그기능 Alignment 속성 Label 컨트롤위에서출력된문자열의정렬상태를정해주는속성 Alignment 속성값은 0- 왼쪽맞춤, 1- 오른쪽맞춤, 2- 가운데맞춤 1- 오른쪽맞춤 으로설정한다음문자열의정렬이오른쪽정렬로바뀐것을확인
Label( ) Label 속성의종류와그기능 Appearance 속성 Label 컨트롤의외양을결정 0- 평면 과 1-3D 두가지가있다 BorderStyle 속성에종속되어있으며, BorderStyle 속성이 0- 없음 으로설정되어있으면 Appearance 속성은효과가없다. 다음과같이설정하면 Label 컨트롤에 3D 효과가지정 Appearance 속성 = 1-3D BorderStyle = 1- 단일고정
Label( ) Label 속성의종류와그기능 BackColor 속성 Label 컨트롤의배경색을지정 BackColor 속성을열면, 탭이두개있다. 시스템 : 현재시스템에설정되어있는색으로윈도우디스플레이등록정보에있는 화면배색 에의해변경 색상표 : 컨트롤의색상을사용자가정의 색상표 탭을누르면다음과같은색상을정의 BackStyle 속성이 0- 투명 으로정의되어있으면, BackColor 속성은효과를나타낼수없다.
Label( ) Label 속성의종류와그기능 Enabled 속성 Label 컨트롤에서는그다지중요하지않지만, 다른컨트롤들에는유용하게사용 False 로설정하면컨트롤을비활성화 ( 사용불능 ) 상태로나타내어준다. Enabled 속성은폼디자인상태에서는확인할수없고, 실행상태에서적용여부를확인 Enabled 속성을 False 로설정한상태에서나타낸모양으로 Enabled 속성이 True 로설정되었을때에비해글자가흐려진상태를확인
Label( ) Label 속성의종류와그기능 Font 속성 Caption 속성에설정된문자를표시할글꼴을설정... 버튼을누르면다음과같은글꼴대화상자가나타난다.
Label( ) Label 속성의종류와그기능 ForeColor 속성 Caption 속성에지정된문자열의색상을바꾸어준다
Label( ) Label 속성의종류와그기능 Visible 속성 컨트롤을윈도우화면에보이게할것인지를결정 False 로설정되어있으면컨트롤은실행시보이지않게된다. AutoSize 속성 Label 컨트롤의크기를 Caption 에입력된문자열의길이에자동으로맞출것인지를결정하는속성 True 로설정되면다음과같이문자열의길이에맞추어크기가결정 글꼴 : 궁서체 글꼴스타일 : 굵은기울임꼴 크기 :16
실습 2-2 Label 컨트롤을이용하여문자열을출력 컨트롤이름컨트롤종류사용된속성 Form1 Form ( 이름 ) = From1 Caption = "" 뷰 Lable ( 이름 ) = 뷰 Caption = "" 출력 CommandButton ( 이름 ) = 버튼 Caption = 출력
실습 2-2 1 새프로젝트를생성
실습 2-2 2 Label 을선택하여폼에위치 Font 의크기를예상하여적당한크기로드래그 화면에나타낼글자의 Font 는해당 Label 의속성 Font 에서조정
실습 2-2 3 명령을수행할 Command 버튼을다음과같이폼에위치
실습 2-2 4 5 6 프로젝트창의 Form1에서코드보기를선택다음과같이코딩실행
실습 2-3 Label 컨트롤에속성의효과를지정 컨트롤이름 컨트롤종류 사용된속성 Form1 Form ( 이름 ) = From1 Caption = "" Label1 Lable ( 이름 ) = 뷰 Caption = "" Alignment = 2 - 가운데맞춤 BorderColor = 1 - 단일고정 ForeColor = &H000000FF& 출력 CommandButton ( 이름 ) = 버튼 Caption = 출력
실습 2-3 1 2 < 실습 2-2> 에서작성한프로젝트를불러온다 Label인 ( 이름 ) 뷰를선택하여속성을변경
실습 2-3 3 4 Form화면에나타날 Font의글자색은다음과같이변경저장후실행
TextBox( ) TextBox 컨트롤은키보드를통해서문자정보를입력받기위한컨트롤 TextBox 컨트롤을선택한후, 드래그하여폼위에배치하고, 원하는위치에원하는크기의 TextBox 컨트롤이배치되었는지확인 TextBox 속성의종류와그기능
TextBox( ) 이름 (Name) 속성 하나의폼에동일한이름의컨트롤이두개이상존재할수는없다. TextBox 컨트롤의이름은 txt 라는접두어를붙이도록권장 Text 속성 TextBox 안에입력되어있는내용을나타내는속성이 Text 속성 비어있는상태로나타나게하고싶다면바로이속성을공백으로나타내야한다. Alignment 속성 문자의정렬상태를지정하는속성 세가지중하나로지정할수있으며그결과값은다음과같다.
TextBox( ) Appearance 속성 TextBox 컨트롤의외양을지정 Appearance 속성은다음두가지중하나로지정 이속성은 BorderStyle 속성이 1- 단일고정 으로선택되어있을때에만적용
TextBox( ) Enabled 속성 TextBox 의사용가능여부를결정 False 로설정되어있으면 TextBox 에문자정보가입력되지않는다.
TextBox( ) Font 속성 TextBox 에입력될문자의폰트를결정... 버튼이나오면글꼴대화상자가나타나며, 이곳에서글꼴과스타일, 크기를지정
TextBox( ) Locked 속성 TextBox 에사용자가특정내용을입력할수있게할것인지의여부를결정 위의것은 Enabled 속성을 False 로준것이고, 아래의것은 Locked 속성을 True 로준것 Locked 속성이 True 인경우는입력, 편집만을막아놓은경우
TextBox( ) MaxLength 속성 사용자가입력할수있는문자의갯수를제한하는속성 MultiLine 속성 TextBox 에여러줄의문자열을입력할경우이속성을 True 로설정 메모장과같이여러줄을입력해야하는프로그램을개발한다면 MultiLine 속성이 True 로설정된 TextBox 가필요
TextBox( ) Vislble 속성 False 가되어있으면 TextBox 가시각적으로보이지않게된다 보이지않을뿐, 실제로는폼안에존재하고있는것
실습 2-4 Text Box 를이용한입력값을 Text Box 에출력 컨트롤이름 Form1 Label1 Text1 Text2 버튼 컨트롤종류 Form Lable TextBox TextBox CommandButton 사용된속성 ( 이름 ) = From1 Caption = ( 이름 ) = Label1 Caption = 입력값 ( 이름 ) = Text1 Caption = ( 이름 ) = Text1 Caption = ( 이름 ) = 버튼 Caption = 출력
실습 2-4 1 2 새프로젝트를생성 Label인 ( 이름 ) 뷰를선택하여속성을변경
실습 2-4 3 4 TextBox를선택하여입력받을 TextBox의위치한후속성을변경같은방법으로 Text2를 Form에위치
실습 2-4 5 Text1 에입력한값을 Text2 에출력하기위한명령버튼을추가 ( 이름 ) 과 Caption 을속성창에서수정
실습 2-4 5 프로젝트의해당폼에서코드보기를선택하여다음과같이코딩 출력 CommandButton 을두번 Click 하면출력버튼코딩 6 저장후실행
실습 2-5 Text 파일의내용을읽어들여 TextBox 에내용을출력 컨트롤이름 Form1 컨트롤종류 Form 사용된속성 ( 이름 ) = From1 Caption = Text1 TextBox ( 이름 ) = Text1 Caption = MultiLine = True Command1 CommandButton ( 이름 ) = Command1 Caption = 확인
실습 2-5 1 Form 에내용을출력할 TextBox 를추가한후 MultiLine 을 True 로변경
실습 2-5 2 CommandButton 을 Form 에추가한후속성에서 Caption 을변경
실습 2-5 3 4 Text파일을임의의디렉토리에위치시킨다. 여기서는 C:\test.txt로사용 Command1에다음과같이 Coding ' 파일읽기버튼을누르면수행한다. Private Sub Command1_Click() Dim F_Line As String Dim F_Data As String ' 파일읽을수있도록열어준다. Open "c:\test.txt" For Input As #1 ' 파일의내용을읽어온다. Do While Not EOF(1) Line Input #1, F_Line F_Line = F_Line & vbcrlf F_Data = F_Data & F_Line Loop ' 파일을닫아준다. Close #1 ' 읽어온내용을텍스트박스에넣는다. Text1.Text = F_Data Exit Sub End Sub
CommandButton( ) 가장자주접하게되는 CommandButton ( 명령단추 ) 컨트롤 원하는위치에원하는크기의 CommandButton 컨트롤이배치되었는지확인
CommandButton( ) Caption 속성 CommandButton 컨트롤에표시된문자열을결정
CommandButton( ) Picture 속성 버튼위에그래픽정보를표시하고자할때사용하는속성 그림 (Picture) 을선택하기이전에아래의속성이우선적으로지정 조건 CommandButton 이사용불능일때 Style 이그래픽으로설정되어있을때 적용방법 Enabled=false Style=1 - 그래픽
CommandButton( ) Picture 속성 속성윈도우에서 Picture 항목을선택하면오른쪽에... 버튼이나타난다 그림폴더를지정하면다음과같은화면이나타나고해당그림을지정하면버튼위에나타난다.
CommandButton( ) ToolTipText 속성 명령버튼컨트롤이나도구상자위에마우스를올려놓으면풍선도움말이뜨는것 CommandButton 의풍선도움말을설정해주는속성
CommandButton( ) Index 속성 컨트롤의배열이생성되었을때그인덱스를나타낸다. CommandButton 의배열생성
CommandButton( ) Index 속성 복사하여해당 Form 에붙여넣기 같은이름의컨트롤이존재하기때문에배열로설정할지물어본다
CommandButton( ) MousePointer 속성 런 - 타임시컨트롤위에마우스가위치하고있을때나타나는마우스포인터모양 실행하여해당컨트롤에마우스를옮기면다음과같은화면
CommandButton( ) TabIndex, TabStop 속성 ( 탭키 ) 에의해포커스를가질수있는컨트롤간의우선순위를나타낸다. 컨트롤선택상태에서 Tab Key 를누르게되면 TabIndex 값의순서대로선택
CommandButton( ) Enabled 속성 컨트롤이활성화될수있는가의여부를지정. Enabled False 로설정하게되면다음과같이런타임시사용을할수없는그림으로만표시
CommandButton( ) Visible 속성 화면에컨트롤이보이는가의여부를지정. Visible 을 False 로선택하게되면런타임시다음과같이 Command1 이보이지않게된다.
CommandButton( ) Font 속성 글자가있는컨트롤의경우에그글자의글꼴을나타낸다.. 문자를포함한컨트롤버튼과같은경우에글꼴을변경하면다음과같은화면을볼수있다
실습 2-6 Tab 키로포커스순서를지정 컨트롤이름 Form1 Text1 Text2 컨트롤종류 Form TextBox TextBox 사용된속성 ( 이름 ) = From1 Caption = ( 이름 ) = Text1 Caption = ( 이름 ) = Text2 Caption = Command1 CommandButton ( 이름 ) = Command1 Caption = 확인 Label 1, 2, 3 Label ( 이름 ) = Label1, 2, 3 Caption = 각각의 Caption 값
실습 2-6 1 값을입력받을수있는 TextBox 를각각 Form 에추가
실습 2-6 2 Tab 키인덱스를가질수있는 CommandButton 도 Form 에추가
실습 2-6 3 설명을붙일수있는 Label 을 Form 에추가한후 Caption 을변경
실습 2-6 4 Form1 에서코드보기를열어다음과같이 Coding 폼이생성하면수행한다. Private Sub Form_Load() ' 첫번째텍스트컨트롤에탭인덱스값을 0 으로설정한다. Text1.TabIndex = 0 ' 두번째텍스트컨트롤에탭인덱스값을 1 로설정한다. Text2.TabIndex = 1 ' 명령버튼컨트롤에탭인덱스값을 2 로설정한다. Command1.TabIndex = 2 End Sub 5 실행 ( 런타임 ) 하여 Tab Key 를누르면포커스가해당코드입력값대로이동하는것을확인
실습 2-7 CommandButton 을이용한 Label 에해당문자출력 컨트롤이름 Form1 출력 버튼 1 버튼 2 버튼 3 컨트롤종류 Form Lable CommandButton CommandButton CommandButton 사용된속성 ( 이름 ) = From1 Caption = "" ( 이름 ) = 출력 Caption = ( 이름 ) = 버튼 1 Caption = 안녕하세요? ( 이름 ) = 버튼 2 Caption = 비주얼베이직 ( 이름 ) = 버튼 3 Caption = Programing
실습 2-7 1 2 새프로젝트를생성 Form에 Label을위치시킨후 ( 이름 ) 과 Caption을다음그림과같이수정
실습 2-7 3 CommandButton 을다음과같이 3 개를해당 Form 에추가
실습 2-7 4 CommandButton 을추가한후다음과같이각각 ( 이름 ) 과 Caption 을변경 Command1:( 이름 ) 버튼 1, Caption 안녕하세요? Command2:( 이름 ) 버튼 2, Caption 비주얼베이직 Command3:( 이름 ) 버튼 3, Caption Programing
실습 2-7 5 프로젝트에서코드보기를클릭한다. 각각다음과같이 Coding
실습 2-8 패스워드를입력하여새로운 Form 을띄우기 컨트롤이름 Form1 Label1 Text1 컨트롤종류 Form Lable TextBox 사용된속성 ( 이름 ) = From1 Caption = "" ( 이름 ) = Label Caption = 패스워드 ( 이름 ) = Text1 Caption = PasswordChar = * Text = "" 버튼 CommandButton ( 이름 ) = 버튼 Caption = 확인
실습 2-8 1 2 새프로젝트를생성 Label을해당 Form에위치시켜 Caption을변경
실습 2-8 3 패스워드를입력받을창의 TextBox 의속성을변경
실습 2-8 4 패스워드를입력후확인을할명령버튼을폼에위치 ( 이름 ) 과 Caption 을변경
실습 2-8 5 확인 (( 이름 ) 버튼 ) 에다음과같이코딩 Private Sub 버튼 _Click() Dim test As Variant Dim test2 As Variant test = Text1.Text test2 = "1234" If test <> test2 Then MsgBox " 비밀번호가틀립니다 " Else MsgBox " 비밀번호가맞습니다 " End If End Sub 6 저장후실행