카테고리 보관물: Delphi

Delphi – 간단한 메모장 제작

메모장은 간단한 글을 쓰고 저장할 수 있게 하는 프로그램입니다. 간단한 글을 쓰기에 적합하고 어떤 일정한 서식이 글자에 효과를 주거나 하는 글에는 적합하지 않습니다. 단순 텍스트 파일을 불러와 볼 수 있고 편집하고 저장할 수 있는 기능을 가지고 있습니다. 기능은 제작하시는 분이 구현하기에 따라 다르지요. 메모장의 제작 방법을 문의해 오시는 분이 많으셔서 제가 한 번 제작과정을 간단히 보여드리고자 합니다. 빈약한 실력으로 하다보니 모자란 부분이 많이 나올 수 있습니다. 잘 모르시는 부분이 있으시면 연락 주시기 바랍니다.

먼저 메모장에 사용될 Component부터 알아보도록 하겠습니다.

1. Standard > MainMenu Component

MainMenu 컴포넌트는 폼에 메뉴바를 만들어 주는 역할을 합니다. Items의 … 버튼을 눌러 메뉴를 추가합니다. 속성(property)과 메소드에 대한 설명은 도움말을 참조 하시기 바랍니다.

2. Standard > Memo Component

메모장의 전부라고 해도 과언이 아닙니다. 이 컴포넌트안에 문서를 불러와 출력해 주고 저장의 기능도 수행하게 됩니다. 자세한 사항은 실제 제작에 들어가서 자세히 알아보도록 하겠습니다.

3. Win32S > StatusBar

이 컴포넌트는 대부분 폼의 하단에 위치하여 읽어들인 문서의 제목이나 문서의 총 라인수등을 보기 좋게 출력해 주기 위해서 사용합니다.

4. Dialogs > OpenDialog

이 컴포넌트는 파일을 열 때 다이얼로그 박스를 나타내 주어 파일 선택을 할 수 있게 해 주는 기능을 합니다.

5. Dialogs > SaveDialog

이 컴포넌트는 파일을 저장할 때 파일의 이름과 경로를 지정해 주는 다이얼로그 박스를 나타나게 하는 기능을 합니다.

위에 소개한 컴포넌트들을 이용하여 간단한 메모장을 제작해 보겠습니다.

델파이를 실행시키고 새 폼에 MainMenu, Memo, StatusBar, OpenDialog, SaveDialog 컴포넌트를 위치 시킵니다. MainMenu 컴포넌트의 Items를 클릭하고 … 버튼을 클릭하여 메뉴를 추가시킵니다. 여기에서는 열기와 저장 끝내기 메뉴만 추가하였습니다.

메뉴 편집화면

메뉴 편집화면

다음은 컴포넌트의 배치가 끝난 상태입니다.

컴포넌트의 배치가 끝난 Form

컴포넌트의 배치가 끝난 Form

Memo 컴포넌트의 Align을 alClient로 설정하였습니다. ScrollBars Property를 none으로 하여 스크롤바가 나오지 않지만 다른 값으로 지정을 하시면 스크롤바가 나오게 됩니다. Property를 도움말을 참고 하셔서 바꾸어 보시기 바랍니다. StatusBar 컴포넌트의 Panels Property를 클릭하시고 …버튼을 클릭하시면 Panel을 편집하는 창이 하나 뜨게 됩니다. 여기에 Add new를 하셔서 Panel을 하나 추가합니다. SaveDialog 컴포넌트를 선택한 후 Filter Property를 선택하여 … 버튼을 누르면 Filter Editor가 나옵니다. 여기에 그림과 같이 설정을 해 줍니다.

Filter Editor

Filter Editor

이제 실제적으로 코딩을 해보기로 하겠습니다. 뭐… 코딩이랄 것도 없지만요… 첫번째로 폼에 있는 파일 메뉴를 선택하여 열기 메뉴의 이벤트 핸들러를 작성합니다. 내용은 다음과 같습니다.

이제 실제적으로 코딩을 해보기로 하겠습니다. 뭐… 코딩이랄 것도 없지만요… 첫번째로 폼에 있는 파일 메뉴를 선택하여 열기 메뉴의 이벤트 핸들러를 작성합니다. 내용은 다음과 같습니다.

procedure TForm1.N1Click(Sender: TObject);
begin
OpenDialog1.Execute; //OpenDialog를 실행시킵니다.
Memo1.Lines.LoadFromFile(OpenDialog1.FileName); //Memo컴포넌트로 선택한 파일을 읽어들입니다.
StatusBar1.Panels[0].Text:=InttoStr(Memo1.Lines.Count); //새로 추가한 StatusBar의 Panel에 읽어들인 총 라인수를 출력합니다.
end;

두번째로 저장 메뉴에 대한 이벤트 핸들러를 작성합니다. 내용은 다음과 같습니다.

procedure TForm1.N2Click(Sender: TObject);
begin
SaveDialog1.Execute; //SaveDialog를 실행시킵니다.
Memo1.Lines.SaveToFile(SaveDialog1.Filename); //Memo 컴포넌트 내에 있는 내용을 지정한 파일 이름으로 저장합니다.
end;

마지막으로 끝내기 메뉴에 관한 핸들러를 작성합니다.

procedure TForm1.N4Click(Sender: TObject);
begin
Close;
end;

이제 마무리가 되었습니다. 파일을 읽고 저장을 할 수 있는 간단한 메모장이 만들어졌습니다. 물론 예외처리는 하나도 되어있지 않습니다. 그 예로 파일을 읽어올 때 취소 버튼을 누르면 에러가 발생합니다. 이런 에러발생 요인도 생각하셔야 합니다. 제가 모두 구현을 해서 보여드릴 수도 있지만 스스로 구현해 보는 것이 더 좋은 공부가 될 거라 생각해서 간단하게만 보여 드렸습니다. 추가해야 할 사항으로는 글자체를 바꾸고, 배경색을 바꾸는 기능이 있어야 하겠고, 검색 기능도 있어야 하겠지요…