글쓴이 보관물: Toughman

모든 사람은 소중하다…

일요일에 부대안에서 충격적인 사건이 발생하였습니다. 처음에는 젊은 사람 모두가 안됐구나 하는 생각이 들었습니다. 마침 이종 사촌 동생이 군 복무를 하고 있어서 걱정이 되기도 했습니다. 안타까운 마음이 많이 들기는 했지만 그냥 좀 충격적인 사건이었구나 하고 생각하고 있었습니다. 그런데 희생된 사람들 중에서 한 사람이 평소 알고 지내는 지인분과 친분이 있었던 것을 알게 되었습니다. 그 사실에 많은 충격을 받았습니다. 사건 자체로 많이 놀라기도 했지만 그 사실을 알고 많은 것을 생각하게 되었습니다. 지인께는 짧게 위로의 말을 전할 수 밖에 없었습니다.

대한민국에서는 서너단계만 거치면 모두 아는 사람이라는 말을 들은적이 있었습니다. 처음에 들을때는 그저 웃어넘겼는데 이런일이 일어나니 정말 맞는 말이구나 하는 생각이 들었습니다. 바로 남의일이 아니구나 하는 생각이 들었습니다.

내가 짧은 시간이라도 만나고 지나치는 모든 사람들이 다시한번 소중하게 느껴졌습니다. 아무 관계도 없는 것처럼 보이지만 모두 어떠한 형태로든 연관이 있을 것 같다는 생각을 했습니다. 주위의 사람들에게 소홀하게 대하지 않았나 하는 반성을 하게 된 계기가 된 것 같습니다.

고인들의 명복을 빌며 부상하신 분들의 빠른 쾌유를 기원합니다.

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;

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