객체 생성
개체를 만드는 가장 쉬운 방법은 도구 상자에서 컨트롤을 두 번 클릭하는 것입니다. 그러나 Visual Basic과 다른 응용 프로그램에서 사용할 수 있는 모든 개체를 최대한 활용하려면 Visual Basic의 프로그래밍 기능을 사용하여 런타임에 개체를 만들 수 있습니다.
1. 객체 변수를 사용하여 객체 참조 생성
2. 클래스 모듈을 사용하여 "처음부터" 자신만의 개체를 만듭니다.
3. 컬렉션 개체를 사용하여 나만의 컬렉션 만들기
개체에 액세스하는 방법에 대한 자세한 내용은 다른 장에서 제공됩니다. 예를 들어 CreateObject 및 GetObject 함수는 10장 "구성 요소를 사용한 프로그래밍"에서 설명합니다.
개체 변수 사용
변수는 값을 저장하는 것 외에도 객체를 참조할 수 있습니다. 변수에 값을 할당하는 것과 마찬가지로 같은 이유로 개체를 변수에 할당할 수 있습니다.
1. 변수 이름은 포함된 값(또는 이 경우 참조하는 개체)보다 짧고 기억하기 쉬운 경향이 있습니다.
2. 코드 실행 시 다른 객체를 참조할 수 있도록 변수를 변경해야 합니다.
3. 객체 자체를 반복적으로 참조하는 것보다 객체가 포함된 변수를 참조하는 것이 더 효율적입니다.
개체 변수를 사용하는 것은 개체를 변수에 할당하는 추가 단계가 있다는 점을 제외하면 일반 변수를 사용하는 것과 동일합니다.
4. 먼저 변수를 선언합니다.
DimvariableAsclass
5. 그런 다음 개체를 변수에 할당합니다.
설정변수=개체
객체 변수 선언
객체 변수를 선언하는 방법은 Dim, ReDim, Static, PRivate, Public을 사용하여 다른 변수를 선언하는 방법과 동일합니다. 유일한 차이점은 이 장의 뒷부분에서 소개할 선택적 New 키워드와 Class 매개 변수입니다. 구문은 다음과 같습니다.
{Dim|ReDim|Static|Private|Public}variableAs[New]class
예를 들어 frmMain이라는 응용 프로그램의 양식을 참조하는 개체 변수를 선언할 수 있습니다.
DimFormVarAsNewfrmMain '유형을 frmMain으로 선언
' 개체 변수입니다.
또한 애플리케이션의 모든 양식을 참조하는 개체 변수를 선언할 수도 있습니다.
DimanyFormAsForm '일반 양식 변수.
마찬가지로, 애플리케이션의 모든 텍스트 상자를 참조할 수 있는 개체 변수를 선언할 수 있습니다.
DimanyTextAsTextBox '모든 텍스트 상자를 참조할 수 있습니다.
'(단, 텍스트 상자만 해당).
모든 유형의 컨트롤을 참조할 수 있는 개체 변수를 선언할 수도 있습니다.
DimanyControlAsControl '일반 제어 변수.
애플리케이션에서 특정 양식을 참조하는 양식 변수를 선언할 수 있지만 특정 컨트롤을 참조하는 제어 변수는 선언할 수 없습니다. 특정 유형의 컨트롤(예: TextBox 또는 ListBox)을 참조하는 컨트롤 변수를 선언할 수 있지만 해당 유형의 특정 컨트롤(예: txtEntry 또는 List1)은 참조하지 않습니다. 그러나 특정 컨트롤을 해당 유형의 변수에 할당할 수 있습니다. 예를 들어 목록 상자 lstSample이 있는 양식은 다음과 같이 코딩할 수 있습니다.
DimobjDemoAsListBox
SetobjDemo=lst샘플
할당 개체 변수
Set 문을 사용하여 개체를 개체 변수에 할당합니다.
설정변수=개체
개체 변수가 개체를 참조하기를 원할 때마다 Set 문을 사용할 수 있습니다.
때로는 개체 변수, 특히 제어 변수를 사용하여 입력하는 코드를 직접 단축할 수 있습니다. 예를 들어 원본 코드는 다음과 같습니다.
IffrmAccountDisplay!txtAccountBalance.Text<0Then
frmAccountDisplay!txtAccountBalance.BackColor=0
frmAccountDisplay!txtAccountBalance.ForeColor=255
종료
제어 변수를 사용하면 프로그램이 크게 단축될 수 있습니다.
DimBalAsTextBox
SetBal=frmAccountDisplay!txtAccountBalance
IfBal.Text<0Then
Bal.BackColor=0
Bal.ForeColor=255
종료
특정 개체 유형과 일반 개체 유형
특정 개체 변수는 특정 유형의 개체 또는 클래스를 참조해야 합니다. 특정 양식 변수는 응용 프로그램에서 하나의 양식만 참조할 수 있습니다(해당 양식의 여러 인스턴스 중 하나에서 참조될 수 있음). 마찬가지로 특정 컨트롤 변수는 TextBox 또는 ListBox와 같은 응용 프로그램의 특정 유형의 컨트롤만 참조할 수 있습니다. 예제를 보고 새 프로젝트를 열고 양식에 텍스트 상자를 배치하세요. 양식에 다음 코드를 추가합니다.
PrivateSubForm_Click()
DimanyTextAsTextBox
SetanyText=텍스트1
anyText.Text=안녕하세요
EndSub
응용 프로그램을 실행하고 양식을 클릭하십시오. 텍스트 상자의 Text 속성이 Hello로 변경됩니다.
일반 개체 변수는 여러 특정 개체 유형 중 하나를 참조할 수 있습니다. 예를 들어, 일반 양식 변수는 애플리케이션의 모든 양식을 참조할 수 있으며, 일반 제어 변수는 애플리케이션의 모든 양식에 대한 모든 컨트롤을 참조할 수 있습니다. 예제를 보고 새 프로젝트를 열고 여러 개의 Frame, Label 및 CommandButton 컨트롤을 임의의 순서로 양식에 배치하십시오. 양식에 다음 코드를 추가합니다.
PrivateSubForm_Click()
DimanyControlAsControl
SetanyControl=Form1.Controls(3)
anyControl.Caption=안녕하세요
EndSub
프로그램을 실행하고 양식을 클릭하십시오. 방금 양식에 배치한 세 번째 컨트롤의 제목이 Hello로 변경됩니다.
Visual Basic에는 네 가지 일반 개체가 있습니다.
일반 개체 변수는 변수가 특정 유형의 개체를 참조하는지 여부를 런타임에 알 수 없는 경우 유용합니다. 예를 들어, 애플리케이션의 모든 양식에서 작동하는 코드를 작성하려면 일반 양식 변수를 사용해야 합니다.
응용 프로그램에는 하나의 MDI 양식만 있을 수 있으므로 일반 MDIForm 유형을 사용할 필요는 없습니다. MDI 양식을 참조하는 양식 변수를 선언해야 할 때마다 일반 MDIForm 유형 대신 특정 MDIForm 유형(MDIForm1 또는 MDI 양식의 Name 속성에 지정한 이름)을 사용할 수 있습니다. 실제로 Visual Basic에서는 응용 프로그램을 실행하기 전에 특정 양식 유형을 참조하는 속성과 메서드를 확인할 수 있으므로 항상 특정 MDIForm 유형을 사용해야 합니다.
일반 MDIForm 형식은 완전성을 위해서만 제공되며 단일 응용 프로그램에 여러 MDI 양식을 포함하는 Visual Basic의 향후 버전에서는 유용합니다.
객체로 형태
양식은 애플리케이션 인터페이스를 구성하는 데 가장 일반적으로 사용되지만 애플리케이션의 다른 모듈에서 호출하는 객체이기도 합니다. 양식은 클래스 모듈과 밀접하게 관련되어 있습니다. 둘 사이의 주요 차이점은 양식은 시각적 개체인 반면 클래스 모듈에는 시각적 인터페이스가 없다는 것입니다.
사용자 정의 메서드 및 속성 추가
사용자 지정 메서드 및 속성을 양식에 추가하고 애플리케이션의 다른 모듈에서 액세스할 수 있습니다. 양식에 대한 새 메서드를 만들려면 Public으로 선언된 프로시저를 추가하세요.
'Form1을 사용자 정의하는 방법입니다.
PublicSubLateJobsCount()
.
.'<문장>
.
EndSub
LateJobsCount 프로시저는 다음 문을 사용하여 다른 모듈에서 호출할 수 있습니다.
Form1.LateJobsCount
양식에 대한 새 속성을 만드는 것은 양식 모듈에서 공용 변수를 선언하는 것만큼 간단합니다.
PublicIDNumberAsInteger
다음 두 문을 사용하여 다른 모듈에서 Form1의 IDNumber 값을 설정하고 반환할 수 있습니다.
Form1.ID번호=3
Text1.Text=Form1.IDNumber
속성 프로시저를 사용하여 사용자 정의 속성을 양식에 추가할 수도 있습니다.
세부 사항 9장, "개체를 사용한 프로그래밍"에서는 속성 절차에 대한 자세한 자료를 제공합니다.
양식을 로드하지 않고도 양식의 변수나 사용자 정의 메서드를 호출할 수 있으며 양식의 사용자 정의 속성을 설정할 수도 있습니다. 결과적으로 양식을 메모리에 로드하지 않고도 양식에 대한 코드를 실행할 수 있습니다. 마찬가지로 해당 속성이나 메서드를 참조하지 않고 컨트롤을 참조하면 양식이 로드되지 않습니다.
신규 키워드를 사용하세요
New 키워드를 사용하여 해당 클래스에 의해 정의된 개체로 처리되는 새 개체를 만듭니다. New는 클래스 모듈에 정의된 컬렉션, 양식 및 클래스의 인스턴스를 만드는 데 사용할 수 있습니다.
양식에 New 키워드 사용
디자인 타임에 생성된 양식은 클래스입니다. 이 클래스의 새 인스턴스는 New 키워드를 사용하여 만들 수 있습니다. 이 프로세스가 실제로 실행되는 모습을 보려면 폼에 명령 단추와 기타 여러 컨트롤을 그립니다. 속성 창에서 양식의 Name 속성을 Sample로 설정합니다. 명령 단추의 Click 이벤트 프로시저에 다음 코드를 추가합니다.
DimxAsNew샘플
x.표시
응용 프로그램을 실행하고 명령 단추를 여러 번 클릭하십시오. 맨 앞의 양식을 옆으로 옮깁니다. 양식은 시각적 인터페이스가 있는 클래스이므로 추가 복사본이 표시됩니다. 각 양식에는 양식이 디자인된 동일한 위치에 동일한 컨트롤이 있습니다.
양식 변수와 로드된 양식의 인스턴스가 항상 존재하도록 하려면 로컬 변수 대신 정적 또는 공용 변수를 사용하십시오.
Set 문과 함께 New 키워드를 사용할 수도 있습니다. 명령 단추의 Click 이벤트 프로시저에 있는 코드를 사용해 보십시오.
DimfAsForm1
Setf=NewForm1
f.Caption=안녕하세요
f.쇼
Set 문과 함께 New 키워드를 사용하면 실행 속도가 빨라지므로 이 방법을 권장합니다.
다른 개체에 New 키워드 사용
New 키워드를 사용하여 클래스 모듈에 정의된 클래스에서 컬렉션과 개체를 만들 수 있습니다. 다음 예를 사용하여 이 작업 프로세스를 설명합니다.
이 예에서는 New 키워드가 클래스의 인스턴스를 만드는 방법을 보여줍니다. 새 프로젝트를 열고 Form1에 CommandButton 컨트롤을 그립니다. 프로젝트 메뉴에서 클래스 모듈 추가 명령을 선택하여 프로젝트에 클래스 모듈을 추가합니다. 클래스 모듈의 Name 속성을 ShowMe로 설정합니다.
Form1의 다음 코드는 ShowMe 클래스의 새 인스턴스를 만들고 클래스 모듈에 포함된 프로시저를 호출합니다.
PublicclsNewAsShowMe
PrivateSubCommand1_Click()
SetclsNew=새ShowMe
clsNew.ShowFrm
EndSub
클래스 모듈의 ShowFrm 프로시저는 Form1 클래스의 새 인스턴스를 만들고 양식을 표시한 다음 최소화합니다.
하위쇼Frm()
DifrmNewAsForm1
SetfrmNew=새양식1
frmNew.Show
frmNew.WindowState=1
EndSub
이 예제를 적용하려면 응용 프로그램을 실행하고 명령 단추를 여러 번 클릭하십시오. ShowMe 클래스의 새 인스턴스가 만들어질 때마다 바탕 화면에 최소화된 양식 아이콘이 나타나는 것을 볼 수 있습니다.
New를 사용하여 객체를 생성하는 방법에 대한 자세한 내용은 10장 "구성 요소 프로그래밍"을 참조하십시오.
새로운 키워드 제한
다음 표에서는 New 키워드로 수행할 수 없는 작업을 설명합니다.
객체에 대한 참조를 해제합니다.
모든 개체는 메모리와 시스템 리소스를 사용합니다. 개체가 더 이상 사용되지 않으면 이러한 리소스를 즉시 해제하는 것이 좋은 프로그래밍 습관입니다.
언로드를 사용하여 메모리에서 양식이나 컨트롤을 언로드합니다.
개체 변수가 차지하는 리소스를 해제하려면 Nothing을 사용합니다. Set 문을 사용하여 개체 변수에 Nothing을 할당합니다.
자세한 내용은 "Visual Basic 6.0 언어 참조 설명서"의 "Unload Event" 및 "Nothing" 섹션을 참조하세요.
프로시저에 객체 전달
Visual Basic에서는 개체를 프로시저에 전달할 수 있습니다. 다음 코드 예제에서는 양식에 CommandButton 컨트롤이 있다고 가정합니다.
PrivateSubCommand1_Click()
'Demo 서브루틴을 호출하고 양식에 전달합니다.
데모양식1
EndSub
PrivateSubDemo(xAsForm1)
'양식을 화면 중앙에 배치합니다.
x.왼쪽=(화면.너비-x.너비)/2
EndSub
참조를 통해 개체를 매개 변수에 전달한 다음 프로시저 내에서 해당 매개 변수를 새 개체로 설정할 수 있습니다. 실제로 이를 확인하려면 프로젝트를 열고 두 번째 양식을 삽입하세요. 각 형태에 그림 상자를 배치합니다. 변경해야 하는 속성 설정 값은 다음 표와 같습니다.
Form1_Click 이벤트 프로시저는 Form2의 GetPicture 프로시저를 호출하고 빈 그림 상자를 전달합니다.
PrivateSubForm_Click()
Form2.GetPicturePicture1
EndSub
Form2의 GetPicture 프로세스는 Form2에 있는 그림 상자의 Picture 속성을 Form1의 빈 그림 상자에 할당합니다.
개인objXapictureBox
PublicSubGetPicture(xAsPictureBox)
'전달된 그림 프레임을 개체 변수에 할당합니다.
SetobjX=x
'Form1의 그림 상자에 그림 속성 값을 할당합니다.
objX.Picture=그림2.Picture
EndSub
이 예제를 적용하려면 프로그램을 실행하고 Form1을 클릭합니다. Form1의 그림 상자에 Form2의 아이콘이 나타나는 것을 볼 수 있습니다.
세부 정보 위 항목은 개체에 대한 개요를 제공하기 위한 것입니다. 자세한 내용은 9장, "개체를 사용한 프로그래밍" 및 10장, "구성 요소를 사용한 프로그래밍"을 참조하십시오.
->