|
트리뷰가 있습니다. 그 넘은 그룹과 고객정보를 표현을 합니다.
고객은 그룹의 차일드로 표현을 하고 있습니다.
그룹 노드의 폰트를 바꿔주기위해서 다음과 같이 처리를 하였습니다.
의도하던대로 글자의 색과 굵기를 바꿀 수 있었습니다.
하지만 차일드 노드를 드래그 드롭시에는 의도대로 되지가 않네요..
다시 말씀드리면..
드래그 드롭을 하면 드래그하는 노드가 지나는 부분의 노드가 반전이 되는데..
차일드노드는 그게 잘 됩니다. 하지만 그룹 노드는 반전이 되지않고 그대로 있습니다.
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;
}
}
//---------------------------------------------------------------------------
|