2013년 3월 14일 목요일

델파이 2장

델파이 1장과 2장은 페이지수가 꽤 된다 -_- 그래서 여러개로 나누어서 올려야 할 꺼 같다.
2장 주제는 폼의 특성과 화면 띄우기 이다.

솔직히 이걸 하나한 캡쳐해서 올리기엔 너무 빡쎄다 -_-
책을 보고 하면 되기에 ( --);;;

먼저 전체 소스코드를 받을 수 있는 곳을 알려주겠당~

http://tech.devgear.co.kr/devgearbook/2435

1. 메모리 해체 관련한 폼의 종류 (Auto Create 폼, Available 폼)


*Auto Create 폼 - 기본적으로 설정되어있는 메모리 해제를 신경 안쓰는 폼

*Available 폼 - 사용자가 필요한 시점에 동적으로 메모리에 로드하고 사용이 끝나면 메머리를 해제하는 방법을 택할 수 있는 폼

폼을 동적으로 생성하고 해제하기 위해서는 먼저 Available 폼으로 바꿔야 한다.
바꾸는 법은 Project -> Option 메뉴에서 Forms 항목에 있다.

2. 폼이 나타나는 방식에 따른 폼의 종류(Modal, Modeless)


* Modal 폼 - 다른 윈도우를 사용할수 없도록 화면의 맨 위에 활성화 되는 폼
(예 - 로그인 창, 옵션 창)

*Modeless 폼 - 폼이 생성되어 나타나도 여전히 다른 폼을 사용할 수 있는 폼
(예 - 시계, 인터넷창 등등)

-Modal 예제-


procedure TForm1.Button12Click(Sender: TObject);
begin
  Form3 := TForm3.Create(Application);
  if Form3.ShowModal = mrOk then
    Caption := FormatDatetime('yyyy-mmmm-dd hh:nn:ss', Form3.DateTimePicker1.Date);
  Form3.Free;
end;

주황색 부분이 모달로 띄우겠다는 뜻이다.
아래는 달력을 띄우는 것임 ㅡ.ㅡ;; 자세한건 소스를 다운 받아서...........

-Modeless 예제-


procedure TForm1.Button13Click(Sender: TObject);
var
  I : Word;
begin
  for I := 0 to Application.ComponentCount - 1 do
  begin
    if Application.Components[I] is TForm2 then
    begin
      (Application.Components[I] as TForm).Show;
      Exit;
    end;
  end;

  Form2 := TForm2.Create(Application);
  Caption := IntToStr(Application.ComponentCount);
  Form2.Show;

end;

주황색 부분은 버튼을 누를 때마다 창이 뜨는 것을 방지해준다. 오로지 1개만 뜸.


빨간색 부분이 Modeless로 띄우는 부분이다.

Modeless는 메모리 해제를 내가 해줘야 한다.(귀찮게시리 ㅡㅡ)
Form2가 Modeless 폼이라면 닫을 때 메모리 해제를 해주어야 한다.


procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree; //메모리 해제
end;

3. Close 할 때 어떻게 Close 할 껀지 결정해주긔~


caNone : 폼을 Close 하지 않음. 아무런 변화가 없음(뭐하러 있는거임? ㅡㅡ?)
caHide : 폼을 닫지 한고 숨김.
caFree : 폼이 닫히고 메모리에서 해제함.(바로 위에 사용했제?)
caMinimzed : 폼을 최소화 함.

프로그램이 끝나기 전에 Action 변수에 위에 것을 넣어줘야 함.

4. Is 연산자와 As 연산자


* is 연산자 : 개체 유형 체크 연산자

개체의 실제 런타임 클래스를 확인하는데 사용.

var
H : Thourly;
...
if H is Thourly then

이 연산자는 H라는 오브젝트가 Thourly 클래스나 그 자손 클래스의 인서턴스인 경우 True를 리턴하고 아니면 False를 리턴함.

* as 연산자 : 확인된 타입 캐스트 연산자

Procedure Button1Click(Sender:Tobject);
begin
   (sender As TButton).Caption := 'ok';
end;

위 예문에서 sender은 TObject 타입이므로 Caption 속성에 접근할 수 없으므로 As 연산자를 사용하여 타입캐스트 하여 Caption 속성에 접근함.

5. 폼의 초기처리/ 마감처리를 위한 이벤트

  • OnCreate 이벤트 - 폼이 생성될 때 발생하는 이벤트. 주로 화면의 초기처리 작업을 위한 이벤트로 사용
  • OnShow 이벤트 - 폼이 표시될 때 발생하는 이벤트.
  • OnActivate 이벤트 - 폼에 포커스가 넘어와 활성화 될 때 발생하는 이벤트.
  • On Deactive 이벤트 - 폼이 비활성화될 때 발생하는 이벤트
  • OnCloseQuery 이벤트 - OnClose 이벤트 발생전에 윈도우에 Close 되는지 확인하고 싶을 때 사용하는 이벤트
  • OnClose 이벤트 - 폼을 닫을 때 발생하는 이벤트로 화면의 마무리 처리를 위한 이벤트로 사용
  • OnDestroy 이벤트 - 폼이 해제될 때 발생하는 이벤트 

여기까지 대충(정말 대충-_-)2장을 요약해봤다.(그래도 난 코딩하며 공부했다규!!)
소스 코드를 여기에 올리기엔 분량도 많으니 위에 소개한 소스코드를 다운 받아서 해보길 바란다.
델파이는 프로그램을 만드는데 정말 간단하게 만들수 있는 것 같다.
정말 많은 컴포넌트를 제공하고, 왠만한 기본 메뉴 정도는 다 만들어져 있다.
우리가 할일은 배치하고, 연결하고, 이쁘게 포장만 해도 왠만한 프로그램이 만들어진다.
물론 없는 것은 개발자가 직접 만들어야 하지만....
정말 빠른 시간에 프로그램을 작성할 수 있는 것이 델파이의 장점인것 같다.

3장은 그림판과 동영상 프로그램을 작성해볼껀데.
이건 하나하나 캡쳐해서 올려보겠다.(오오미)

댓글 없음:

댓글 쓰기