Delphi란...{5}
폼에서 컴포넌트 다루기
──────────────────────────────────
이번에는 폼에서 컴포넌트를 다루는 기초적인 방법들을 알아보겠다.
개발자가 윈도우의 기본적인 인터페이스에 익숙해져 있다면, 델파이
의 폼에서 컴포넌트를 다루는 것에도 쉽게 익숙해질 것은 자명한 일
이다.
역시 이번에도 다시 사용할 수 있는 About 상자를 만들어 보면서 폼
에서 컴포넌트를 다루는 방법을 알아보기로 한다.
=> About 상자를 만들기 위하여 새로운 프로젝트를 시작하자.
메뉴의 < File / New Project > 를 선택하면 된다.
폼의 속성 설정
──────────────────────────────────
Form1의 속성을 다음과 같이 설정하도록 하라.
──────────────────
속성 값
──────────────────
Name AboutBox
Caption About
BorderStyle bsDialog
Position poScreenCenter
──────────────────
BorderStyle속성을 bsDialog로 설정하면 폼에서 최소화버튼과 최대화
버튼이 나타나지 않는다. 그리고 윈도우의 크기를 조정할 수 없게 된
다. 물론 이것은 프로그램 디자인시에는 해당하지 않고 프로그램을
실행시킬때에 해당된다. 즉 프로그램 디자인시에는 BorderStyle 속성
을 bsDialog로 설정해도 최대화, 최소화버튼이 나타나며 윈도우의 크
기도 조정할 수 있다.
그리고 Position 속성을 poScreenCenter로 설정하면 프로그램 실행시
윈도우가 자동적으로 화면의 중앙에 나타나게 된다. 이것 역시 프로
그램 디자인시에는 해당하지 않는다.
Name 속성
─────
컴포넌트의 모든 속성 중에서 Name 속성만큼 중요한 것은 없다. 모든
컴포넌트들은 하나의 프로그램에서 독자적인 Name을 가져야 한다. 그
러므로 의미있는 이름을 부여하는 것은, 코드를 이해하기 쉽게 작성
하고 이름이 같아서 충돌하는 것을 방지하는 것이 된다.
컴포넌트의 Name은 Object Pascal의 이름 짓는 규정에 따라야 한다.
만약 규정에 맞지 않는 이름을 부여하였을 경우에는 다음과 같은 에
러 메시지를 뿜어 낸다.
" is not a valid component name."
Object Pascal의 이름 짓는 규정은 차후에 자세하게 다루도록 하겠다.
=> 이제 Additional 컴포넌트 페이지에서 BitBtn 컴포넌트를 선택하
고 About 상자의 중앙 아래 부분을 클릭하여 위치시켜 보라.
┌─┬────────────────┬─┬─┐
│==│ About │▼│▲│
├─┴────────────────┴─┴─┤
│ │
│ │
│ │
│ │
│ │
│ │
│ ┌──────┐ │
│ │ BitBtn1 │ │
│ └──────┘ │
└──────────────────────┘
폼에 있는 컴포넌트 선택하기
──────────────────────────────────
폼에 있는 컴포넌트를 선택하는 방법에는 몇가지가 있다. 이 방법에
는 대부분의 그룹 컴포넌트들, 즉 다른 컴포넌트를 포함하고 있는 컴
포넌트들도 해당한다.
한개의 컴포넌트를 선택하려면 다음 중 한가지 방법을 사용할 수 있
다.
@ 폼에 있는 컴포넌트를 마우스로 클릭한다.
@ 오브젝트 인스펙터(Object Inspector)의 오브젝트 실렉터(Object
Selector)에서 원하는 컴포넌트를 선택한다.
@ 폼이 활성화된 상태에서 탭 키를 이용하여 선택한다.
여러 개의 컴포넌트를 함께 선택하려면 다음 중 한가지 방법을 사용
한다.
@ Shift 키를 누르고 있는 상태에서 원하는 컴포넌트들을 계속 클
릭한다.
@ 선택하고자 하는 컴포넌트들이 있는 곳 밖에 마우스 포인터를 위
치시키고 마우스 단추를 누른채 컴포넌트들을 포함하도록 마우스
를 드래그한다. (만약 선택하기 윈하는 컴포넌트들이 Panel이나
GroupBox같은 그룹 컴포넌트안에 있다면, Ctrl 키를 누르고 드래
그한다.)
이렇게 마우스를 드래그하면 사각형이 그려지며, 마우스를 놓으
면 그 사각형 안에 있는 컴포넌트들은 한꺼번에 선택된다.
폼에 있는 모든 컴포넌트들을 선택하려면, 메뉴의
을 선택하면 된다.
폼에 있는 컴포넌트의 크기 조정
───────────────
폼에 있는 컴포넌트를 선택하면 크기조정 핸들이라고 하는 검은색의
작은 사각형이 컴포넌트의 주위에 생긴다. 이 작은 사각형을 마우스
로 드래그하여 크기를 변경할 수 있다.
한 개의 컴포넌트의 크기를 변경하려면 위와 같이 하면 되지만, 여러
개의 컴포넌트의 크기를 한꺼번에 변경시키려면 다음과 같이 하면된
다.
1. 크기를 변경하고자하는 컴포넌트들을 선택하라.
2. 메뉴의 를 선택하면 크기 조정 대화상자가 나타날
것이다. (선택한 컴포넌트 주위에 마우스 포인터를 위치시키고
마우스 오른쪽 버튼을 누르면 빠른 메뉴가 나타나는데, 여기서
를 선택해도 같은 결과가 나온다.)
3. 원하는 크기를 선택하든지 입력하고 를 선택한다.
=> 이제 About 상자에 Standard 페이지에 있는 Panel 컴포넌트를 추
가하고 크기를 조정하여 다음과 같이 만들어 보라.
┌─┬────────────────┬─┬─┐
│==│ About │▼│▲│
├─┴────────────────┴─┴─┤
│┌────────────────────┐│
││ ││
││ ││
││ Panel1 ││
││ ││
││ ││
││ ││
│└────────────────────┘│
│ ┌──────┐ │
│ │ BitBtn1 │ │
│ └──────┘ │
└──────────────────────┘
여러 개의 같은 컴포넌트를 폼에 추가하기
────────────────────
여러 개의 같은 컴포넌트를 여러개 하나의 폼 안에 추가할 필요가 있
을 수 있다. 이때는 다음과 같이 간단히 할 수 있다.
1. Shift 키를 누른다.
2. Shift 키를 누른채로 원하는 컴포넌트를 마우스로 선택한다. 그
리고 폼의 원하는 위치를 클릭하여 컴포넌트를 추가하고, 계속
원하는 위치를 클릭하여 추가한다. Shift 키를 누른채로 컴포넌
트를 선택하면 그 컴포넌트를 폼에 추가한 후에도 선택이 해제
되지 않기 때문에 계속 추가할 수 있다.
3. 원하는 수만큼 추가하였으면, 컴포넌트 팔레트의 왼쪽에 있는
포인터 아이콘(화살표가 있는 아이콘)을 클릭하여 선택을 해제
한다.
=> 두 개의 Label 컴포넌트를 다음과 같이 추가하여 보자.
┌─┬─────────────────┬─┬─┐
│==│ About │▼│▲│
├─┴─────────────────┴─┴─┤
│┌─────────────────────┐│
││ ││
││ ││
││ Panel1 ││
││ ││
││ ││
││ ││
│└─────────────────────┘│
│ ┌──────┐ │
│ │ BitBtn1 │ Label1 Label2│
│ └──────┘ │
└───────────────────────┘
컴포넌트 그룹짓기
──────────────────────────────────
델파이는 다른 컴포넌트를 포함할 수 있는 컴포넌트들을 제공한다.
그것들에는 GroupBox, Panel, Notebook, TabbedNotebook, ScrollBox
등이 있다. 이런 컴포넌트들을 흔히 컨테이너 컴포넌트(Container
Component)라고 부른다. 개발자는 디자인시에 컨테이너 컴포넌트를
이용하여 다른 여러개의 컴포넌트들을 그룹지어서 마치 하나의 컴포
넌트를 다루는 것처럼 다룰 수 있고, 사용자가 일목요연하게 프로그
램의 의도를 파악하게 할 수 있다.
개발자가 컨테이너 컴포넌트 안에 다른 컴포넌트를 추가하면, 컴포넌
트와 컨테이너 컴포넌트사이에는 부모 자식 관계가 만들어진다. 그래
서 개발자가 부모 컴포넌트(컨테이너 컴포넌트)를 다른 곳으로 이동
하면 자식 컴포넌트도 함께 이동된다. 그러나 반대로 자식 컴포넌트
를 이동하면 부모 컴포넌트는 이동되지 않는다. 그리고 부모 자식관
계가 이루어진 경우에 자식 컴포넌트를 부모 컴포넌트 밖으로 이동시
킬 수 없다.
컴포넌트들을 그룹짓기 위해서는 다음과 하면 된다.
1. GroupBox나 Panel같은 컨테이너 컴포넌트를 폼에 추가한다.
2. 컨테이너 컴포넌트가 선택되어 있는 상태에서 다른 컴포넌트를
추가한다. 여기서 반드시 컨테이너 컴포넌트가 선택되어 있어야
한다는 것을 기억하라. 선택되어 있지 않았을 경우에는 그룹이
지어지지 않는다.
컨테이너 컴포넌트에 같은 컴포넌트를 여러개 추가할 경우에는 컴포
넌트를 선택할 때 Shift 키를 누르고 선택하고 계속 원하는 수만큼
추가하면 되는 것은 위에서 언급한 것과 같다.
=> 이제 두개의 Label 컴포넌트를 Panel 컴포넌트 안에 추가하여
보자. Panel 컴포넌트가 선택되어 있는 상태에서 추가해야 한다
는 사실을 잊지 말자.
┌─┬─────────────────┬─┬─┐
│==│ About │▼│▲│
├─┴─────────────────┴─┴─┤
│┌─────────────────────┐│
││ ││
││ ││
││ Label3 Panel1 ││
││ ││
││ Label4 ││
││ ││
│└─────────────────────┘│
│ ┌──────┐ │
│ │ BitBtn1 │ Label1 Label2│
│ └──────┘ │
└───────────────────────┘
컴포넌트를 잘라내고, 복사하고, 붙이고, 지우기
──────────────────────────────────
개발자는 마치 워드프로세서에서 원하는 문장을 블럭잡아서 잘라내고
복사하고 붙이는 것처럼 폼에 있는 컴포넌트도 그렇게 할 수 있다.
한 폼에서 뿐만 아니라 다른 폼으로 할 수도 있고, 폼에 있는 컨테이
너 컴포넌트에서 다른 곳으로 할 수도 있다.
컴포넌트를 복사하면 그 컴포넌트에 설정된 속성과 이벤트 핸들러까
지 복사된다. 그러나 Name속성은 같아서는 안되므로 델파이가 자동으
으로 바꾸어 준다.
컴포넌트를 잘라내려면, 잘라낼 컴포넌트를 선택하고 메뉴의
을 선택하든지, 단축키 Ctrl-X를 누르면 되고, 복사하려면
메뉴의 를 선택하든지, 단축키 Ctrl-C를 누르면 된다.
잘라내었거나 복사한 컴포넌트를 붙이기하려면, 붙일 폼이나 컨테이너
컴포넌트가 선택되어 있어야 한다. 그리고 이미 잘라내거나 복사하지
않았다면 붙이기가 되지 않는 것은 잘 알 것이다.
=> About 상자의 Label1과 Label2 컴포넌트를 잘라내어 Panel컴포넌트
안에 붙여보자.
┌─┬─────────────────┬─┬─┐
│==│ About │▼│▲│
├─┴─────────────────┴─┴─┤
│┌─────────────────────┐│
││ ││
││ ││
││ Label3 Panel1 Label1 ││
││ ││
││ Label4 Label2 ││
││ ││
│└─────────────────────┘│
│ ┌──────┐ │
│ │ BitBtn1 │ │
│ └──────┘ │
└───────────────────────┘
컴포넌트를 지우기 위해서는 지울 컴포넌트를 선택하고 Delete 키를
누르거나 메뉴의 를 선택하면 된다. 그리고 지운 컴포
넌트를 다시 살리기 위해서는 메뉴의 를 선택하면
된다.
< 계속 >
댓글