Programming/Delphi

TFrame 를 상속받아서 컴포넌트를 만들기

통통만두 2010. 10. 6. 10:40
반응형


웹 에디터를 만들어 볼 작정으로 DHTML 을 임포팅한 후에 글꼴이라던가, 폰트사이즈라던가 수정을 하려면 콤보박스가 필요했다.

그러면 필요한게 콤보박스도 올라가야 하고, DHTML도 올라가야 하는 무언가가 있어야 한다.

나는 TFrame 를 사용하여 그 위에 컨트롤을 배치하도록 했다.

환경은 Window7, Delphi 2007 이다.

먼저 Component - New VCL Component 를 눌러서 TFrame를 찾아보자.

그렇다. 아무리 찾아도 없다 -_-;; 왜 없는지는 잘 모르겠으며 찾아보지도 않았음.. (욕하지마세요 ㅠㅠ)

(앗, 한 번 꽁수를 쓰고 나니 목록에 TFrame 가 보이긴 한데 정장 dfm 이 생성되지 않았음)

이제 꽁수를 쓸 차례이다.

우선 File - New - Package 를 선택해서 패키지를 만든다.

그 다음 Component - New VCL Component 를 눌러서 아무것이나 상속을 받는다. (나는 Unit name 로 정렬해서 Forms중에 선택함)

그리고 아래의 그림처럼 패키지에 unit 파일을 추가한다.


그런 다음 File - New - Others - Frame 를 추가한다.

생성된 유닛은 아래와 같다.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TFrame1 = class(TFrame)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

implementation

{$R *.dfm}

end.

자.. 이제 꽁수를 발휘할 시간이다.

처음 생성된 unit 에서 훔쳐올 것이 있다.

그것은 procedure Register; 이다.

이것을 프레임 unit에 복사하자. 아래와 같다.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TFrame1 = class(TFrame)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  procedure Register;

implementation

{$R *.dfm}

procedure Register;
begin
  RegisterComponents('MARS', [TCustomFrame1]);
end;

end.

자. 이제는 맨 처음 생성된 유닛을 프로젝트에서 제외시킨다.

그리고 나서 클래스명을 입맛에 맛게끔 수정하고, RegisterComponents에서 클래스명도 같이 바꿔준다.

또 생성된 프레임의 이름을 바꿔준다. 나는 MarsHtmlEdit로 하였다.

자, 이제 컴파일을 해보자. 잘 돌아간다.

이제 패키지를 인스톨하고 컴포넌트를 등록하고, 저장하고 새로운 프로젝트를 생성하자.

아까 등록한 컴포넌트가 리스트에 떡! 하니 버티고 있다.

이제 컴포넌트를 폼 위로 올려보자.


아주 잘 나온다.


반응형