배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Access 버전:   공통
검색어:   폼, 컨트롤, 크기
제목:   컨트롤이 늘었다~ 줄었다~
     
 

새 페이지 1

  STEP> 따라하기

※ 오늘 Daily Tip은 염기웅님이 제공해주신 내용입니다.

오늘은 액세스 폼의 크기가 변함에 따라 특정 컨트롤의 크기를 늘렸다, 줄였다 하는 방법에 대해 알아보겠습니다.

다음은 일반적인 액세스 폼입니다.

큰 문제는 없어 보이지만, 다만 한가지 아쉬운 것은 제품 판매 내역 영역이 다 보이지 않는다는 것입니다. 제품, 회사 이름, 제품 분류, 단가, 수량, 할인율까지는 모두 잘 보이지만, 금액 필드부터는 잘려서 보이지 않습니다. 그래서 마우스를 이용해서 폼의 크기를 조금 늘려 보았습니다.

폼의 크기가 늘어나기는 했지만 폼의 크기만 늘어났지, 우리가 원하는 기능(제품 판매 내역 컨트롤의 내용 모두 보기)하고는 거리가 먼 액세스 폼입니다. 이것이 다음과 같이 나타난다면 얼마나 좋을까요?

이 폼은 액세스 폼의 크기를 키우면 제품 판매 내역컨트롤도 같이 커지고, 폼의 크기를 줄이면 제품 판매 내역컨트롤도 같이 작아집니다.

어떻습니까? 우리가 원하는 대로 액세스 폼 크기를 조절해서 원하는 만큼 데이터를 살펴볼 수 있겠지요? 오늘은 이러한 기능을 어떻게 구현하는지 살펴보도록 하겠습니다.[샘플파일 다운받기]

이러한 기능을 구현하기 위해서는 VBA(Visual Basic for Applications)를 이용해야 합니다. 폼의 Load 이벤트, Resize 이벤트를 이해해야 하고, 폼의 구조에 대해서도 알고 있어야 합니다. 그리고 클래스 모듈(Class Module)라는 것도 이해해야 합니다. 제가 무시무시한 말을 너무 쉽게 하나요?

여러분들 중에는 이러한 기능을 속속들이 공부하는 것에 큰 재미를 느끼는 분들도 있을 것입니다. 하지만 대다수는 기능 자체보다는 이러한 기능을 어떻게 활용하는지에 더 관심이 가겠죠? 따라서 이러한 기능을 어떻게 제작하는지에 대한 논의는 여기서는 다루지 않고, 제가 구현해 놓은 모듈을 활용하여 우리가 원하는 기능을 어떻게 적용할 것인지에 대해서만 논의 하겠습니다. 이 모듈을 어떤 원리로 만들었는가는 예제 파일에 포함된 소스를 살펴보기 바랍니다.

*기능 적용하기*

<1> 우선 이러한 기능을 적용하기 위해서는 예제 파일의 '모듈' 탭에 있는 'FormSize' 모듈이 필요합니다. 이 모듈을 자신의 데이터베이스 파일로 가져오는 것이 첫 번째 단계입니다.

<2> 그 다음은 이 기능을 적용할 폼을 디자인 보기로 엽니다.(예제 파일에서는 'zf007_Orders_연습' 폼으로 실습하기 바랍니다.)

<3> '폼 디자인' 도구모음 중 '코드' 아이콘()을 클릭하여 VBA 창을 엽니다. 그리고 다음 그림과 같이 입력합니다. 이것은 폼 크기조절 모듈을 사용하기 위한 변수를 선언하는 단계입니다.

<4> 다음은 폼에 이벤트 프로시저를 할당할 차례입니다. '폼 디자인 보기'로 다시 돌아와서 다음 그림과 같이 폼의 'On Load' 이벤트 속성을 '[이벤트 프로시저]'로 변경한 다음 만들기 버튼()을 클릭합니다.

<5> 그러면 다음 그림과 같이 VBA 창이 다시 나타납니다. Private Sub End Sub 사이에 커서가 있을 것입니다.

<6> 이곳에 다음 그림과 같이 입력합니다.

이 과정은 폼 크기 조절 모듈을 초기화 하는 과정입니다. 이 때, 세 개의 인수를 정의해야 하는데 Init 메서드의 일반형은 다음과 같습니다.

Init 폼을_가리키는_변수, 구역이름, 크기 조절할_컨트롤이름

이 때 '폼을_가리키는_변수'는 대부분 예제와 같은 'Me'가 될 것입니다. 자기 자신을 지칭하면 되기 때문이죠.

그리고 구역이름 역시 대부분 Me.Section(acDetail)이 될 것입니다. 이것은 본문에 있는 컨트롤일 때 사용하고, 만약 크기가 같이 조절될 컨트롤이 폼 머리글에 있다면 Me.Section(acHeader), 폼 바닥글에 있다면 Me.Section(acFooter)를 적습니다.

그리고 가장 중요한 것은 '크기 조절할_컨트롤이름'입니다. 여러분들이 만든 폼에서 크기 조절할 컨트롤 이름을 적어 넣어야 합니다. 샘플에서 사용된 것의 하위폼 컨트롤 이름은 fsub 입니다.

<7> 지금까지 한 것은 폼 크기조절 모듈을 가동시키기 위한 준비작업이었습니다. 이제 폼 크기가 조절될 때 우리가 지정한 컨트롤 한 개도 따라서 크기가 조절되는 기능을 구현해 봅시다. 이것은 아주 간단합니다. 앞서 이벤트 프로시저를 정의했던 것과 마찬가지로 'On Resize' 이벤트에 이벤트 프로시저를 정의합니다. VBA 창이 나오면 다음과 같이 적어 넣습니다.

이렇게 정의해 주면 모든 작업이 끝납니다. 실제로 폼을 열고 크기조절을 해 보기 바랍니다. 여러분이 지정한 그 컨트롤은 폼의 크기가 늘어남에 따라 크기가 같은 비율로 조절됩니다

이 모듈을 사용하다 보면 아쉬운 점이 많을 것입니다. 컨트롤 한 개만 크기조절이 가능하다든지 하는 아쉬운 점이 있습니다. 다음 번 데일리 팁에서는 이러한 문제를 소극적으로나마 해결하는 시간을 가져보도록 하겠습니다.