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초마다 현재 시간을 보여 주어서 좀 더 편리한 프로그램이 되었습니다.
이렇게 라자루스는 폼에 다양한 컴포넌트를 배치할 수 있고, 컴포넌트마다 가지고 있는 속성을 변경함으로써 다양한 기능을 구현할 수 있습니다. 다음에는 이벤트에 대해서 알아보겠습니다.
'컴퓨터 > 프로그래밍' 카테고리의 다른 글
MODBUS-RTU 프로토콜 쉽게 이해하기 (26) | 2021.06.02 |
---|---|
lazarus DebugServer EIPCError (0) | 2021.05.29 |
아리송한 MODBUS-RTU 특이점 (2) | 2021.05.28 |