2017년 4월 10일 월요일

비주얼 베이직 강좌 - 2

먼저 비주얼베이직을 실행하고 '표준 EXE'를 선택하면 빈 폼이 열립니다. (앞으로 특별히 언급하지 않으면 항상 '표준 EXE' 상태 로 프로그램을 시작하기로 약속하죠.) 빈 폼에 텍스트박스 컨트롤을 아래 그림과 같이 추가합니다.(어떻게 하시는지 아시죠? 이미 앞에서 실습했습니다.)

그리고 오른쪽 하단에 속성 창을 보세요. 이미 이전에 실습해서 아시겠지만 여러 속성의 이름과 기본적인 속성 값들이 보입니다. 5 텍스트 박스 컨트롤의 속성들을 자세히 살펴보면 모두 43 가지나 됩니다. 이 중에서 우리는 지난 시간에 이름 속성과 Text 속성 등을 바꿔봤습니다. 그 외에 텍스트 박스에 입력 또는 표시되는 글꼴의 모양을 변경할 수 있는 Font 속성, 텍스트 박스 테두리 모양을 변경할 수 있는 BorderStyle 속성, 배경색을 바꿀 수 있는 BackColor 속성 등 매우 많습니다. 각각의 컨트롤은 이많큼 많은 속성을 가지고 있습니다. 그럼 이 모든 속성을 다 외워야 하는가? 시간이 남아도시는 분은 그렇게 하셔도 될 것입니다. 그러나 대개의 경우 몇 가지 자주 사용하는 속성만 기억하고 나머지 속성들은 대충 그러한 것들이 있다는 것만 알아두시면 됩니다. 비주얼베이직으로 프로그래밍을 여러번 하다가 보면 자연스레 여러 속성에 대해 속속들이 알게될 것이 기 때문입니다

속성을 바꾸는 방법은 두 가지가 있습니다. 먼저 기본적으로 위와 같은 속성 창에서 직접 그 값을 바꾸는 방법이 있습니다. 또 다른 방법으로는 코드 창에서 직접 바꾸는 방법이 있습니다. 실제 프로그램이 실행되는 도중에 사용자에 의해 속성값을 바꿔 야할 경우에 주로 사용되죠. 혹시 지난 강좌 실습 기억나시나요? <눌러봐> 버튼을 눌렀을 때 텍스트박스에 "뭘 봐?"라고 표시되었죠. 텍스트박스를 만들면 기 본적으로 Text 속성의 속성 값이 "Text1"입니다. 이것을 프로그래머가 처음에 ""(빈칸)으로 바꿨습니다. 그리고 사용자가 프로그 램을 실행하고 <눌러봐> 버튼을 눌렀을 때 ""(빈칸)이던 Text 속성값이 "뭘 봐?"로 바뀐 것이죠? 이해가 되시는지요?...... 이해가 될 때까지 이 문장 반복해서 보시길...

메서드는 영어로 method, 말 그대로 '방법'이라는 뜻입니다. 즉 어떤 개체(컨트롤)를 실행하는 방법을 말합니다. 어떤 폼을 보이 게 할 수도 있고, 숨기게 할 수도 있고, 그림을 그리거나 이동시킬 수도 있죠. 자, 그럼 폼 위의 Text1 텍스트 박스를 더블클릭하여 코드 창을 열어보세요. 그러면 아래와 같이 Private Sub Text1_Change( ) 함수가 기본적으로 나오죠. 그 아래 줄에 다음과 같이 Text2.을 입력합니다. 그러면 점(.)을 입력하는 순간 아래 그림과 같이 무언가를 선택할 수 있는 목록 6 이 나타나죠. 이 목록이 바로 속성과 메서드 목록입니다. 검은 색 글씨만으로 된 것이 속성이고 녹색 아이콘이 붙어있는 것이 바 로 메서드입니다.

목록에서 SetFocus 메서드를 선택해서 Text2.SetFocus 라는 문장을 완성하세요. Private Sub Text1_Change() Text2.SetFocus End Sub 이제 뜻을 살펴볼까요? Text1 이라는 텍스트 박스에 Change 이벤트가 발생하면, 즉 텍스트 박스의 내용을 변경하면 Text2 라는 텍스트 박스로 포커스를 옮겨라, 즉 Text2 텍스트 박스로 커서가 이동합니다. 그러면 이제 [F5]를 누르거나 실행 버튼(▶)을 클릭하여 프로그램을 실행해 보세요. 그런다음 Text1 이라고 씌어진 부분에 글자 를 입력해 보세요. 단 한자를 입력하자마자 커서가 Text2 로 이동되는 것을 알 수 있습니다. 좀 어렵죠? 메서드에 대한 적절한 예가 없어 SetFocus 메서드로 예를 들자니 다소 어렵게 느껴질 수도 있었겠습니다. 정리하자면 메서드는 개체(컨트롤 등을 말함)를 대상으로 행해질 수 있는 일종의 함수를 말합니다. 그래서 속성과 마찬가지로 항 상 그 대상이 되는 개체(위의 예에서는 Text2)를 명시하고 점(.)을 찍은 다음 뒤에 표시를 하게 됩니다.

이벤트에 대해서는 지난 강좌에서 설명드렸죠? 사용자가 행하는 어떤 '행위'라고 말입니다. 즉 커맨드 버튼을 클릭 (Command1_Click())하거나 더블클릭(Command1_DbClick)하는 행위, 텍스트 박스에 글자를 입력하거나 수정(Text1_Change())하 는 행위 등을 말합니다. 보기 메뉴에서 코드를 선택하여 코드 창을 열어봅시다.(코드 창을 여는 방법은 이 외에도 여러 가지가 있습니다. 폼을 더블클릭 하거나 특정 컨트롤을 더블클릭해도 열립니다.)

아래 그림과 같은 코드 창에서 Text1 이라고 표시된 부분이 '개체' 목록을 나타내는 부분입니다. 쉽게 말하면 컨트롤 이름이라고 할 수 있습니다. (개체는 컨트롤보다는 광범위한 개념입니다만, 이것저것 다 설명하자면 너무 길어지니 그냥 컨트롤과 같은 것이 라고만 생각해주시기 바랍니다.) 현재 폼 위에 텍스트 박스를 두 개 그려넣었으니 Form1, Text1, Text2 라고 세 개의 개체가 표시 될 것입니다.

오른쪽의 Change 라고 표시된 부분은 '프로시저' 목록입니다. 쉽게 말하면 이벤트라고 할 수 있습니다. 우리가 폼 위에 컨트롤을 만들고 더블클릭하여 폼 창을 열면 기본적으로 가장 자주 실행되는 이벤트 프로시저가 표시됩니다. 예 를 들어 커맨드 버튼을 더블클릭하면 클릭 이벤트가 기본적으로 표시되고, 텍스트 박스 이벤트를 클릭하면 Change 이벤트가 기 본적으로 표시됩니다

비주얼 베이직 강좌 - 1

시중에 볼만한 VB서적들 500쪽 넘는 거 기본입니다. 그럴 만도 합니다. 프로그래밍 언어라는 것이 설명하기 시작하면 한도 끝도 없는 것입니다. 게다가 프로그래밍 서적 살 사람이면 최소한 그 정도 극복할만한 사람이다,라고 생각합니다. 이 강좌가 시중의 책으로 따지자면 몇 쪽 분량이 될지는 모르겠습니다. 아마도 시중의 책보다는 훨씬 얇은 수준이 아닐까 생각합 니다. 왜냐하면 어디까지나 제가 설명하기 쉬운 방식대로만 쓸 것이고, 그러자면 시중의 책처럼 시시콜콜한 얘기 다 못쓰니까 말 입니다. 한 강좌를 길게 못 씁니다. 눈이 아프니까요. ^^. 짧게 짧게 끊어서 그냥 부담없는 정도의 수준으로 강좌를 이어가겠습니 다. 그래야 제가 편하고, 편하게 글을 써야 독자 제위께서도 별 부담이 없을 테니까 말이죠.

여전히 프로그래밍이라면 무진장 어려운 것으로 생각하는 사람들이 많습니다. 물론 쉽지 않죠. 그러나 생각만큼 어렵지도 않습니 다. 우리가 아래아한글이나 엑셀같은 엄청난 프로그램을 만드는 것도 아니고 지금 당장 중요한 프로그램을 짜야하는 것도 아니니 까 말입니다. 단지, 그냥 재미로, 비주얼베이직이 이런 것이구나∼ 이런 것도 할 수 있구나∼하는 정도만 알면 되니까 말입니다. 물론 여기에서 그쳐서는 안되죠. 이왕 칼을 뽑았으니 윈도 보조프로그램의 '계산기' 정도는 만들어 보고, 좀 더 나아가서 데이터 베이스를 쬐끔 이용하여 ○○관리프로그램도 만들어 봐야겠죠. 사이트를 뒤져보면 VB로 짠 프로그램이 무궁무진합니다. 그 중 몇 개를 골라 비슷하게 짤 수 있을 정도의 실력은 되어야죠? 이 강좌의 목표는 거기까지입니다. 생각보다는 꽤 높죠?

그렇다면, 일단 VB를 실행하세요. 버전은 6.0을 기준으로 하겠습니다. 어떻게 구하고 어떻게 설치하느냐구요? 그런 거는 이 강좌에서 다루 지 않겠습니다. 구하는 거야 돈만 있으면 되고 설치하는 거야 그냥 CD 넣으면 자동으로 됩니다. (VB는 마이크로소프트의 Visual Studio의 CD에 들어있습니다. Visual Studio에는 VB 외에 비주얼 C, 비주얼 FoxPro 등등 여러 개발 언어가 있습니다.) 실행하자마자 뭔가를 선택해야되죠? 그냥 기본적으로 선택된 '표준 EXE'를 <열기>하면 됩니다. 일반적으로 프로그램을 만들어 최종적으로 실행 파일을 만들면 끝에(확장자가) exe가 붙죠? 그래서 기본으로 선택된 '표준 EXE'를 선택한 것입니다. 그 외에 'ActiveX EXE' 'ActiveX DLL' 등 여러 가지가 있는데, 나중에 해봅시다. 첫술에 배부르지는 않는 법이니까요.

프로그램을 짤 수 있는 가장 일반적인 모습입니다. 시작하자마자 Form1이라고 해서 흔히 말하는 폼 창이 하나 떠 있습니다. 폼이란 우리가 흔히 말하는 '창(Window)'를 말합니다. 대개의 프로그램은 하나 이상의 창을 가지고 있죠. 그래서 프로그램을 시작하자마자 창이 하나 자동으로 생긴 것입니다.

이제 이 폼을 이용해 다음과 같은 프로그램을 만들어 봅니다. 단추를 누르면 "뭘 봐?"가 나타나는 정말 유치한 프로그램입니다.

다음과 같이 따라해 보세요.
 ① 왼쪽 컨트롤 도구상자에서 TextBox 컨트롤을 클릭한 후, 폼 창의 원하는 위치에 마우스로 드래그하여 글상자 하나를 만든다.
 ② 마찬가지로 컨트롤 도구상자에서 CommandButton 컨트롤을 클릭한 후, 같은 방법으로 명령 단추 하나를 만든다.
 ③ 마우스로 이리 저리 조절해서 위치와 크기를 적당히 조절한다.

 됐죠? 무지 쉽죠? 예전에 (도스 시절에) 이 정도로 보이는 프로그램을 짤려면 그야말로 힘들었습니다. 그래서 도스용 프로그램을 짤 때 첨에는 그냥 문자만 보이는 것을 예로 들곤 하죠. 가장 잘 드는 예로 "Hello"라는 메시지가 화면에 표시되게 하는 것이었 습니다. 지금처럼 텍스트 박스 만들고 명령 단추 만들고...이런 작업은 고수들이나 하는 작업이었습니다. 어찌됐건 (이 글을 읽고 있는 분들 도스 시절의 프로그래밍 언어 안 써 보신 분들 100%라고 믿고...) 세상 참 좋아졌습니다. 위에서 만든 폼 위에 그려놓은 것들을 우리는 컨트롤이라고 부릅니다. 그런데 이러한 컨트롤들을 그냥 그려넣는다고만 해서 프로 그램이 저절로 되는 것은 아닙니다.(VB는 인공지능 언어가 아닙니다.) 이제부터 뭔가 명령을 줘야죠... 프로그래밍은 이제부터 시 작입니다

폼 위에 그려놓은 두 개의 컨트롤에 우리가 원하는 결과가 나타나도록 프로그래밍을 해야됩니다. 그러나 겁먹지 마시길... 오늘 강좌 정도의 프로그래밍은 그야말로 식은 죽먹기. 먼저 아래 그림의 ①번에 기본적으로 "Text1"이라고 표시되죠? 이것을 아래 그림과 같이 빈 칸으로 만들어야 됩니다. 그러기 위 해서 먼저 ①번을 클릭한 다음, 오른쪽의 속성 창(속성 창이 어디냐구요? 앞의 강좌의 그림을 잠깐 보고 오시길...)에서 Text라는 이름을 찾아보세요. 그럼 오른쪽에 "Text1"이라고 씌어있죠? 이걸 지우면 됩니다. 그러면 왼쪽 폼 위의 ①번 텍스트 박스도 빈 칸이 되죠. 이것이 바로 속성입니다. 즉 텍스트 박스의 Text라는 속성값이 기존에는 Text1이었는데, 지금은 Text 속성값을 빈칸으로 만들었 습니다.(Text 속성 란에 다른 문자를 입력해보세요. 그럼 텍스트 박스에 표시됩니다.)

같은 방법으로 아래 ③번 커맨트 버튼의 Caption 속성 값도 바꿔보세요. 커맨드 버튼은 처음 만들 때 기본적으로 Command1, Command2... 이런 식으로 만들어집니다. ③번을 선택하고 속성 창에서 Caption 속성을 찾아서 거기에 "Command1"이라고 씌 어진 것을 "눌러봐"로 수정하면 됩니다. (텍스트 박스의 Text 속성과 비슷한 것이 커맨드 버튼에는 Caption입니다.) 이렇게 해서 우리는 컨트롤에 속성 값을 변경하는 것을 해봤습니다. 무슨 말이냐구요? 텍스트 박스 컨트롤, 커맨드 버튼 컨트롤 의 Text 속성 값, Caption 속성 값을 각각 빈칸과 "눌러봐" 속성값으로 바꾸었다는 말입니다. 이제 '컨트롤'과 '속성'에 대해서는 좀 아시겠죠? 그럼 본격적으로 <눌러봐> 버튼을 누르면 현재 빈칸으로 표시된 텍스트 박스에 "뭘 봐?"라는 문자가 나오도록 만들어 봅시다. 즉 우리가 커맨드 버튼을 누른다는 "행위"를 할 때 무언가 결과가 나타난다는 말인데, 이러한 행위를 '이벤트'라고 합니다. 즉 커 맨드 버튼이든 텍스트 박스이든 마우스로 누를 때 우리는 "클릭 이벤트가 발생했다"라고 합니다. 자, 그러면 폼 창에서 ①<눌러봐> 버튼을 더블클릭해보세요. 그럼 아래와 같이 직접 프로그래밍할 수 있는 코드 창이 나타납니 다.

코드 창에서 아래와 같이 입력합니다.
 Private Sub Command1_Click()
 Text1.Text = "뭘 봐?"
 End Sub

 이미 첫째줄과 셋째줄은 표시되어 있죠? 여러분들은 가운데 Text1.Text="뭘 봐?"만 입력하면 됩니다. 뜻을 풀이하자면 Command1 버튼을 누르는 이벤트가 발생하면(Private Sub Command1_Click()) Text1이라는 텍스트 박스의 텍스트 속성 값을 "뭘 봐?"로 바꾸고(Text1.Text = "뭘 봐?") 끝내라(End Sub)는 뜻입니다.

쉽죠? 근데 아까 Command1은 "눌러봐"로, Text1은 빈칸으로 바꿨는데 왜 코드에는 그렇게 나타나냐구요? 우리가 전 강좌에서 바꾼 것은 겉모습 즉, Text나 Caption 속성 값만 바꾼 것이고 실제 이름(Name) 속성은 그대로 두었기 때문입니다. 다시 폼 창으로 돌 아가 텍스트 박스를 누르고 속성 창에서 제일 위에 있는 이름 속성을 확인해 보세요. 여전히 Text1으로 되어있죠? 커맨드 버튼 도 마찬가지입니다.

 실제 프로그래머들은 이러한 컨트롤을 만들면 맨 먼저 Name 속성을 바꿉니다.(설명이 길어질까봐 일부러 안했었는데, 오히려 더 설명이 길어지고 있음. 우리도 다음 실습부터는 그렇게 합시다.) 4 프로그램을 다 짰으니 이제 실행해 보죠. 상단 도구 모음줄에서 ③시작 단추(▶)를 눌러보세요. 그럼 좀 전에 만든 프로그램이 멋있게 실행될 것입니다. 프로그램이 실행 되면 <눌러봐> 단추를 클릭해보세요... "뭘 봐?"라는 메시지가 나오죠? (만약 안 나온다면 이 글 첨부터 다시 찬찬히 보고 해보세 요. 분명히 됩니다.)

또 마칠 때가 되었네요. 마치기 전에 지금까지 만든 것 저장해 놓고 마칩시다. 도구 모음에서 디스켓처럼 생긴 프로젝트 저장 단추(위 그림 ④번)을 눌러보세요. 처음에는 폼 파일 이름을 입력하라고 합니다.
 파일 이름란에 "VB001"로 입력하고 저장합시다. 그러면 또 프로젝트 파일 이름을 입력하라고 합니다. 그러면 또 파일 이름을 "VB001"로 저장합시다. 폼 파일, 프로젝트 파일이 뭐냐구요? 담에 설명하죠. 오늘은 여기까지... 우리는 VB의 반을 알았습니다. 시작이 반이니까요. 다음 시간에는 이벤트, 속성, 메서드에 대해 보다 자세하게 알아보죠.