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

C++빌더 Q&A
C++Builder Programming Q&A
[66665] Re:빌더님 시간되시면 한번 봐주세요. 재질문 입니다 ㅠ
빌더(TWx) [builder] 992 읽음    2012-03-16 18:29
RAD XE2(Update 4)에서 TCustomGrid 클래스는 Vcl.Grids.pas 유닛에 정의되어 있고, 이에 대응하는 C++
헤더파일은 Vcl.Grids.hpp 입니다. 그리고 이 헤더파일에서 "Vcl::Grids" 라는 namespace 를 사용하고 있기
때문에 "void __fastcall Vcl::Grids::TCustomGrid::WMHScroll(TWMScroll &Msg)" 로 한 것 입니다.

사용하는 툴 버전에 따라서 namespace 는 조금 씩 다를 수 있으니까 TCustomGrid에 대한 namespace를
확인해서 적용하세요.





Neit 님이 쓰신 글 :
: 빌더님 시간 내주셔서 고맙습니다.
:
: RTTI 를 써서 메소드를 후킹하는 방법은 아직 선행지식이 없어서 시도를 못해보고
:
: 처음 말씀하신 방법대로 해보려고 하는데요. use rumtime packege 를 check 해제 하고 ....
:
: 빌드를 해보니까,
:
: void __fastcall Vcl::Grids::TCustomGrid::WMHScroll(TWMScroll &Msg)
:
: 해당 라인에서
:
: [C++ Error] MainDlg.cpp(417): E2090 Qualifier 'Vcl' is not a class or namespace name
:
: 위와같은 에러가 나는데요.
:
: Grid uint 에 속하는 TCustomGrid.. 이런건 알겠는데..
:
: Vcl:: 에서 에러 발생하는것에 대해서 잘 모르겠습니다..
:
: 제가 너무 기본을 모르는건 같아요..  구글링을 해봐도, 제가 뭘 잘못 하고 있는건지 모르겠는데요.
:
: 혹시 제가 놓치고 있는것이 있는지요 ?
:
: 바쁘신데 죄송합니다.
:
:
: 빌더(TWx) 님이 쓰신 글 :
: : Neit 님이 쓰신 글 :
: : : 질문 그대로 입니다..
: : :
: : : column 의 너비가 넓어서 한 화면을 넘어가는경우..
: : :
: : : column 뒤쪽의 내용도 보고 싶은데 방법이 없네요 ? ;;;
: : :
: : : 엑셀도 그렇고, 횡스크롤을 하면 무조건 다음 column 으로 넘어가는데..
: : :
: : : 이런 동작을 하는 grid componet 를 아시거나
: : :
: : : 기본 component 를 이용해서 구현가능한 좋은 아이디어 있으신 분들께 조언을 구하고자 합니다.
: :
: :
: :
: :
: :
: : 답변:
: :
: :
: : 그런 Grid Component가 있는지는 잘 모르겠지만, VCL FrameWork에서 제공되고 있는 기본 클래스를 이용
: : 하더라도 구현은 가능합니다. WMHScroll... 메세지 함수가 TCustomGrid 클래스에서 구현되어 있지만 private로
: : 정의되어 있기때문에 TStringGrid에선 사용할 수 없죠. 그러나 다음과 같은 방법을 이용해서 기존 VCL Framework
: : 소스코드 수정 없이 대체가 가능 합니다.
: :
: :
: : void __fastcall Vcl::Grids::TCustomGrid::WMHScroll(TWMScroll &Msg)
: : {
: : 	String s;
: : 
: : 	switch(Msg.ScrollCode) {
: : 	case SB_LINEUP:
: : 		s.printf(L"Code = SB_LINEUP, Pos = %d", Msg.Pos);
: : 		break;
: : 	case SB_LINEDOWN:
: : 		s.printf(L"Code = SB_LINEDOWN, Pos = %d", Msg.Pos);
: : 		break;
: : 	case SB_PAGEUP:
: : 		s.printf(L"Code = SB_PAGEUP, Pos = %d", Msg.Pos);
: : 		break;
: : 	case SB_PAGEDOWN:
: : 		s.printf(L"Code = SB_PAGEDOWN, Pos = %d", Msg.Pos);
: : 		break;
: : 	case SB_THUMBPOSITION:
: : 		s.printf(L"Code = SB_THUMBPOSITION, Pos = %d", Msg.Pos);
: : 		break;
: : 	case SB_THUMBTRACK:
: : 		s.printf(L"Code = SB_THUMBTRACK, Pos = %d", Msg.Pos);
: : 		break;
: : 	default:
: : 		s.printf(L"Code = Unknown, Pos = %d", Msg.Pos);
: : 	}
: : 
: : 	Form1->Caption = s;
: : }
: : 

: :
: : 런타임 패키지를 사용하지 않도록 프로젝트 옵션을 설정하고 컴파일 하면 위에서 정의한 코드가 TCustomGrid
: : 클래스에서 정의하고 있는 WMHScroll()을 대체 해버리게 됩니다. 나머지 로직은 TCustomGrid 소스를 참조해서
: : 구현하면 되겠죠.
: :
: : static link 로 컴파일 할땐.. 위와 같은 방법을 이용하면 되고,  런타임패키지를 이용할 때는 RTTI를 이용해서
: : 메소드를 후킹해주면 됩니다.
: :
: : ...

+ -

관련 글 리스트
66647 Grid 중 횡scroll시 column 단위가 아니라 listview 처럼 pixels 단위로 scroll 되는 component 가 있나요 Neit 1248 2012/03/15
66649     Re:Grid 중 횡scroll시 column 단위가 아니라 listview 처럼 pixels 단위로 scroll 되는 component 가 있 빌더(TWx) 1335 2012/03/16
66656         빌더님 시간되시면 한번 봐주세요. 재질문 입니다 ㅠ Neit 906 2012/03/16
66665             Re:빌더님 시간되시면 한번 봐주세요. 재질문 입니다 ㅠ 빌더(TWx) 992 2012/03/16
66666                 -해결- 감사합니다! Neit 1073 2012/03/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.