윈도우 프로그램 만들기 라자루스 컴포넌트 속성이란?

2021. 5. 30. 15:00 컴퓨터/프로그래밍

Lazarus IDE component property

필요한 프로그램을 직접 만들고 싶다면 통합 개발 환경 라자루스를 추천하니다. 이전 글에서 라자루스를 소개하면서 간단한 프로그램을 작성했는데요, 자리를 잠시 비울 때 찾는 분을 위해 메시지를 남겨 놓는 프로그램이었죠.

▲ 제대로 작동은 되지만, 뭔가 어색하죠? 처음 보는 분이라면 뭐가 뭔지 이해가 안 될 것입니다. 기능에 따라서 적당한 문장을 넣어 준다면 좀 더 쉬운 프로그램이 되겠습니다. 예를 들어 Button1 보다는 "종료"라고 쓴다면 눌러보지 않아도 어떤 기능인지 알 수 있습니다. Edit1이 어떤 뜻인지 모르겠지만, 알게 되어도 글을 쓰려면 "Edit1" 글자를 지우고 써야 합니다. 이번 글에서는 라자루스에서 컴포넌트의 속성이라는 것을 이해하면서 프로그램을 다듬어 보겠습니다.

▲ 폼 위에 올려놓는 컴포넌트는 각각의 기능에 따라 다양한 속성(Property)를 가지고 있습니다. Button의 속성 중 Caption은 버튼 표면에 쓰여지는 문장을 뜻 합니다. 그러므로 Button의 Caption을 변경하면 버튼에 쓰여지는 문장도 바뀝니다. ① 속성창(Ojbect Inspector)을 통해 컴포넌트의 모든 속성을 볼 수 있으며 ② 폼 위에 있는 컴포넌트를 선택하고 ③ 속성창에서 컴포넌트의 속성 내용을 변경할 수 있습니다.

▲ 예를 들어서 ① 속성창에서 Button1의 Caption을 "종료"로 바꾸면 Button1의 문장이 "종료"로 바뀝니다.

Caption과 Text 속성의 차이점

▲ Edit1에는 Text 속성이 있습니다. Text 속성은 Button1의 Caption 속성처럼 문자열을 담지만, 다른 점은 프로그램 실행 중에 Caption 내용을 키보드로 직접 수정할 수 없습니다. 그러나 Text는 키보드로 입력을 받는 속성입니다. Edit1을 선택하고 ① 속성창에서 Text 내용을 모두 지우면 ② Edit1의 내용도 없어집니다.

▲ 프로그램을 실행하면 내용이 비워있어서 Del 키를 사용하지 않고도 내용을 입력할 수 있습니다. 그런데 빈 사각형이 어떤 내용인지 모르겠네요. 그래서 제목을 달아보겠습니다.

▲ ① 컴포넌트 패널에서 Label을 선택하고 ② 폼의 적당한 곳을 클릭하면 Label1이 배치됩니다. "Label1" 내용 대신에 "메시지 내용:" 이라고 수정하겠습니다.

▲ Label1을 마우스로 클릭하고 ① 속성 창에서 Caption 내용을 "메시지 내용:"으로 수정합니다.

▲ F9 키를 눌러서 실행합니다. 제법 프로그램 모습을 갖추었네요.

▲ 메시지 내용을 입력합니다.

▲ 컴포넌트 별로 속성을 적당한 내용으로 변경함으로써 프로그램을 다듬을 수 있습니다.

현재 시간 출력 기능 추가

메시지에 5시까지 다녀오겠다고 했는데요, 그렇다면 현재 시간을 보여 준다면 더욱 좋겠지요?

▲ 컴포넌트 패널에서 Label을 선택해서 폼 위에 Label2와 Label3를 배치했습니다. Label2의 Caption 속성을 "현재 시간:"으로 바꾸었습니다. 이제 Label3의 Caption을 1초마다 현재 시간으로 바꾸어 주어야 하는데, 속성창으로 1초마다 바꾸기는 너무 힘들기도 하지만, 실행 중에는 속성창을 사용할 수 없습니다. 프로그램이 알아서 현재 시간으로 바꾸어 주어야 하는데, 이렇게 시간마다 어떤 작업을 반복하려면 Timer 컴포넌트를 이용합니다.

▲ 컴포넌트 패널>>System에서 시계 그림의 타이머를 클릭하고 폼 빈 공간을 클릭해서 Timer1을 배치합니다. Timer1는 기본 1초마다 타이머를 발생합니다. 1초 주기도 속성 Interval을 변경하여 바꿀 수 있습니다. Timer1 컴포넌트를 더블 클릭하여 타이머가 발생할 때마다 실행할 내용을 코딩합니다.

▲ Timer1 컴포넌트를 더블 클릭하면 타이머가 발생할 때마다 실행할 함수가 만들어집니다. 그 함수 안에 Label3의 Caption 속성에 현재 시간을 입력해 주는 FormatDateTime 함수 값을 대입해 줍니다.

FormatDateTime 함수는 문자열 형식에 맞추어 날짜와 시간 문자열을 만듭니다. 예에서는 'hh:nn:ss' 로 형식으로 현재 시간 Now 값을 가지고 시간 문자열을 만들도록 했습니다. FormatDateTime 함수로 시간 문자열을 만드는 이유는 Caption이 문자열만 받을 수 있기 때문입니다. 그러므로 1초마다 타이머가 발생하면 시간 문자열이 Label3의 Caption에 대입됩니다.

▲ 프로그램을 실행하면 1초마다 현재 시간을 보여 주어서 좀 더 편리한 프로그램이 되었습니다.

이렇게 라자루스는 폼에 다양한 컴포넌트를 배치할 수 있고, 컴포넌트마다 가지고 있는 속성을 변경함으로써 다양한 기능을 구현할 수 있습니다. 다음에는 이벤트에 대해서 알아보겠습니다.

 

나도 프로그래머 라자루스 통합 개발 환경

오픈소스 통합개발환경(IDE) 라자루스 윈도우 프로그램을 직접 만들고 싶은 분께 오픈 소스 통합 개발 환경(IDE) 라자루스를 권합니다. 프로그래밍은 전문 지식이 필요해서 매우 어렵게 생각되는

badayak.com

이 댓글을 비밀 댓글로

티스토리 로그인이 풀리면 여기를 클릭하세요.

    • 2021.05.30 21:20
    비밀댓글입니다
      • 2021.05.31 19:37
      비밀댓글입니다
error: Content is protected !!