본문으로 바로가기
homeimage
  1. Home
  2. 컴퓨터/프로그래밍
  3. 리눅스 X 윈도우 GUI 응용 프로그래밍 라자루스

리눅스 X 윈도우 GUI 응용 프로그래밍 라자루스

· 댓글개 · 바다야크

리눅스 GUI 응용 프로그램을 만들어야 한다면 라자루스를 추천합니다. Qt를 사용해 본 적이 있지만, 역시 라자루스가 쉽고 빠른데 국내에서는 아는 분이 별로 없는 것 같아서 안타깝습니다. GUI 응용 프로그래밍 통합 개발 환경 라자루스를 소개하고, 어떻게 프로그램을 작성하는지 예제로 보여드리겠습니다.

래피드 애플리케이션 개발 도구 라자루스

볼랜드사 래피드 애플리케이션 개발툴 델파이

볼랜드사에서 윈도우 응용 프로그램 개발툴로 델파이를 내놓으면서 래피드 애플리케이션 개발(Rapid Application Development)을 강조했습니다. 개발자가 마이크로소프트사의 비주얼 스튜디오를 대신해서 델파이를 선택하게 하려면 그만한 이유와 장점이 있어야 하는데, 볼랜드사에서는 매우 빠른 개발 환경이라고 내세운 것이죠. 그리고 확실히 델파이는 윈도우 프로그램을 쉽고 빠르게 개발할 수 있는 통합 개발 환경을 제공했습니다.

볼랜드 델파이가 국내에 보급되었을 때 인기가 어머어마했는데요, 기본 언어가 당시 인기몰이했던 C/C++가 아니라 파스칼이라는 점이 걸렸지만, 볼랜드의 래피드 툴이라는 점이 먹힌 것이죠. 델파이가 나오고 나서 개인들이 만들고 공개한 프리웨어가 많아진 것도 델파이의 직관적이고 쉬운 개발 환경 덕분이라고 생각합니다.

오픈소스 프로젝트 라자루스

카더라 얘기입니다만, 리눅스 개발자가 델파이를 보고서는 볼랜드사에게 리눅스 용도 만들어 달라고 요청했었데요, 그러나 볼랜드사에서 이에 응하지 않자, 그래? 그럼 우리가 만들지 뭐 하며 여러 개발자가 달려 들어서 오픈 소스 프로젝트로 진행한 것이 라자루스라고 합니다.

크로스 플랫폼 개발툴 라자루스

오픈소스 프로젝트라서 진행이 매우 더디지만, 지금까지도 프로젝트가 진행되는 것을 보면 신기할 정도입니다. 2013년에 1.0.4 버전이 나왔으니 10년이 되어가네요. 더욱이 라자루스는 리눅스만의 개발툴이 아닙니다. 크로스 플랫폼으로 윈도우, 맥 OS 프로그램도 만들 수 있습니다.

한참 후에 볼랜드사에서 리눅스용 델파이인 카일릭스를 내놓았지만, 성공하지 못한 것으로 알고 있습니다. 저 같아도 델파이가 메인 개발툴이었던 때라 큰 기대를 가지고 사용해 보았는데, 완전한 리눅스 개발툴이 아니라 와인을 사용해서 이도 저도 아닌 것이 너무 불편해서 실망이 매우 컸습니다.

리눅스용 라자루스 설치

라자루스에 대해서 간략히 알아보았는데요, 설치하는 방법과 프로그램을 어떻게 작성하지 알아보겠습니다.

라자루스 설치 파일 다운로드
라자루스 설치 파일 다운로드

라자루스 다운로드 페이지에서 3개의 파일을 다운로드 받아서 두 개의 fpc-* 파일부터 설치하고 lazarus-project-* 파일을 설치합니다.

라자루스 설치 파일 다운로드
라자루스 설치 파일 다운로드

lazarus-project-* 파일을 설치할 때 패키지 89를 설치해야 한다는 경고 문구가 보이지만, 무시하고 진행합니다. 아마도 설치 중에 알아서 깔리는 것 같습니다.

라자루스 실행

리눅스 시작 메뉴
리눅스 시작 메뉴

설치가 완료되면 시작 메뉴에 개발 항목에 라자루스 아이콘을 볼 수 있습니다. 아이콘을 클릭하여 실행합니다.

라자루스 예제 메모장 만들기

리눅스에서 라자루스로 얼마나 쉽고 빠르게 GUI 응용 프로그램을 작성하는지 예제를 들어 보겠습니다. 간단한 구성의 메모장을 만들겠습니다. 작성한 메모를 저장하는 버튼과 프로그램을 종료하는 버튼을 배치하겠습니다. 그리고 널찍하게 문자를 입력받는 입력창을 놓겠습니다.

버튼 배치

라자루스 프로그래밍
폼에 버튼 배치

라자루스를 실행한 모습입니다. 프로그램을 실행하면 화면에 보이는 윈도우를 개발 단계에서 폼(Form)이라고 합니다. 컴포넌트(또는 위젯) 패널에서 버튼을 클릭하고 폼 위에 적당한 위치를 클릭해서 버튼 두 개를 나란히 배치합니다.

라자루스 프로그래밍
버튼 캡션 수정

버튼의 기능을 사용자에게 알려주기 위해 Caption 속성에 적당한 문자열을 입력합니다. 먼저 프로그램을 종료하는 버튼에 "닫기"라고 입력했습니다.

저장 버튼 속성 변경

메모를 파일로 저장하는 버튼의 Caption 속성을 "저장"이라고 입력하고, 다른 버튼과 쉽게 구별할 수 있도록 Name 속성을 btnSave라고 입력했습니다. 종료 버튼의 Name 속성을 btnClose로 입력했고요.

TMemo 배치

메모 입력 창 TMemo

라자루스에는 긴 문자열을 입력받을 수 있는 메모 컴포넌트가 있습니다. 메모 컴포넌트를 폼 위에 널찍하게 배치했습니다. 메모 컴포넌트의 이름은 자동으로 생성한 그대로 Memo1을 변경 없이 사용하겠습니다. 메모 컴포넌트에는 Lines 속성이 있으며, 타이핑으로 메모를 작성하면 그 내용이 Lines에 들어가게 됩니다.

타이핑으로 작성한 메모 내용을 Memo1에 넣기 위해 코드를 작성할 필요가 없습니다. 타이핑하는 대로 Lines 속성에 자동으로 입력됩니다.

또한, Lines 속성이 가지고 있는 SaveToFile( "파일 이름") 메서드를 실행하여 파일로 저장할 수 있습니다.

즉, 아래와 같이 실행하면 지정된 파일에 메모가 저장됩니다.

Memo1.Lines.SaveToFile( "파일 이름");

자~ 대충 어떻게 프로그램을 작성할지 이해가 되시죠? 이렇게 폼 위에 컴포넌트만 떨구어 놓고 아무런 코드를 작성하지 않은 채 실행해도 타이핑이 되는 메모장이 됩니다. 이제 btnSave 버튼을 클릭하면 어디에 어떤 파일 이름으로 저장할지 물어보고 파일로 저장하면 되겠습니다.

라자루스 프로그래밍
TSaveDialog 대화상자 콤폰넌트 배치

폴더 어디를 선택하고 파일 이름을 입력받는 기능을 직접 만들 필요가 없습니다. Dialogs 패널에서 SaveDialog 하나를 배치합니다. 이 컴포넌트는 프로그래밍할 때만 보이고 실행할 때는 감추어집니다만, Execute 메서드를 실행하면 파일 이름을 구하는 대화 상자를 출력해 줍니다.

버튼 클릭 이벤트 핸들러 작성

라자루스 프로그래밍
버튼 클릭 이벤트 핸들러 루틴

btnClose 버튼을 더블 클릭하면 코드를 작성하는 편집기가 나옵니다. 또한, btnClose를 클릭하면 어떻게 처리해야 하는지 함수가 자동으로 만들어지고, 그 안에 방법을 입력할 수 있도록 친절하게 캐롯이 위치합니다. btnClose 버튼을 클릭하면 프로그램이 종료되도록 Close;라고 입력합니다.

F12키를 누르면 다시 폼(Form) 화면이 나옵니다. 이번에는 btnSave 버튼을 더블 클릭해서 편집기로 이동합니다. 역시 btnSave를 클릭했을 때 어떻게 처리해야 하는지 함수가 만들어지고 코드 입력을 대기합니다. 사용자가 어디에 무슨 파일로 저장해야 할지 확인부터 해야 하고, 취소하지 않고 "확인" 버튼까지 눌렀는지 확인해서 지정한 파일 이름으로 메모를 저장하는 코드를 입력합니다.

if SaveDialog1.Execute // Execute 반환 값이 True라면 사용자가 파일 이름을 선택했음
then
Memo1.Lines.SaveToFile( SaveDialog1.FileName); // SaveDialog1.FileName : 사용자가 입력한 파일 이름
end;

어떻습니까? 코드가 간단하지요? 버튼 입장에서 마우스 클릭은 하나의 이벤트입니다. 그리고 procedure Tform1.btnCloseClick( Sender: TObject)는 클릭 이벤트를 처리하는 함수이며, 이와 같이 이벤트를 처리하는 함수를 이벤트 핸들러라고 합니다.

예제 프로그램 실행

라자루스 프로그래밍
프로그램 실행

F5키를 누르거나 메인 메뉴에서 실행 버튼을 클릭하여 작성한 프로그램을 실행합니다.

라자루스 프로그래밍
메모장 파일 저장 테스트

Memo1에 문서를 작성하고 [저장] 버튼을 클릭하면 파일 이름을 입력받는 대화 상자가 출력됩니다. 적당한 곳을 선택하고 파일 이름을 입력합니다. 그리고 [저장(S)] 버튼을 클릭하면 파일로 저장됩니다.

저장된 메모 파일 확인

라자루스 프로그래밍
저장된 메모 내용 확인

파일로 저장한 내용을 텍스트 에디터로 열어 보았습니다. 잘 실행되었네요.

실행 파일 확인

라자루스 프로그래밍
라자루스로 만든 실행 파일

라자루스에서 저장 버튼을 클릭하고 적당한 폴더에 작성한 코드를 저장하고 컴파일을 다시 해 보면 지정한 폴더에 라자루스로 작성한 코드 파일과 함께 실행 파일을 볼 수 있습니다. 기본 이름으로 저장했다면 실행 파일 이름은 project1이 됩니다.

라자루스의 장점은 델파이처럼 실행 파일이 한 개의 파일로 만들어진다는 점입니다. 여러 개의 파일로 나뉘어 생성된다면 배포하기 어렵습니다. 관리하기도 어렵고요.

메모 파일 읽기 기능 추가

라자루스 프로그래밍
OpenDialog 추가

이번에는 메모 파일에서 내용을 읽어 들이는 기능을 추가해 보겠습니다. (1) btnLoad 버튼 한 개를 배치하고 (2) Dialogs 패널에서 OpenDialog 아이콘을 클릭하고 폼에 한 개 배치합니다. 이름은 OpenDialog1입니다.

라자루스 프로그래밍
메모 파일 읽기 루틴

btnLoad 버튼을 더블클릭하고 처리할 내용에 파일로부터 메모를 읽어 들이는 코드를 입력합니다.

if OpenDialog1.Execute // Execute 반환 값이 True라면 사용자가 메모 파일을 선택했음
then
Memo1.Lines.LoadFromFile( OpenDialog1.FileName);
end;

Memo1의 속성 Lines에는 파일을 읽어 들이는 LoadFromFile( '파일 이름') 메서드가 있습니다. 이 메서드로 간단히 파일을 열어서 내용을 읽어 들이고 Memo1에 넣는 것까지 한 번에 처리할 수 있습니다. 델파이가 왜 래피드 개발툴인지 이해가 되시죠?

라자루스 프로그래밍
예제 프로그램 실행

F5키 또는 메인 메뉴의 실행 버튼으로 프로그램을 실행합니다. 그리고 btnLoad 버튼을 클릭하고 텍스트 파일을 선택해 보세요. 텍스트 파일의 내용이 Memo1에 출력될 것입니다.

이와 같이 델파이와 라자루스는 GUI 프로그램을 디자인하듯이 직관적으로 프래그램을 작성할 수 있습니다. 전문 프로그래머가 아니더라도 자기가 만들고 싶은 프로그램을 라자루스로 만들어 보는 것도 좋은 취미라고 생각합니다.

라자루스를 이용하면 구글 크롬 같은 웹브라우저를 만들 수 있습니다. 라자루스로 어떻게 웹 브라우저를 만드는지 궁굼하신 분은 여기를 클릭하세요. 필요한 라이브러리를 구하고 설치해서 코딩하는 방법까지 설명합니다.

SNS 공유하기
💬 댓글 개
최근글
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.