본문 바로가기
Delphi/Delphi란?

Delphi란...{3}

by MonoSoft 2021. 4. 23.
728x90
반응형

Delphi란...{3}

 

새 프로젝트 시작하기

─────────────────────────────────

지난번에 만든 가장 간단한 프로그램에 이어서 이번에도 간단한 프로

그램을 또 하나 만들어 보자.

 

새로운 프로그램을 만들기 위해서는 새로운 프로젝트를 만들어야 한다.

 

=> 새로운 프로젝트를 만들기 위하여 메뉴의 File/New Project를 선택

하라. 그러면, 환경설정을 어떻게 했느냐에 따라서 다음 중

한가지 일이 일어날 것이다.

 

* 혹시라도 다른 사람이 메뉴의 Options/Environment를 실행하여

Gallery 항목에서 를 선택하여 설정하지

않았다면, 기본으로 설정되어 있는 새로운 프로젝트가 생성될 것이다.

이 프로젝트는 비어있는 프로젝트이다.

 

* 메뉴의 Options/Environment를 실행하여 Gallery 항목에서

를 선택하여 설정하였다면, Browse Gallery

대화상자가 나타나서 원하는 프로젝트의 형태를 선택할 수 있게

할 것이다.

 

=> 만약 Browse Gallery 대화상자가 나왔다면, 기본적으로 선택되어

있는 빈 프로젝트(Blank Project)를 더블 클릭하여 선택하라.

 

(만약 새로운 프로젝트를 만들기 전에 작업하던 프로젝트가 있다면

저장할 것인지 물어올 것이다. 이때 저장할 필요가 있는 것이라면

저장하도록 하라.)

 

이번 프로그램에서는 두 개의 Button 컴포넌트와 한 개의 Edit

컴포넌트, 그리고 한 개의 ListBox 컴포넌트를 사용하게 될 것이다.

 

위의 컴포넌트들을 폼에 아래의 모양으로 추가하도록 하라.

 

┌─┬────────────────────┬─┬─┐

│==│ Form1 │▼│▲│

├─┴────────────────────┴─┴─┤

│ ┌───────┐ │

│ │Edit1 │ │

│ └───────┘ │

│ ┌───────┐ │

│ │ListBox1 │ ┌──────┐ │

│ │ │ │ Button1 │ │

│ │ │ └──────┘ │

│ │ │ │

│ │ │ ┌──────┐ │

│ │ │ │ Button2 │ │

│ └───────┘ └──────┘ │

└──────────────────────────┘

 

그리고 각 컴포넌트의 속성을 아래와 같이 설정하라.

 

┌─────────┬────────┬─────────┐

│ 컴포넌트 │ 속성(Property) │ 설정(Setting) │

├─────────┼────────┼─────────┤

│ Form1 │ Caption │ 리스트박스 예제 │

├─────────┼────────┼─────────┤

│ Button1 │ Caption │ 추가(&A) │

│ │ Name │ AddBtn │

│ │ Default │ True │

├─────────┼────────┼─────────┤

│ Button2 │ Caption │ 청소(&C) │

│ │ Name │ ClearBtn │

├─────────┼────────┼─────────┤

│ Edit1 │ Text │ 공백(비어두라) │

├─────────┼────────┴─────────┤

│ ListBox1 │ 아무것도 건드리지 말라. │

└─────────┴──────────────────┘

 

이와 같이 설정하면 윈도우의 모양이 아래와 같이 될 것이다.

 

┌─┬────────────────────┬─┬─┐

│==│ 리스트박스 예제 │▼│▲│

├─┴────────────────────┴─┴─┤

│ ┌───────┐ │

│ │ │ │

│ └───────┘ │

│ ┌───────┐ │

│ │ │ ┌──────┐ │

│ │ │ │ 추가(A) │ │

│ │ │ └──────┘ │

│ │ │ │

│ │ │ ┌──────┐ │

│ │ │ │ 청소(C) │ │

│ └───────┘ └──────┘ │

└──────────────────────────┘

 

여기서 Button1의 Caption 속성을 '추가(&A)'라고 설정하였는데,

실제 윈도우에 나타난 Button1에는 '추가(A)'라고 되어 있다.

(여기서 'A'자는 밑줄이 있는 'A'자이다.) 눈치가 빠른 개발자는

금방 그 이유를 알았을 것이다. 여기서 'A'는 단축키의 역할을 한다.

개발자가 단축키로 지정하고 싶은 글자 앞에 '&' 글자를 위치시키면

단축키로 설정된다. 이것은 나중에 다루게 될 메뉴편집기에서 메뉴

항목에 단축키를 추가할 때도 같은 방법으로 하면 된다.

 

이렇게 단축키로 설정하여 놓으면 나중에 프로그램 실행 중에

단축키(Alt+A)를 누르면 <추가(A)> 가 선택된다.

 

 

 

이벤트 핸들러에서 프로시져(procedures)와 함수(functions) 호출하기

─────────────────────────────────

모든 컴포넌트들이 특정한 이벤트(이벤트가 무엇인지 아직 모르는

분은 2번 강좌를 참고하도록 하라)에 반응할 수 있는 것처럼,

컴포넌트들은 또한 특별히 각 컴포넌트들에 관계되어 있는 루틴

(routine)을 가지고 있다.

이와 같이 각 컴포넌트들에 특별히 관계되어 있는 프로시져와 함수를

메소드(method)라고 부른다.

 

개발자는 이벤트 핸들러(이벤트 헨들러에 대한 설명은 2번 강좌를

참고하라)를 작성하여 프로그램 실행 중에 속성을 설정할 수 있는

것과 마찬가지로, 메소드도 프로그램 실행중에 호출할 수 있다.

그러나 당연한 이야기지만 속성과는 다르게 메소드는 프로그램

디자인시에는 작동시킬 수 없다.

 

우리가 작성하고 있는 예제 프로그램에서 이러한 메소드를 호출하여

보도록 하겠다.

 

=> 1. 폼에 있는 AddBtn(추가) 컴포넌트를 마우스로 클릭하여

선택하라.

그리고 OnClick 이벤트 핸들러를 호출하기 위하여 아래 그림과

같은 오브젝트 인스펙터의 Events 페이지에서 OnClick

이벤트의 Value column을 더블 클릭하라.

 

(그냥 폼에 있는 AddBtn을 더블 클릭해도 OnClick 이벤트

핸들러를 호출할 수 있다. 폼에 있는 컴포넌트를 더블 클릭하

면 그 컴포넌트에서 가장 많이 쓰이는 이벤트 핸들러가 자동

으로 호출되기 때문이다. 즉 Button 컴포넌트에서 가장 많이

쓰이는 이벤트 핸들러는 OnClick 이벤트 핸들러이기 때문에

그냥 폼에 있는 AddBtn을 더블 클릭해도 OnClick 이벤트

핸들러가 호출 된다. 그러나 다른 이벤트 핸들러를 호출하기

위해서는 오브젝트 인스펙터를 사용해야 한다.)

 

┌─┬────────────────┬─┐

│==│ Object Inspector │▼│

├─┴────────────────┴─┤

│AddBtn: TButton ────┼── Object

├────────────────────┤ selector

├────────┬─────────┬─┤

┌──│OnClick │ ──┼─┼── Value

│ ├────────┼─────────┤ │ column

Event │OnDragDrop │ │ │ (이벤트 핸들

column ├────────┼─────────┤ │ 러를 호출하기

│OnDragOver │ │ │ 위해서는 이곳

├────────┼─────────┤ │ 을 더블클릭하

│OnEndDrag │ │ │ 면 된다.)

├────────┼─────────┤ │

│OnEnter │ │ │

├────────┴─────────┴─┤

├┬─────┬┐ ┌───────┤

││Properties││Events │ │

│└──┬──┘└─┬──┘ │

└───┼─────┼──────────┘

│ │

│ │

(속성 페이지 탭) (이벤트 페이지 탭)

 

< 오브젝트 인스펙터 화면 >

 

2. 1번과 같이 하면 코드 에디터가 나타날 것이며 커서는

begin...end 사이에서 깜박거리고 있을 것이다. 그 사이에

다음과 같이 쳐 넣어라.

 

procedure TForm1.AddBtnClick(Sender: TObject);

begin

ListBox1.Items.Add(Edit1.Text); {이 라인을 추가하라}

end;

 

여기서 Add를 ListBox의 메소드라고 한다. 즉 사용자가 AddBtn

을 클릭하면 ListBox의 Add 메소드가 호출되는 것이다.

그리고 Add 메소드의 파라미터인 Edit1.Text의 의미는 Edit1

컴포넌트에 입력되어진 Text를 가리킨다. 그러므로 사용자가

AddBtn(추가) 버튼을 클릭하면 Edit1에 있는 텍스트가 ListBox

에 추가된다.

 

그리고 델파이는 파스칼 언어를 사용하기 때문에, 소스 코드에

서 { } 사이에 있는 내용은 주석으로 처리된다. 또한

(* *) 사이에 있는 내용도 주석으로 처리된다.

 

3. 이번에는 ClearBtn(청소) 컴포넌트의 OnClick 이벤트 핸들러를

작성하여 보자. 폼에 있는 ClearBtn 컴포넌트를 클릭하여 선택

하고 오브젝트 인스펙터의 이벤트 페이지에 있는 OnClick 속성

의 Value column을 더블 클릭하라.

그리고 나타난 코드 에디터에서 다음과 같이 쳐 넣어라.

 

procedure TForm1.ClearBtnClick(Sender: TObject);

begin

ListBox1.Items.Clear; {이 라인을 추가하라}

end;

 

여기서는 ClearBtn 컴포넌트를 클릭하면 ListBox의 Clear

메소드를 호출하는 것이다. 이미 짐작을 했겠지만 Clear 메소

드는 ListBox에 있는 모든 내용을 제거하는 메소드이다.

 

4. 이제 작성한 프로그램을 실행시켜 보자.

 

Run 메뉴에서 Run을 선택하라. (또는 단축키 F9를 눌러도 됨)

 

그러면 컴파일, 링크하는데 약간의 시간이 지난 후에 우리가

디자인한 윈도우가 열릴 것이다.

 

여기에서 왼쪽 상단에 있는 Edit1 컴포넌트에 다음과 같이

'대한민국'이라고 입력한다.

 

┌─┬────────────────────┬─┬─┐

│==│ 리스트박스 예제 │▼│▲│

├─┴────────────────────┴─┴─┤

│ ┌───────┐ │

│ │대한민국 │ │

│ └───────┘ │

│ ┌───────┐ │

│ │ │ ┌──────┐ │

│ │ │ │ 추가(A) │ │

│ │ │ └──────┘ │

│ │ │ │

│ │ │ ┌──────┐ │

│ │ │ │ 청소(C) │ │

│ └───────┘ └──────┘ │

└──────────────────────────┘

 

그리고는 <추가(A)> 버튼을 마우스로 클릭하든지,

단축키(Alt+A)를 누르면 다음과 같이 ListBox에 Edit1에

입력한 "대한민국"이라는 텍스트가 추가될 것이다.

 

┌─┬────────────────────┬─┬─┐

│==│ List Box Demo │▼│▲│

├─┴────────────────────┴─┴─┤

│ ┌───────┐ │

│ │대한민국 │ │

│ └───────┘ │

│ ┌───────┐ │

│ │대한민국 │ ┌──────┐ │

│ │ │ │ 추가(A) │ │

│ │ │ └──────┘ │

│ │ │ │

│ │ │ ┌──────┐ │

│ │ │ │ 청소(C) │ │

│ └───────┘ └──────┘ │

└──────────────────────────┘

 

이번에는 Edit1에 "아름다운 나라" 라고 입력하고 <추가(A)>

버튼을 누르면 다음과 같이 될 것이다.

 

┌─┬────────────────────┬─┬─┐

│==│ List Box Demo │▼│▲│

├─┴────────────────────┴─┴─┤

│ ┌───────┐ │

│ │아름다운 나라 │ │

│ └───────┘ │

│ ┌───────┐ │

│ │대한민국 │ ┌──────┐ │

│ │아름다운 나라 │ │ 추가(A) │ │

│ │ │ └──────┘ │

│ │ │ │

│ │ │ ┌──────┐ │

│ │ │ │ 청소(C) │ │

│ └───────┘ └──────┘ │

└──────────────────────────┘

 

이와 같이 어떤 내용이든지 Edit1에 있는 텍스트는 <추가(A)>

버튼을 누름과 동시에 ListBox에 추가되는 것을 볼 수 있을 것

이다.

 

이번에는 <청소(C)> 버튼을 클릭하여 보자. 그러면 다음과

같이 ListBox에 있는 내용이 모두 지워질 것이다.

 

┌─┬────────────────────┬─┬─┐

┌──│==│ List Box Demo │▼│▲│

│ ├─┴────────────────────┴─┴─┤

컨트롤 │ ┌───────┐ │

박스 │ │아름다운 나라 │ │

│ └───────┘ │

│ ┌───────┐ │

│ │ │ ┌──────┐ │

│ │ │ │ 추가(A) │ │

│ │ │ └──────┘ │

│ │ │ │

│ │ │ ┌──────┐ │

│ │ │ │ 청소(C) │ │

│ └───────┘ └──────┘ │

└──────────────────────────┘

 

이제 보다 분명하게 델파이로 프로그램을 작성하는 기본적인

방법을 알게 되었을 것이다. 델파이로 프로그램을 작성하는

것은 이와 같이 쉽고 재미있다.

 

5. 이제 윈도우의 컨트롤 박스를 더블 클릭하여 실행된 프로그램

을 종료한다.

 

 

작성한 프로그램의 배포

──────────────────────────────────

개발자들의 대부분은 다른 사용자에게 프로그램을 배포하기 위하여

프로그램을 작성할 것이다. 대부분의 윈도우용 개발 툴들은 사용자

에게 프로그램을 배포할 때 런타임 모듈 등을 함께 배포해야만 한다.

예를 들어 비주얼 베이직 3.0으로 만든 프로그램을 배포할 경우에는

반드시 vbrun300.dll 파일을 함께 배포해야 한다. vbrun300.dll파일

이 없으면 비주얼 베이직으로 만든 프로그램은 아예 실행이 되지

않기 때문이다. 물론 이런 런타임 모듈을 사용하는 프로그램의

장점이 전혀 없는 것은 아니지만, 개발자나 사용자 입장에서는 좀

번거롭고 부담스러운 것은 사실이다.

 

델파이는 이런 점을 고려하여 개발되었으므로, 기본적으로 완벽한

독립 실행파일(.EXE) 을 생성하므로 이런 런타임 모듈을 함께 배포할

필요가 전혀없다. 즉 실행파일(.EXE) 한 개만 배포하면 그만이다.

그러나, 당연한 이야기지만 개발자가 임의로 만든 DLL파일을

프로그램에 사용했다든지 데이타베이스 프로그램을 개발했을 경우

에는 거기에 필요한 파일들을 함께 배포해야 한다.

 

< 계속 >

 

// 두루물의 언어툴란에서 가져왔습니다.

728x90
반응형

'Delphi > Delphi란?' 카테고리의 다른 글

Delphi OOP와 C++과의 차이 [1]  (0) 2021.04.27
Delphi란...{6}  (0) 2021.04.26
Delphi란...{4}  (0) 2021.04.26
Delphi란...{2}  (0) 2021.04.23
Delphi란....  (0) 2021.04.22

댓글