Visual Basic, C & C++
분류 Delphi

[펌] 델파이 기본 컴포넌트1

페이지 정보

본문

델파이는 VCL(visual compoment library)이라고 불리는 하나의 객체 지향적인 구조를

사용한다. VCL이라는 말은 Visual Component Library, 즉 볼 수 있는 컴퍼넌트의

집합이라고 할 수 있는데, 컴퍼넌트는 VCL의 계보 중에서  TComponent와 그 자손으로

이어진 계층을 말합니다.

그런데 VCL를 살펴보면 컴퍼넌트 중 에서 볼 수 없는 즉 Visual하지 않는 컴퍼넌트도

많다는 것을 알 수 있습니다.더욱이 컴퍼넌트가 아닌 오브젝트도 많이 볼 수 있습니다.

(TStrings나 TCanvas 같은) 따라서 엄밀하게 VCL은 틀린 말입니다.

그럼에도 불구하고, 델파이에서 왜 VCL이라고 이름을 붙였을까? 그것은 아마도 이들

컴퍼넌트가 가장 핵심적인 역할을 담당하고 있기 때문일 것입니다.

우리가 어플리케이션을 만들어 실행시키면 볼 수 있는 것의 대부분이 이들 컴퍼넌트입니다.

 

컴퍼넌트 정의

 

기술적으로 컴퍼넌트는  VCL 계보에서 TComponent 클래스의 모든 자손 오브젝트를

나타냅니다. 즉 TComponent에서 파생된 모든 오브젝트를 컴퍼넌트라 부릅니다.

그리고 VCL 계보에서 TBitmap, TStringList와 같이 컴퍼넌트에 속하지 않는 것들은

오브젝트라고 부릅니다. 

개념적으로 컴퍼넌트는 그 용어 자체에서 의미하는 바와 같이 부품을 나타냅니다.

즉 어풀리케이션을 만들기 위해 사용하는 부품을 의미합니다. 자동차가 각종 차동차

부품으로 이루어지듯이, 델파이 어플리케이션도 각종 부품(컴퍼넌트)로 이루어지는

것입니다.

물론 자동차나 어플리케이션을 부품(컴퍼넌트)를 조립(사용)하지 않고 만들수도 있습니다.

그러나 그러한 경우 생산성이나 효율성은 무척이나 나빠지게 될 것입니다.

VCL에는 컴퍼넌트가 아닌 다른 많은 오브젝트가 있습니다. 그럼에도 불구하고

컴퍼넌트를 중요시하는 것은 , 설계시에는 이 컴퍼넌트를 사용하기 때문입니다.

즉 설계시에 사용할 수 있는 컴퍼넌트이고, 따라서 컴퍼넌트가 시각적 프로그래밍의

핵심이라 할 수 있습니다.

컴퍼넌트가 아닌 다른 오브젝트는 내부에서 컴퍼넌트를 위해 이용하는 도구이거나

아니면 델파이에서 사용하는 오브젝트들입니다.

 

컴포넌트 종류

 

visual component

시각적으로 표현 가능하며 내부적으로 연산이 가능한 컴포넌트

non-visual component

시각적으로 표현 불가능하며 내부적으로 연산이 가능한 컴포넌트

 

컴포넌트의 기본 속성(컴포넌트에 거의 공통적으로 들어가는 속성이다.)
 
Name
컴포넌트의 이름을 가리킨다. Name 은 반드시 영문이나 밑줄 시작해야 하며 한글, 특수문자 등은 들어갈 수 없다.
Caption
컴포넌트의 제목을 나타내준다. 한글이나 특수문자 등도 모두 쓰일 수 있다.
Alignment
컴포넌트 내부의 문자열이 정렬되는 방식에 대한 속성이다. 디폴트값은 taLeftJustify 이다.
taLeftJustify : 문자열이 컴포넌트의 좌측에 정렬된다.
taCenter : 문자열이 컴포넌트의 중앙에 정렬된다.
taRightJustify : 문자열이 컴포넌트의 우측에 정렬된다.
Autosize
컴포넌트의 내용에 맞게 크기를 자동으로 조정할지를 결정
AutoSelect
사용자가 Edit component나 Memo 컴포넌트로 tab할 때 문자가 자동으로 전체선택될지를 조정

BorderStyle
컴포넌트의 border 형을 결정
CharCase
영문자를 표현하는 방법(입력하는대로 또는 무조건 대문자 또는 무조건 소문자)
Color
컴포넌트의 배경 색을 정한다.
Ctl3D
Control이 3차원인지 2차원인 모양인지 결정
Cursor
컴포넌트가 차지한 영역에서 나타나는 마우스 포인터의 이미지를 결정
DragCursor
끌어당긴 개체를 컴포넌트위에 올려 놓을 때 나타나는 마우스 포인터의 이미지 결정
DragMode
컴포넌트의 끌고 놓는 동작을 결정
Enabled
컴포넌트의 기능을 일시적으로 활성, 또는 비 활성화 시킬 수 있다. 디폴트값은 True이다.
Font
컴포넌트에 나타나는 문자의 글꼴, 색상,크기 등의 여러 속성을 지정한다.
Hint
OnHint event발생시 나타나는 문자열을 결정 (마우스 커서가 컴포넌트나 메뉴 항목에 있을 때 나타남)

Tag
일반적으로 Tag Property는 볼랜드사에서 프로그래머를 위해서 임의로 만들어 놓은 Property 이며 temp변수로도 사용할 수도 있습니다.
LongInt의 형을 가지고 있으며 LongInt로서 할 수 있는 모든 것을 할 수도 있습니다.
일반적인 문자열, 정수, 실수 외에 델파이에서 지원되는 객체나 구조체, 또는 메모리까지도 
Tag에 넣어서 사용할수가 있습니다.

Height, width, left, top
Height : 컴포넌트의 크기 조절
width : 컴포넌트의 높이 조절
left : 컴포넌트의 맨 왼쪽 모서리의 위치 조절
top : 컴포넌트의 맨 위쪽 모서리의 위치 조절
HideSelection
개체가 Focus를 잃을 때 선택되어 있던 문자를 반전된 채로 남겨둘지를 결정
MaxLength
Edit 컴포넌트나 Memo 컴포넌트에 입력할 수 있는 최대 문자수를 결정. Zeor(0)은 제한이 없음을 의미
PasswordChar
Password를 입력할 때 Edit 컴포넌트나 Memo 컴포넌트가 어떤 특수문자를 나타낼지를 결정

ParentColor
 다음과 같이 컴포넌트의 색정보를 어디서 찾을지를 결정:
◆ 만약 값이 True면, parent component의 Color property를 사용
◆ 만약 값이 False면, 컴포넌트 자신의 Color property를 사용.
ParentCtl3D
 다음과 같이 Component의 3차원 모양을 어디서 찾을 지를 결정:
◆ 만약 값이 True면, parent component의 three-dimensional property를 사용
◆ 만약 값이 False면, component자신의 three-dimensional property를 사용

ParentFont
 다음과 같은 컴포넌트의 font 정보를 어디서 찾을지를 결정:
◆ 만약 값이 True면, parent component의 font property를 사용
◆ 만약 값이 False면, component자신의 font property를 사용

ParentShowHint
 다음과 같이 컴포넌트의 힌트를 어디서 찾을지 결정:
◆ 만약 값이 True면, parent component의 ShowHint property를 사용
◆ 만약 값이 False면, component자신의 ShowHint property를 사용
ReadOnly
실행시 read-only 컴포넌트를 만들어 사용자가 field나 dataset값을 변경할 수 없도록 함
ShowHint
 힌트가 사용될지 아닐지를 결정:
◆ 만약 값이 True면 힌트사용
◆ 만약 값이 False면, 힌트 사용 안함
Text
컴포넌트나 다른개체에 나타나는 문자열을 기술합니다.

 

TabOrder

 

Tab 키를 눌렀을 때 컴포넌트의 taborder대로 실행이나 입력준비 상태가 변경됨

 

※ taborder 속성값이 0 인 컴포넌트는 폼 생성시 자동으로 포커스를 얻습니다.

※ 아래 소스가 keydown 이벤트에 있다면 엔터 입력시 taborder 값이 0부터 큰값으로

포커스가 이동하게 됩니다.

if key = vk_return then

begin

    //# 엔터 입력시 taborder 값의 순서대로 포커스 이동됨

    SendMessage(self.Handle, WM_NEXTDLGCTL, 0, 0);

end;

 

TabStop

 컴포넌트에 tab를 사용할 지를 결정

※ taborder 값이 동작하려면 tabsop 속성값이 true로 되어 있어야함

 

Tab
 컴포넌트의 property로서 정수값을 저장하도록 함.주의: 델파이에 의해 직접 사용되지는 않지만 응용프로그램의 특별한 목적으로 사용할 수 있다.
Visible
프로그램 실행 시 컴포넌트를 보이게 할 것인지를 지정한다. 디폴트 값은 True이다.

 

컴포넌트의 기본 이벤트(컴포넌트에 거의 공통적으로 들어가는 이벤트이다.)

 

델파이의 이벤트는 콜백함수입니다.

콜백함수란 프로그래머가 그 함수의 사용을 명령해 주는 것이 아닌 이벤트, 메시지 등을

받았을 때 자동으로 실행되는 함수를 말한다.

 

OnChange 
개체나 컴포넌트에 지정된 값이 변화될 할 때 발생 
OnClick 

컴포넌트를 클릭할 때 발생 
OnDblClick 
컴포넌트를 두번 클릭할 때 발생

OnDragDrop 
끌어당긴 개체를 놓을 때 발생 
OnDragOver 

컴포넌트위로 개체를 끌 때 발생
OnEndDrag 
개체를 끄는 것을 끝낼 때 발생
OnEnter 
컴포넌트가 활성화될때만 발생 

컴포넌트로 포커스가 들어왔을때 발생
※ 자바스크립트의 onfocus 이벤트 핸들러와 같은 역할을 합니다.

 

OnExit

focus가 다른 컴포넌트로 움직일 때 발생

 

OnKeyDown

key를 눌렀을 때 발생. 특수키(ctrl, alt, shift, tab, enter, backspace,F1~F12 등등)에 반응함

ex1)

if key = 13 then

ShowMessage(‘d’);

 

※ keydown이벤트는 키값을 숫자로 리턴합니다.

※ keydown 이벤트에서 리턴하는 key 값은 10진수 정수입니다.

※ 위의 이벤트가 발생하려면 해당 폼의 Keypreview 속성이 True여야 한다.

※ F1부터 F12의 키값은 112부터 123입니다.

※ OnKeyUp 이벤트 발생하기 전에 발생한다.

※ 10진수 13은 아스키코드에서 엔터입니다.

 

ex0)

if Key = VK_RETURN then

ShowMessage(‘leejunsik’);

※ 엔터키값의 상수는 VK_RETURN 입니다.

 

예제1)

//# ctrl+v 키보드 입력시 발생

if (ssCtrl in Shift) and (Key in [86, 118]) then

begin

 ShowMessage(edit1.Text);

end;

 

예제2)

//# ctrl+c 키보드 입력시 발생

if (ssCtrl in Shift) and (Key in [67, 99]) then

begin

 ShowMessage(edit1.Text);

end;

 

예제3)

//# ctrl+v 키보드 입력시 발생

If (Shift = [ssCtrl]) and (Key = 67) then

관련자료

등록된 댓글이 없습니다.
프로그래밍
Today's proverb
과거를 아프게 들여다보지 말라. 그것은 다시 오지 않는다. 현재를 슬기롭게 이용하라. 그것은 그대의 것이다. 힘찬 기상으로 두려워말고 나아가 무지개를 맞으라.