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
[20162] 질문-트리뷰-드래그시에 OnCustomDrawItem에서 처리 문제
skjoon [skjoon] 888 읽음    2002-07-16 11:42
트리뷰가 있습니다. 그 넘은 그룹과 고객정보를 표현을 합니다.
고객은 그룹의 차일드로 표현을 하고 있습니다.
그룹 노드의 폰트를 바꿔주기위해서 다음과 같이 처리를 하였습니다.
의도하던대로 글자의 색과 굵기를 바꿀 수 있었습니다.

하지만 차일드 노드를 드래그 드롭시에는 의도대로 되지가 않네요..
다시 말씀드리면..
드래그 드롭을 하면 드래그하는 노드가 지나는 부분의 노드가 반전이 되는데..
차일드노드는 그게 잘 됩니다. 하지만 그룹 노드는 반전이 되지않고 그대로 있습니다.

OnCustomerDrawItem에서 처리를 해줘야 할 것 같은데요.
그런데.. 다음 코드에서 어떻게 처리를 해야할지 모르겠네요..
도움말을 찾아보니.. cdsHot 이란 넘을 이용해서 하면 될거 같은데..

if( State.Contains(cdsHot) )

위와같이 했더니 조건에 만족하는 이벤트가 발생하지 않는것 같구요..

질문이 좀 난해한가요? ^^;;

간단하게 다시.. 드래그 드롭을 할때 마우스가 지나가는 노드의 색을 반전시키는 효과를 내고 싶습니다. 그 방법을 아시는 분 도와주세요..

다음은 제가 구현한 코드입니다.

//---------------------------------------------------------------------------
void __fastcall TfrmMain::m_tvCustomerCustomDrawItem(
      TCustomTreeView *Sender, TTreeNode *Node, TCustomDrawState State,
      bool &DefaultDraw)
{
    // 이 비교문은 제가 그룹 노드인지 판단하기 위해 만든부분입니다.
    if( ((LPNodeData)Node->Data)->nNodeType == ID_GROUP_NODE )
    {
        if( State.Contains(cdsSelected) )
            Sender->Canvas->Font->Color = clWhite;
        else
            Sender->Canvas->Font->Color = clNavy;

        Sender->Canvas->Font->Style = TFontStyles()<< fsBold;
    }
}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
20162 질문-트리뷰-드래그시에 OnCustomDrawItem에서 처리 문제 skjoon 888 2002/07/16
30203     Re:질문-트리뷰-드래그시에 OnCustomDrawItem에서 처리 문제 김윤동.제라툴 887 2002/07/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.