C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[14278] VirtualStringTree의 Layout.Header.Columns 폼 디자이너 팝업에 에디터 추가하기...
DrK [whitekid] 2916 읽음    2008-04-28 19:53
VirtualTree중에서 VirtualStringTree를 쓰다보면 불편한 것 중에 하나가.. Header column을 편집하기 위해서 프러퍼티 에디터를 뒤지는데 영 불편하다는 겁니다. Layout --> Header --> Columns를 들어가야하는데 영 길지요..

TListView처럼 폼 디자이너에서 바로 들어가면 좋겠다 생각이 들더군요. .그래서 간단히 만들어 봤습니다.

우선 Design 프로젝트를 열어야겠지오.. VirtualTree에서 제공하는 설치 프로그램으로 설치했다면 C:\Documents and Settings\All Users\Documents\Soft Gems\Virtual Treeview\Delphi\VirtualTreesD11D.dpk 라는 파일을 열고(와 길다..).. 프로젝트에서 VirtualTreesReg.pas 파일을 엽니다.

그리고 기본 콤포넌트 에디터인 TVirtualTreeEditor를 찾아서 거기서 상속받는 에디터를 하나 만듭시다.

type
  TVirtualTreeEditor = class (TDefaultEditor)
  public
    procedure Edit; override;
  end;

  TVirtualTreeEditorWithDesignerPopup = class(TVirtualTreeEditor)
  public
    // for column editor..
    procedure ExecuteVerb(Index: Integer); override;
    function GetVerb(Index: Integer): string; override;
    function GetVerbCount: Integer; override;
  end;

그리고 추가된 세 함수를 다음과 같이 구현해줍니다.

procedure TVirtualTreeEditorWithDesignerPopup.ExecuteVerb(Index: Integer);
begin
  case Index of
  0: ShowCollectionEditor(Designer, Component, TVirtualTreeCast(Component).Header.Columns, 'Columns');
  end;
end;

function TVirtualTreeEditorWithDesignerPopup.GetVerb(Index: Integer): string;
begin
  case Index of
  0:  Result := 'Column editor...';
  end;
end;

function TVirtualTreeEditorWithDesignerPopup.GetVerbCount: Integer;
begin
  Result := 1;
end;


아직 안끝났습니다. 이제 이렇게 만든 것을 등록해줘야하는데요.. 소스 중에서

RegisterComponentEditor(TVirtualStringTree, TVirtualTreeEditor);
RegisterComponentEditor(TVirtualDrawTree, TVirtualTreeEditor);

라고 되어있는 부분을 찾아서

RegisterComponentEditor(TVirtualStringTree, TVirtualTreeEditorWithDesignerPopup);
RegisterComponentEditor(TVirtualDrawTree, TVirtualTreeEditor);

이렇게 콤포넌트 에디터를 바꿉니다. 그리고 패키지를 컴파일 하면... 이제 그림처럼 팝업창에 에디터가 보입니다...

근데 하고보니... VT의 그 복잡한 옵션도 팝업으로 하고 싶다는 생각이 드네요.. 쩝.. 이렇게 하려면 폼을 만들어야하니깐 일단 패스~~
civilian [civilian]   2008-04-29 11:23 X
좋은 내용입니다만...

강좌나 팁이 더 어울리는 자린것 같아요.
DrK [whitekid]   2008-04-29 13:06 X
팁&트릭에 올릴까도 생각해봤지만.. 왠지 여기가 맘이 더 편해요... 왠지 팁에 올리면 좀더 검증해보고 사용해보고 올려야될 것 같은 느낌이 들어서...

이건 뭐... 생각난김에 그냥 해본거라.. 정상적으로 돌아가는지, 다른 부작용은 없는지 확인이 안돼서 그냥 이런 방법이 있다는 주절주절 해봤습니다.

옮겨주셔도 좋구요.

+ -

관련 글 리스트
14278 VirtualStringTree의 Layout.Header.Columns 폼 디자이너 팝업에 에디터 추가하기... DrK 2916 2008/04/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.