Q&A

  • 트리뷰에서 상위트리의 색깔을 바꾸는 방법?
안녕하세요?
TTreeView를 사용하고 있는데요
여기서 상위트리에 해당되는 그룹명관련 데이터만 색깔을 바꿔주고
그룹에 속한 데이터들은 기본으로 하고 싶은데요
어떻게 상위트리에 해당되는 그룹명들만 폰트속성을 바꿀수 있는
방법이 없을까여?
1  COMMENTS
  • Profile
    홍성락 2002.09.14 04:47
    hsr///////////////////////////////////////////////////
    아래처럼 OnCustomDrawItem이벤트를 써보세요
    단, 그룹명관련 데이터의 Node.Level이 같다고 할경우입니다.
    아래는 레벨 1일경우이며 그아래 예제는 변경후 바로 다음 인덱스인
    노드가 이상해질경우 선택,보통일경우도 다시 그려주는 예제이므로 혼용해서 써보세요.

    procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
      Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
          with TreeView1.Canvas do begin
             if  (Node.Level = 1) then  begin
                 Font.Color := clBlue;
                 Font.Size := 10;
                 Brush.Color := clGray;
                 FillRect(Node.DisplayRect(True));
             end;
          end;
    end;

    /////////////////////
    아래는 선택일때등을 고려...
    procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
      Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    var
        NodeRect: TRect;
    begin
          with TreeView1.Canvas do begin
             if  (Node.Level = 1) then begin
                 Brush.Color := clGray;
                 Font.Color := clBlue;
                 Font.Size := 10;
             end
             else if (cdsSelected) in State then
                 Brush.Color := clNavy
             else
                 Brush.Color := clWhite;

             NodeRect := Node.DisplayRect(True);
             FillRect(NodeRect);
          end;