코딩을 시작하기 전에
Visual Basic에서 응용 프로그램을 만드는 데 있어 가장 중요한(종종 간과되는) 부분은 디자인 단계입니다. 애플리케이션을 위한 사용자 인터페이스를 디자인해야 할 필요성은 분명하지만 코드를 구조화해야 할 필요성은 덜 분명합니다. 애플리케이션을 구성하는 다양한 방법으로 인해 애플리케이션 성능과 코드 유지 관리 용이성 및 유용성이 달라질 수 있습니다. Visual Basic 응용 프로그램 코드는 계층적 방식으로 구성됩니다. 일반적인 애플리케이션은 애플리케이션의 각 양식에 대한 양식 모듈, 코드를 공유하는 선택적 표준 모듈, 선택적 클래스 모듈 등 여러 모듈로 구성됩니다. 각 모듈에는 이벤트 프로세스, 하위 하위 프로세스 또는 함수 프로세스, PRperty 프로세스 등 코드가 포함된 여러 프로세스가 포함되어 있습니다. 어떤 프로세스가 어떤 모듈에 속하는지 결정하는 것은 생성되는 애플리케이션 유형과 특정 관계를 갖습니다. Visual Basic은 개체 기반이므로 응용 프로그램이 나타내는 개체의 관점에서 응용 프로그램을 생각하는 것이 도움이 됩니다. 이 장에서는 샘플 응용 프로그램 Vcr.vbp가 비디오 카세트 레코더와 텔레비전 세트로 구성된 개체를 기반으로 설계되었습니다. VCR 응용 프로그램에는 두 개의 양식 모듈, 즉 표준 모듈과 두 개의 클래스 모듈이 포함되어 있습니다. "개체 브라우저"를 사용하여 프로젝트 구조를 검사할 수 있습니다(그림 5.2).
VCR 애플리케이션(frmVCR)의 주요 형태는 VCR과 TV 화면이 결합된 시각적 이미지입니다(그림 5.3). 실제 장면을 모델로 한 여러 개체로 구성됩니다. 명령 버튼 세트(cmdPlay, cmdRecord 등)는 VCR을 작동하는 버튼과 유사합니다. 소프트웨어 VCR에는 시계(lblTime), 채널 표시기(lblChannel), 기능 표시기(shpPlay, shpRecord 등) 및 영상 튜브(picTV)도 포함되어 있습니다. Vcr.frm 양식 모듈에는 이러한 모든 개체에 대한 이벤트 프로시저가 포함되어 있습니다.
많은 경우 여러 객체가 공유하는 반복적인 프로세스가 있습니다. 예를 들어, "재생", "되감기" 또는 "녹음" 버튼을 "누르려면" "일시 중지" 및 "중지" 버튼이 유효해야 합니다. 각 버튼의 Click 이벤트 프로시저에서 이 코드를 반복하는 것보다 모든 버튼이 호출할 수 있는 공유 서브루틴을 만드는 것이 더 좋습니다. 나중에 이러한 서브루틴을 수정하는 경우 한 곳에서 수정하여 모든 수정 작업을 수행할 수 있습니다. 표준 모듈 Vcr.bas에는 다양한 공유 프로시저가 포함되어 있습니다.
테이프 전송 메커니즘이나 TV 프로그램 녹화 이면의 논리와 같은 VCR의 일부 부분은 눈에 보이지 않습니다. 마찬가지로 소프트웨어 VCR의 일부 기능에는 시각적 이미지가 없습니다. 이러한 부분과 기능은 두 개의 클래스 모듈 Recorder.cls 및 Tape.cls로 구현됩니다. clsRecorder 모듈에는 "녹음" 프로세스를 시작하는 코드가 포함되어 있으며 clsTape 모듈에는 "테이프"의 방향과 속도를 제어하는 코드가 포함되어 있습니다. 이러한 모듈에 정의된 클래스는 양식의 개체와 직접적으로 관련되지 않습니다. 독립적인 코드 모듈이기 때문에 녹음 프로그램을 수정하지 않고도 쉽게 재구성할 수 있습니다.
코드 구조를 디자인하는 것 외에도 명명 규칙을 설정하는 것도 중요합니다. 기본적으로 Visual Basic에서는 프로젝트의 첫 번째 폼 이름을 Form1, 두 번째 폼의 이름을 Form2 등으로 지정합니다. 애플리케이션에 여러 양식이 있는 경우 코드를 작성하거나 편집할 때 혼동을 피하기 위해 의미 있는 이름을 지정하는 것이 좋습니다. Visual Basic에서 권장하는 일부 명명 규칙은 부록 B, "VisualBasic 코딩 규칙"에 나열되어 있습니다.
객체에 대해 더 많이 배우고 코드 작성 방법을 배우면서 VCR 샘플 애플리케이션을 참조하여 다양한 코딩 기술의 예를 찾아보세요.
코드 작성 메커니즘
코드 작성을 시작하기 전에 Visual Basic에서 코드 작성 메커니즘을 이해하는 것이 중요합니다. 다른 프로그래밍 언어와 마찬가지로 Visual Basic에는 코드 구성, 편집 및 서식 지정에 대한 고유한 규칙이 있습니다.
코드 모듈
Visual Basic 코드는 모듈에 저장됩니다. 모듈에는 양식, 표준, 클래스의 세 가지 유형이 있습니다. 간단한 애플리케이션은 양식 모듈에 있는 모든 애플리케이션 코드와 함께 하나의 양식만 가질 수 있습니다. 신청서의 규모가 크고 복잡할 경우 추가 양식을 추가해야 합니다. 여러 형태로 실행되는 공통 코드가 있다는 것을 알게 될 수도 있습니다. 두 형식 모두에서 코드를 복제하고 싶지 않으므로 공통 코드를 구현하기 위한 절차가 포함된 별도의 모듈을 만듭니다. 독립형 모듈은 표준 모듈입니다. 그런 다음 공유 프로시저가 포함된 모듈 라이브러리를 구축할 수 있습니다.
각 표준 모듈, 클래스 모듈 및 양식 모듈에는 다음이 포함될 수 있습니다.
성명. 양식, 클래스 또는 표준 모듈의 모듈 수준에서 상수, 형식, 변수 및 DLL(동적 연결 라이브러리) 프로시저의 선언을 배치할 수 있습니다.
프로세스. Sub, Function 또는 Property 프로시저는 하나의 단위로 실행될 수 있는 코드 조각을 포함합니다. 이에 대해서는 이 장 뒷부분의 "프로세스 개요" 섹션에서 설명합니다.
양식 모듈
양식 모듈(파일 확장자 .FRM)은 대부분의 Visual Basic 응용 프로그램의 기초입니다. 양식 모듈에는 이벤트 처리를 위한 프로시저, 일반 프로시저, 변수, 상수, 유형 및 외부 프로시저의 양식 수준 선언이 포함될 수 있습니다. 텍스트 편집기에서 양식 모듈을 보는 경우 해당 속성 설정을 포함하여 양식 및 해당 컨트롤에 대한 설명도 볼 수 있습니다. 양식 모듈에 작성된 코드는 해당 양식이 속한 특정 애플리케이션에만 적용되며 애플리케이션 내의 다른 양식이나 개체를 참조할 수도 있습니다.
표준 모듈
표준 모듈(파일 확장자 .BAS)은 애플리케이션 내의 다른 모듈에서 액세스하는 프로시저 및 선언에 대한 컨테이너입니다. 여기에는 변수, 상수, 유형, 외부 프로시저 및 전역 프로시저의 전역(응용 프로그램 전체) 또는 모듈 수준 선언이 포함될 수 있습니다. 표준 모듈로 작성된 코드는 특정 애플리케이션에 연결될 필요가 없습니다. 이름이 아닌 양식과 컨트롤을 참조하도록 주의를 기울이면 표준 모듈을 다양한 애플리케이션에서 재사용할 수 있습니다.
클래스 모듈
Visual Basic에서 클래스 모듈(파일 확장자 .CLS)은 개체 지향 프로그래밍의 기초입니다. 클래스 모듈에 코드를 작성하여 새 개체를 만들 수 있습니다. 이러한 새 개체에는 사용자 지정 속성과 메서드가 포함될 수 있습니다. 실제로 폼은 컨트롤을 배치하고 폼 창을 표시할 수 있는 클래스 모듈입니다.
세부 사항 클래스 모듈에서 코드 작성에 대한 자세한 내용은 9장, "개체를 사용한 프로그래밍"을 참조하십시오.
Visual Basic의 Professional 및 Enterprise 버전 에는 ActiveX 문서, ActiveX 디자이너 및 사용자 컨트롤도 포함되어 있습니다. 그들은 다양한 파일 확장자를 가진 새로운 모듈 유형을 도입합니다. 코딩 관점에서 이러한 모듈은 양식 모듈로 취급되어야 합니다.
코드 편집기 사용
Visual Basic 코드 편집기는 대부분의 코드가 작성되는 창입니다. 이는 Visual Basic 코드 작성을 용이하게 하는 많은 기능을 갖춘 고도로 전문화된 워드 프로세싱 소프트웨어와 같습니다. 그림 5.4는 "코드 편집기" 창을 보여줍니다.
모듈에서 Visual Basic 코드를 조작해야 하기 때문에 "프로젝트 탐색기"에서 선택한 각 모듈에 대해 독립적인 "코드 편집기" 창을 열어야 합니다. 각 모듈에서, 모듈에 포함된 각 개체에 대해 모듈의 코드는 개체에 해당하는 독립적인 부분으로 세분화됩니다. 부품 간을 전환하려면 "개체 목록 상자"를 사용하십시오. 양식 모듈의 목록에는 일반 섹션, 양식 자체에 대한 섹션 및 양식에 포함된 각 컨트롤에 대한 섹션이 포함됩니다. 클래스 모듈의 경우 목록에는 일반 섹션과 표준 모듈의 클래스 섹션이 포함되며 하나의 일반 섹션만 표시됩니다.
각 코드에는 프로시저 목록 상자를 사용하여 액세스할 수 있는 여러 가지 다른 프로시저가 포함될 수 있습니다. 양식 모듈의 프로시저 목록에는 양식 또는 컨트롤의 각 이벤트 프로시저에 대한 별도의 섹션이 포함되어 있습니다. 예를 들어 Label 컨트롤의 프로세스 목록에는 Change 이벤트 세그먼트, Click 이벤트 세그먼트, DblClick 이벤트 세그먼트 등이 포함됩니다. 클래스 모듈은 클래스 자체의 이벤트 프로시저(초기화 및 종료)만 열거합니다. 표준 모듈은 이벤트를 지원하지 않기 때문에 이벤트 프로시저를 열거하지 않습니다.
모듈의 일반 섹션에 있는 프로시저 목록에는 모듈 수준 변수, 상수 및 DLL 선언이 배치되는 선언 섹션만 포함됩니다. 하위 프로시저나 함수 프로시저를 모듈에 추가하면 해당 프로시저가 선언 섹션 아래 프로시저 목록 상자에 추가됩니다.
코드 편집기 창에서는 두 가지 다른 코드 보기를 사용할 수 있습니다. 한 번에 하나의 프로세스를 볼 수도 있고, 모듈의 모든 프로세스를 줄로 구분하여 볼 수도 있습니다(그림 5.4 참조). 두 보기 사이를 전환하려면 편집기 창 왼쪽 하단에 있는 "선택 보기" 버튼을 활용하세요.
자동완성 코딩
Visual Basic에서는 문, 속성 및 매개 변수를 자동으로 채울 수 있으므로 코드 작성이 더욱 편리해집니다. 코드를 입력하면 편집기는 적절한 선택 사항, 명령문, 함수 프로토타입이나 값을 열거합니다. 도구 메뉴의 옵션 명령을 통해 액세스하면 옵션 대화 상자의 편집기 탭에서 개별 코드에 대한 설정 값을 허용할지 여부를 결정하는 옵션을 사용할 수 있습니다.
코드에 컨트롤 이름을 입력하면 "자동 목록 멤버 속성"이 컨트롤의 드롭다운 속성 시트를 강조 표시합니다(그림 5.5). 속성 이름의 처음 몇 글자를 입력하면 테이블에서 이름이 선택되고 Tab 키를 누르면 항목이 완료됩니다. 이 옵션은 특정 컨트롤에 어떤 속성이 있는지 확실하지 않을 때 매우 유용합니다. 자동 목록 구성원 기능을 비활성화하도록 선택한 경우에도 CTRL J 키 조합을 사용하여 이 기능을 얻을 수 있습니다.
"자동 요약 정보" 기능은 명령문과 함수의 구문을 표시합니다(그림 5.6). 유효한 Visual Basic 문이나 함수 이름을 입력하면 구문이 현재 줄 바로 아래에 표시되고 첫 번째 매개 변수는 굵게 표시됩니다. 첫 번째 매개변수 값을 입력하면 두 번째 매개변수도 굵은 글씨로 다시 나타납니다. CTRL I 키 조합을 사용하여 "자동 빠른 정보"를 얻을 수도 있습니다.
서표
코드 편집기에서 책갈피를 사용하여 특정 코드 줄을 표시하면 나중에 쉽게 돌아올 수 있습니다. 북마크를 켜고 끄는 기능과 기존 북마크로 이동하는 명령은 편집, 북마크 메뉴 항목 또는 편집 도구 모음에서 얻을 수 있습니다.
추가 정보 코드 편집기 창의 다양한 기능을 사용하기 위해 키 조합을 사용하는 방법에 대한 자세한 내용은 "코드 창 바로 가기 키"를 참조하십시오.
코딩 기초
이 섹션에서는 코드 줄을 끊고 병합하는 방법, 주석을 추가하는 방법, 숫자를 사용하는 방법 및 Visual Basic 명명 규칙을 포함하여 코드 작성 메커니즘을 소개합니다.
한 줄 명령문을 여러 줄로 분할
코드 창에서 줄 연속 문자(공백 뒤에 밑줄 표시)를 사용하여 긴 명령문을 여러 줄로 나눌 수 있습니다. 줄 연속 문자를 사용하기 때문에 컴퓨터와 인쇄물 모두에서 코드를 더 쉽게 읽을 수 있습니다. 다음은 줄 연속 문자(_)를 사용하여 코드를 여러 줄로 나눕니다.
Data1.RecordSource=_
SELECT*FROM제목,출판사_
&WHEREPublishers.PubId=제목.PubID_
&ANDPublishers.State='CA'
같은 줄에서는 줄 연속 문자 뒤에 주석을 추가할 수 없습니다. 줄 연속 문자를 사용할 수 있는 위치에는 몇 가지 제한 사항이 있습니다.
같은 줄에 여러 문을 결합
일반적으로 문 종결자 없이 한 줄에 하나의 Visual Basic 문이 있지만 콜론(:)으로 구분하여 두 개 이상의 문을 같은 줄에 배치할 수 있습니다.
Text1.Text=안녕하세요:빨간색=255:Text1.BackColor=
빨간색
그러나 코드를 더 쉽게 읽을 수 있도록 한 줄에 하나의 명령문을 넣는 것이 좋습니다.
자세한 내용은 부록 A, "Visual Basic 사양, 제한 사항 및 파일 형식"을 참조하십시오.
코드에 주석 추가
이 설명서의 예제를 읽을 때 주석 문자(')를 자주 접하게 됩니다. 이 기호는 Visual Basic에 기호 뒤에 오는 내용을 무시하도록 지시합니다. 이는 개발자의 편의와 나중에 소스 코드를 검사할 수 있는 다른 프로그래머의 편의를 위한 코드 조각의 주석입니다. 예를 들어:
'이것은 화면 왼쪽에서 본 것입니다.
'댓글 시작합니다.
Text1.Text=안녕하세요! 텍스트 상자에 입력하세요.
'환영.
주석은 명령문과 같은 줄에 있을 수도 있고, 명령문 뒤에 쓰일 수도 있고, 한 줄 전체를 차지할 수도 있습니다. 위의 코드는 두 가지 상황을 모두 보여줍니다. 주석은 같은 줄의 줄 연속 문자 뒤에 올 수 없다는 점을 기억하십시오.
참고 두 개 이상의 코드 줄을 선택하고 편집 도구 모음에서 주석 블록 또는 주석 블록 제거 버튼을 선택하여 코드 블록에서 주석 기호를 추가하거나 제거할 수 있습니다.
숫자 체계 이해
이 문서에 나오는 대부분의 값은 10진수(기본 10)입니다. 그러나 때로는 16진수(16진수)나 8진수(8진수)를 사용하는 것이 더 편리할 때도 있습니다. Visual Basic에서는 접두사 &H를 사용하여 16진수를 나타내고 &O를 사용하여 8진수를 나타냅니다. 다음 표에서는 동일한 숫자의 10진수, 8진수, 16진수 표현을 보여줍니다.
컴퓨터는 두 시스템 모두에서 숫자를 사용할 수 있으므로 일반적으로 16진수 또는 8진수 시스템을 알 필요가 없습니다. 그러나 16진수를 사용하여 화면 및 컨트롤의 색상을 설정하는 등의 특정 작업에는 일부 숫자 체계가 다른 숫자 체계보다 더 적합합니다.
VisualBasic 명명 규칙
Visual Basic 코드를 작성할 때 많은 요소(Sub 및 Function 프로시저, 변수, 상수 등)를 선언하고 이름을 지정합니다. Visual Basic 코드에서 선언된 프로시저, 변수 및 상수의 이름은 다음 규칙을 따라야 합니다.
1. 문자로 시작해야 합니다.
2. 마침표나 유형 선언 문자(데이터 유형을 지정하는 특수 문자)를 포함할 수 없습니다.
3. 255자를 초과할 수 없습니다. 컨트롤, 폼, 클래스 및 모듈의 이름은 40자를 초과할 수 없습니다.
4. 제한된 키워드와 동일한 이름을 가질 수 없습니다.
제한된 키워드는 Visual Basic에서 사용되는 단어이며 언어의 일부입니다. 여기에는 미리 정의된 문(예: If 및 Loop), 함수(예: Len 및 Abs) 및 연산자(예: Or 및 Mod)가 포함됩니다.
자세한 정보 키워드 테이블에 대한 자세한 내용은 "Visual Basic 6.0 언어 참조 매뉴얼"을 참조하세요.
양식 및 컨트롤은 제한된 키워드와 동일한 이름을 가질 수 있습니다. 예를 들어 컨트롤 루프의 이름을 지정할 수 있습니다. 그러나 Visual Basic에서는 Loop가 키워드를 의미한다고 생각하기 때문에 코드에서 일반적인 방식으로 컨트롤을 참조할 수 없습니다. 예를 들어, 다음 코드는 오류가 발생합니다.
Loop.Visible=True '오류.
제한된 키워드와 이름이 같은 양식이나 컨트롤을 참조하려면 해당 항목을 한정하거나 대괄호([])로 묶어야 합니다. 예를 들어 다음 코드는 오류가 발생하지 않습니다.
MyForm.Loop.Visible=True '양식 이름 사용
'자격을 갖추세요.
[Loop].Visible=True '대괄호
'효과가 있었어요.
대괄호는 양식과 컨트롤을 참조할 때 이런 방식으로 사용할 수 있지만 변수 또는 프로시저 이름이 제한된 키워드와 동일한 경우 변수 선언이나 프로시저 정의 중에는 사용할 수 없습니다. 대괄호를 사용하면 Visual Basic에서 제한된 키워드와 충돌하는 다른 형식 라이브러리에서 제공하는 이름을 허용하도록 할 수도 있습니다.
대괄호를 입력하는 것은 피곤 하므로 양식이나 컨트롤 이름에 대해 덜 제한된 키워드를 사용하는 것이 바람직합니다. 그러나 새 버전의 Visual Basic이 기존 폼이나 컨트롤과 충돌하는 새 키워드를 정의하는 경우 새 버전을 사용하도록 코드를 업데이트할 때 이 기술을 사용할 수 있습니다. _
->