Q&A

  • 컴포넌트는 만드는 중입니다.
TCustomEdit를 상속받아 컴포넌트를 만들고 있습니다.

ChangeEvent에서 특정한 작업을 할려고 코딩을 했습니다.

  TXEdit = class(TCustomEdit)
  private
    procedure On_EditChange(Sender : TObject);
   :
   :
  published
    property OnChange;
   :
  end;
  
constructor TXEdit.Create(AOwner : TComponent);
begin
    Self.OnChange := On_EditChange;
end;

procedure TXEdit.On_EditChange(Sender : TObject);
begin
   여기서 특정한 작업을 합니다.
end;

위와 같이 OnChange Event에서 특정작업을 하게 만들었습니다.
컴파일하고... 컴퍼넌트 등록하고...

만든 컴퍼넌트를 Form에 놓고... Event를 확인하니까...
OnChange Event는 나오더군요.

그래서 OnChange에서 더블클릭해서...
다음과 같이 했져..

procedure TForm1.OnChageXEdit1(sender : Tobject)
begin
    ShowMessage('어쩌고 저쩌고..');
end;

실행해서 Edit에 문자를 입력하는 데... Change Event가 전혀
먹지를 안는군요.

즉, 컴포넌트에서 특정 이벤트를 사용해서 만들면...
개발자는 그 이벤트는 사용할 수 없는거 같아요.

컴포넌트에서도 사용하고 개발자도 사용하는 방법이 없을까요?

즐코하세요.

1  COMMENTS
  • Profile
    구창민 2003.03.06 02:37
    override 하시면 됩니다.

    예를 들께여.. 아래처럼..

      protected
        procedure Change; override;

    본체는..

    procedure TXEdit.Change;
    begin
      //Do SomeThing...
      inherited Change;
    end;

    하시면 될겁니다.  ^_^

    즐거운 프로그래밍 하시길~