Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 팁&트릭
Delphi Programming Tip&Tricks
[60] [트릭]protected member를 Access하기
박정모 [] 3583 읽음    2001-09-24 10:07
.
.
컴포넌트 하나를 폼위에 올려놓고 쓰다가 그 컴포넌트의
protected member를 Access해야 하는 경우가 있습니다.

이미 올려진 컴포넌트를 지우고, 그 컴포넌트를 상속하는 새로운 컴포넌트를
만들어서 등록하고... 의 과정을 거쳐 사용하면 일이많죠. 이런 경우에
사용 해볼만한 팁입니다.

delphi 3000 에서 가져왔습니다.

TWinControl의 Color property 를 예로 설명하면

  TWinControlEx = class(TWinControl)
    public
      property Color;   //protected in TWinControl
  end;

이렇게 해서 Color property를 Access할 수 있는 class를 만들어서, 실제로 이
컨트롤을 팔레트에 등록하지는 않고 타입캐스트만 해서 사용합니다.

  procedure TForm1.ColorControl(Sender: TObject);
  var
    I : Integer;
  begin
    for I:= 0 to ControlCount -1 do
    begin
      if Controls[I] is TWinControl then
      begin
        if TWinControl(Controls[I]).Focused then
          TWinControlEx(Controls[I]).Color := clRed           // <- 이 부분이 타입캐스트해서 protected를 Access
        else
          TWinControlEx(Controls[I]).Color := clWindow;       // <- 이 부분이 타입캐스트해서 protected를 Access
      end;
  end;

  procedure TForm1.FormCreate(Sender: TObject);
  begin
    Screen.OnActiveControlChange := ColorControl;
  end;

제가 보기에는 제법 쓸만한 방법인것 같은데.
.
.

+ -

관련 글 리스트
60 [트릭]protected member를 Access하기 박정모 3583 2001/09/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.