양식에 대해 다시 논의하기
양식 디자인 원칙 외에도 애플리케이션이 시작되고 끝나는 위치도 고려해야 합니다. 애플리케이션이 시작될 때 어떻게 보일지 결정하는 몇 가지 기술이 있습니다. 또한 응용 프로그램이 제거될 때 발생하는 일부 처리 과정을 잘 알고 있는 것도 중요합니다.
시작 양식 설정
기본적으로 애플리케이션의 첫 번째 양식은 시작 양식으로 지정됩니다. 이 양식은 응용 프로그램이 실행되기 시작할 때 표시됩니다(따라서 실행될 첫 번째 코드는 양식의 Form_Initialize 이벤트에 있는 코드입니다). 애플리케이션이 시작될 때 다른 폼을 표시하려면 시작 폼을 변경해야 합니다.
시작 양식을 변경하려면 다음 단계를 따르십시오.
1. 프로젝트 메뉴에서 프로젝트 속성을 선택합니다.
2. "일반"을 선택하십시오.
3. "시작 개체" 목록 상자에서 새 시작 양식이 될 양식을 선택합니다.
4. 확인을 선택합니다.
시작 양식 없이 시작
때로는 양식을 로드하지 않고 응용 프로그램을 시작하고 싶을 수도 있습니다. 예를 들어, 데이터 파일을 로드하는 코드를 실행한 다음 데이터 파일의 내용을 기반으로 표시할 여러 가지 양식을 결정할 수 있습니다. 이렇게 하려면 다음 예제와 같이 표준 모듈에 Main이라는 하위 프로세스를 만듭니다.
서브메인()
DimintStatusAsInteger
'사용자 상태를 확인하기 위해 함수 프로시저를 호출합니다.
intStatus=GetUserStatus
'상태에 따라 시작 양식을 표시합니다.
IfintStatus=1그러면
frmMain.Show
또 다른
frmPassWord.Show
종료
이 프로시저는 하위 프로시저여야 하며 양식 모듈 내에 있을 수 없습니다. SubMain 프로세스를 시작 개체로 설정하려면 "프로젝트" 메뉴에서 "프로젝트 속성"을 선택한 다음 "일반"을 선택하고 "시작 개체" 상자에서 "SubMain"을 선택합니다.
시작 시 빠른 표시 표시
데이터베이스에서 많은 양의 데이터를 로드하거나 일부 큰 비트맵을 로드하는 등 시작 시 긴 실행 프로세스가 있는 경우 시작 시 빠른 표시를 제공할 수 있습니다. 빠른 표시는 일반적으로 응용 프로그램 이름, 저작권 정보 및 간단한 비트맵과 같은 콘텐츠를 표시하는 양식입니다. Visual Basic을 시작할 때 표시되는 화면은 빠른 표시입니다.
빠른 표시를 표시하려면 SubMain 프로세스를 시작 개체로 사용하고 Show 메서드를 사용하여 양식을 표시해야 합니다.
PRivateSubMain()
'빠른 표시를 표시합니다.
frmSplash.Show
'여기에 시작 프로세스를 추가하세요.
...
'메인 폼을 표시하고 빠른 디스플레이를 언로드합니다.
frmMain.Show
언로드frmSplash
EndSub
빠른 표시는 일부 시작 루틴이 실행될 때 사용자의 주의를 끌 수 있으며, 애플리케이션이 빠르게 로드되는 듯한 착각을 불러일으킵니다. 이러한 시작 루틴이 완료되면 첫 번째 양식을 로드하고 빠르게 언로드하여 표시할 수 있습니다.
빠르게 표시되는 디자인의 경우 최대한 단순하게 유지하세요. 많은 수의 비트맵이나 많은 수의 컨트롤을 사용하는 경우 빠른 표시 자체가 느리게 로드됩니다.
신청 종료
모든 양식이 닫히고 코드가 실행되지 않으면 이벤트 기반 응용 프로그램의 실행이 중지됩니다. 마지막으로 표시된 양식을 닫았을 때 여전히 숨겨진 양식이 있는 경우 애플리케이션은 종료된 것처럼 보이지만(표시되는 양식이 없기 때문에) 실제로는 모든 숨겨진 양식이 닫힐 때까지 애플리케이션이 계속 실행됩니다. 이는 언로드된 양식의 속성이나 컨트롤에 액세스하면 해당 양식이 암시적으로 자동으로 로드되기 때문에 발생합니다.
응용 프로그램을 닫을 때 이러한 유형의 문제를 피하는 가장 좋은 방법은 모든 양식이 언로드되었는지 확인하는 것입니다. 양식이 두 개 이상인 경우 Forms 컬렉션과 Unload 문을 사용할 수 있습니다. 예를 들어 cmdQuit라는 명령 단추를 기본 폼에서 사용하여 프로그램을 종료할 수 있습니다. 애플리케이션에 양식이 하나만 있는 경우 Click 이벤트 프로시저는 다음과 같이 간단할 수 있습니다.
PrivateSubcmdQuit_Click()
언로드미
EndSub
응용 프로그램이 여러 양식을 사용하는 경우 기본 양식의 Unload 이벤트 프로시저에 코드를 배치하여 이러한 양식을 언로드할 수 있습니다. Forms 컬렉션을 사용하면 모든 양식을 찾아서 닫을 수 있습니다. 다음 코드는 양식 컬렉션을 사용하여 모든 양식을 언로드합니다.
PrivateSubForm_Unload(CancelAsInteger)
디미아진수
'양식 컬렉션을 반복하고 각 양식을 언로드합니다.
Fori=Forms.Count-1to0Step-1
UnloadForms(i)
다음
EndSub
기존의 폼이나 객체의 상태에 관계없이 애플리케이션을 종료해야 하는 경우가 있습니다. 이를 위해 Visual Basic에서는 End 문을 제공합니다.
End 문을 사용하면 애플리케이션이 즉시 종료됩니다. End 문 뒤의 코드는 실행되지 않으며 더 이상 이벤트가 발생하지 않습니다. 특히 Visual Basic에서는 양식의 QueryUnload, Unload 또는 Terminate 이벤트 프로시저를 실행하지 않습니다. 개체에 대한 각 참조는 해제되지만 사용자 고유의 클래스를 정의하는 경우 Visual Basic에서는 이러한 클래스에서 만든 개체의 Terminate 이벤트를 실행하지 않습니다.
End 문 외에도 Stop 문을 사용하여 응용 프로그램을 일시 중지할 수 있습니다. 그러나 Stop 문은 개체에 대한 참조를 해제하지 않으므로 디버깅 중에만 사용할 수 있습니다.
Stop 문에 대한 자세한 내용은 13장, "코드 디버깅 및 오류 처리"의 "인터럽트 모드 사용" 및 언어 참조의 "Stop 문"을 참조하세요. 양식 컬렉션 또는 개체 참조 해제에 대한 자세한 내용은 9장, "개체를 사용한 프로그래밍"을 참조하십시오.
애플리케이션에서 메뉴 사용
많은 간단한 응용 프로그램은 양식과 몇 가지 컨트롤로만 구성되어 있지만 Visual Basic 응용 프로그램의 기능은 메뉴를 추가하여 향상시킬 수 있습니다. 이 섹션에서는 애플리케이션에서 메뉴를 만들고 사용하는 방법을 설명합니다.
메뉴 편집기를 사용하여 메뉴 만들기
메뉴 편집기를 사용하여 새 메뉴와 메뉴 표시줄을 만들고, 기존 메뉴에 새 명령을 추가하고, 기존 메뉴 명령을 자신의 명령으로 바꾸고, 기존 메뉴와 메뉴 표시줄을 수정 및 삭제합니다.
메뉴 편집기를 표시하려면:
도구 메뉴에서 메뉴 편집기를 선택합니다.
-또는-
도구 모음에서 메뉴 편집기 버튼을 클릭합니다. 그러면 그림 6.7과 같이 메뉴 편집기가 열립니다.
대부분의 메뉴 컨트롤 속성은 메뉴 편집기를 사용하여 설정할 수 있지만 모든 메뉴 속성은 속성 창에서도 사용할 수 있습니다. 메뉴 컨트롤의 가장 중요한 두 가지 속성은 다음과 같습니다.
이름 - 코드에서 메뉴 컨트롤을 참조하는 데 사용되는 이름입니다.
캡션 - 컨트롤에 표시되는 텍스트입니다.
Index, Checked 및 NegotiatePosition을 포함한 메뉴 편집기의 기타 속성은 이 장의 뒷부분에서 설명합니다.
메뉴 편집기에서 목록 상자 사용
메뉴 편집기의 아래쪽 부분에 있는 메뉴 컨트롤 목록 상자에는 현재 양식에 대한 모든 메뉴 컨트롤이 나열됩니다. 제목 텍스트 상자에 메뉴 항목을 입력하면 해당 항목이 메뉴 컨트롤 목록 상자에도 나타납니다. 목록 상자에서 기존 메뉴 컨트롤을 선택하여 컨트롤의 속성을 편집합니다.
예를 들어, 그림 6.7은 일반적인 응용 프로그램의 파일 메뉴에 대한 다양한 메뉴 컨트롤을 보여줍니다. 메뉴 컨트롤 목록 상자에서 메뉴 컨트롤의 위치에 따라 해당 컨트롤이 메뉴 제목, 메뉴 항목, 하위 메뉴 제목 또는 하위 메뉴 항목인지가 결정됩니다.
목록 상자 왼쪽에 위치한 메뉴 컨트롤은 메뉴 표시줄에 메뉴 제목으로 나타납니다.
목록 상자의 들여쓰기된 메뉴 컨트롤은 해당 메뉴 제목을 클릭할 때만 메뉴에 나타납니다.
들여쓰기된 메뉴 컨트롤 뒤에 다시 들여쓰기된 일부 메뉴 컨트롤이 있으면 하위 메뉴의 제목이 됩니다. 하위 메뉴 제목 아래에 들여쓰기된 각 메뉴 컨트롤은 해당 하위 메뉴의 메뉴 항목이 됩니다.
Caption 속성으로 하이픈(-)이 포함된 메뉴 컨트롤은 구분선으로 표시됩니다. 구분 표시줄은 메뉴 항목을 논리적 그룹으로 나눕니다. 메뉴 컨트롤은 메뉴 제목이거나 하위 메뉴 항목이 있거나 선택 또는 비활성화되었거나 바로 가기 키가 있는 경우 구분 표시줄로 사용할 수 없습니다.
메뉴 편집기에서 메뉴 컨트롤을 만들려면 다음 단계를 따르세요.
1.양식을 선택하세요
2. 도구 메뉴에서 메뉴 편집기를 선택합니다. -또는- 도구 모음에서 메뉴 편집기 버튼을 클릭하세요.
3. 제목 텍스트 상자에 첫 번째 메뉴 제목에 대해 메뉴 표시줄에 표시할 텍스트를 입력합니다. 특정 문자를 메뉴 항목의 선택 키로 사용하려면 해당 문자 앞에 (&) 문자를 추가할 수도 있습니다. 메뉴에서 이 문자에는 자동으로 밑줄이 그어집니다.
메뉴 제목 텍스트가 메뉴 컨트롤 목록 상자에 나타납니다.
4. 이름 텍스트 상자에 코드에서 메뉴 컨트롤을 참조하는 데 사용할 이름을 입력합니다. 이 장 뒷부분의 "메뉴 제목 및 이름 지정 지침"을 참조하십시오.
5. 왼쪽 또는 오른쪽 화살표 버튼을 클릭하여 컨트롤의 들여쓰기 수준을 변경합니다.
6. 필요한 경우 컨트롤의 다른 속성을 설정할 수도 있습니다. 이 작업은 메뉴 편집기나 나중에 "속성" 창에서 수행할 수 있습니다.
7. 다른 메뉴 컨트롤을 생성하려면 "다음"을 선택하십시오. -또는- 기존 컨트롤 사이에 메뉴 컨트롤을 추가하려면 삽입을 클릭합니다. 위쪽 및 아래쪽 화살표 버튼을 클릭하여 기존 메뉴 컨트롤 간에 컨트롤을 이동할 수도 있습니다.
8. 양식의 모든 메뉴 컨트롤이 생성되면 "확인"을 선택하여 메뉴 편집기를 닫습니다. 생성된 메뉴 제목이 폼에 표시됩니다. 디자인 타임에 메뉴 제목을 클릭하면 해당 메뉴 항목이 드롭다운됩니다.
별도의 메뉴 항목
구분 표시줄은 메뉴 항목 사이에 수평선으로 메뉴에 나타납니다. 항목이 많은 메뉴에서는 구분 막대를 사용하여 항목을 논리적 그룹으로 나눌 수 있습니다. 예를 들어 Visual Basic의 "도움말" 메뉴는 그림 6.8과 같이 구분선을 사용하여 메뉴 항목을 세 그룹으로 나눕니다.
메뉴 편집기에서 구분 표시줄을 만들려면 다음 단계를 따르세요.
1. 기존 메뉴에 구분 표시줄을 추가하려면 "삽입"을 선택하고 구분하려는 메뉴 항목 사이에 메뉴 컨트롤을 삽입하세요.
2. 필요한 경우 오른쪽 화살표 버튼을 클릭하여 새 메뉴 항목을 분리된 메뉴 항목과 동일한 수준으로 들여씁니다.
3. 제목 텍스트 상자에 하이픈(-)을 입력합니다.
4. "이름" 속성을 설정합니다.
5. 확인을 선택하여 메뉴 편집기를 닫습니다.
구분 표시 줄은 메뉴 컨트롤로 생성되지만 Click 이벤트에 응답하지 않으며 선택할 수 없습니다.
액세스 키 및 바로 가기 키 할당
액세스 키와 바로 가기 키를 정의하여 메뉴 명령에 대한 키보드 액세스를 개선합니다.
액세스 키
액세스 키를 사용하면 ALT 키를 누르고 지정된 문자를 입력하여 메뉴를 열 수 있습니다. 메뉴가 열리면 할당된 문자(액세스 키)를 눌러 컨트롤을 선택할 수 있습니다. 예를 들어 ALT E 키를 눌러 "편집" 메뉴를 연 다음 P 키를 눌러 "붙여넣기" 메뉴 항목을 선택합니다. 메뉴 컨트롤의 제목에서 지정된 액세스 키는 그림 6.9와 같이 밑줄이 그어진 문자로 나타납니다.
메뉴 편집기의 메뉴 컨트롤에 액세스 키를 할당하려면 다음 단계를 따르세요.
1. 접속 키를 할당할 메뉴 항목을 선택합니다.
2. 제목 상자에서 선택 키로 사용하려는 문자 바로 앞에 (&) 문자를 입력합니다.
예를 들어, 그림 6.9에 표시된 Edit 메뉴가 열려 있으면 다음 Caption 속성 설정 값이 해당 키에 응답합니다.
메뉴에서는 중복된 액세스 키를 사용할 수 없습니다. 여러 메뉴 항목이 동일한 액세스 키를 사용하는 경우 해당 키는 아무런 효과가 없습니다. 예를 들어 C가 "잘라내기"와 "복사" 모두에 대한 액세스 키인 경우 "편집" 메뉴를 선택하고 C를 입력하면 "복사" 명령이 선택되지만 ENTER 키를 누른 후에만 application 이 명령이 실행됩니다. 그리고 "cut" 명령은 전혀 실행되지 않습니다.
단축키
바로가기 키를 누르면 메뉴 항목이 즉시 실행됩니다. 자주 사용하는 메뉴 항목에 단축키를 할당할 수 있어 Alt 키를 누른 채 메뉴 제목을 눌러 문자에 접근한 뒤 메뉴를 누르는 3단계 방식이 아닌 1단계 키보드 접근 방식을 제공합니다. 캐릭터에 접근할 수 있는 아이템입니다. 바로가기 키 할당에는 CTRL F1 키 또는 CTRL A 키와 같은 기능 키와 제어 키의 조합이 포함됩니다. 그림 6.10과 같이 메뉴의 해당 메뉴 항목 오른쪽에 나타납니다.
메뉴 항목에 바로가기 키를 지정하려면 다음 단계를 따르세요.
1. "메뉴 편집기"를 엽니다.
2. 이 메뉴 항목을 선택하십시오.
3. "단축키" 콤보 상자에서 기능 키 또는 키 조합을 선택합니다.
단축키 할당을 제거하려면 목록 상단에서 "(없음)"을 선택하세요.
단축키는 메뉴에 자동으로 표시되므로 메뉴 편집기의 제목 상자에 Ctrl 키를 입력할 필요가 없습니다.
메뉴 제목 및 명명 지침
다른 응용 프로그램과의 일관성을 유지하려면 메뉴를 만들 때 확립된 명명 지침을 따르는 것이 좋습니다.
캡션 속성 설정
메뉴 항목에 제목 값을 할당할 때 다음 지침을 따라야 합니다.
1. 메뉴의 항목 이름은 고유해야 하지만, 다른 메뉴의 유사한 작업 항목은 동일한 이름을 가질 수 있습니다.
2. 프로젝트 이름은 한 단어, 복합어 또는 여러 단어일 수 있습니다.
3. 각 프로젝트 이름에는 키보드로 명령을 선택하기 위한 고유한 메모리 액세스 문자가 있어야 합니다. 액세스 문자는 메뉴 제목의 첫 글자여야 합니다. 단, 다른 문자가 기억하기 더 쉽기 때문에 두 메뉴 제목이 동일한 액세스 문자를 사용할 수는 없습니다. 선택키 및 바로가기 키 지정에 대한 자세한 내용은 이 장 앞부분의 "메뉴 편집기를 사용하여 메뉴 생성" 섹션을 참조하십시오.
4. 명령이 완료되기 전에 추가 정보가 필요한 경우 대화 상자를 표시하는 명령("다른 이름으로 저장...", "기본 설정...")과 같이 이름 뒤에 줄임표(...)가 있어야 합니다. .
5. 프로젝트 이름은 최대한 짧게 유지하세요. 응용 프로그램을 현지화할 경우 외국어 버전에서 단어 길이가 거의 30% 증가하여 개별 메뉴 항목을 나열할 공간이 충분하지 않을 수 있습니다. 응용 프로그램 지역화에 대한 자세한 내용은 16장 "국제 배포"를 참조하십시오.
메뉴 명명 규칙
코드를 더 읽기 쉽고 유지 관리하기 쉽게 만들려면 메뉴 편집기에서 이름 속성을 설정할 때 설정된 명명 규칙을 따르는 것이 좋습니다. 대부분의 명명 규칙 규칙에서는 접두사(즉, 메뉴 컨트롤의 경우 mnu)와 그 뒤에 최상위 메뉴 이름(예: 파일)을 사용하여 객체를 식별할 것을 권장합니다. 하위 메뉴의 경우 하위 메뉴 제목(예: mnuFileOpen)이 뒤에 옵니다.
자세한 내용은 부록 B, "Visual Basic 코딩 규칙"에서 권장되는 명명 규칙의 예를 참조하세요. 권장되는 명명 규칙의 예는 "VisualBasic 코딩 규칙"을 참조하세요.
->