Q&A

  • TreeView에서 Items 글자색 변경
안녕하십니까?



트리뷰에서 아이템의 노드마다

색상을 달리하려고 합니다.



고수님의 의견 부탁드립니다.



감사합니다.

3  COMMENTS
  • Profile
    한구용 2001.01.30 23:14
    최영호 wrote:

    > 안녕하십니까?

    >

    > 트리뷰에서 아이템의 노드마다

    > 색상을 달리하려고 합니다.

    >

    > 고수님의 의견 부탁드립니다.

    >

    > 감사합니다.

    ===========================================================

    procedure TForm.XMLNavigator2CustomDrawItem(

    Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState;

    var DefaultDraw: Boolean);

    begin

    Case Node.Level of

    1 : begin

    Sender.Canvas.Font.Color := clFuchsia;

    end;

    2 : begin

    Sender.Canvas.Font.Color := clOlive;

    end;

    3 : begin

    Sender.Canvas.Font.Color := clTeal;

    end;

    4 : begin

    Sender.Canvas.Font.Color := clMaroon;

    end;

    5 : begin

    Sender.Canvas.Font.Color := clGreen;

    end;

    6 : begin

    Sender.Canvas.Font.Color := clAqua;

    end;

    7 : begin

    Sender.Canvas.Font.Color := clNavy;

    end;

    8 : begin

    Sender.Canvas.Font.Color := clBlue;

    end;

    end;



    end;

  • Profile
    구창민 2000.02.22 23:15
    최영호 wrote:

    > 안녕하십니까?

    >

    > 트리뷰에서 아이템의 노드마다

    > 색상을 달리하려고 합니다.

    >

    > 고수님의 의견 부탁드립니다.

    >

    > 감사합니다.



    그런 방법은 없구..그려야 되는데..

    트리뷰의 이벤트 중에서 OnCustomDrawItem 이벤트가 있어요.

    이 이벤트는 트리뷰의 노드를 그리기 직전에 호출되니까

    거기서 그리면 됩니다.

    아래 코드를 참고해 보세요.

    선택된 노드를 뻘겋게 색상을 변경해줄 겁니다.

    그럼, 즐거운 프로그래밍 되시길~



    procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;

    Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);

    var

    DC: HDC;

    OldFont: HFont;

    rtNode: TRect;

    begin

    if cdsSelected in State then begin

    DC := GetDC(Node.Handle);

    oldFont := SelectObject(DC, TreeView1.Font.Handle);

    SetTextColor(DC, clRed);

    try

    rtNode := Node.DisplayRect(true);

    TextOut(DC, rtNode.Left + 2, rtNode.Top + 1,

    pChar(Node.Text), Length(Node.Text));

    DefaultDraw := false;

    finally

    SelectObject(DC, OldFont);

    ReleaseDC(Node.Handle, DC);

    end;

    end;

    end;

  • Profile
    최영호 2000.02.23 06:23
    구창민님 감사합니다.

    저는 델파이 3.0을 사용하고 있는데 델파이3.0에서

    Treeview이벤트를 살펴봐도 OnCustomDrawItem 이벤트는

    없는데 자세히 좀 부탁드립니다.



    감사합니다.







    구창민 wrote:

    > 최영호 wrote:

    > > 안녕하십니까?

    > >

    > > 트리뷰에서 아이템의 노드마다

    > > 색상을 달리하려고 합니다.

    > >

    > > 고수님의 의견 부탁드립니다.

    > >

    > > 감사합니다.

    >

    > 그런 방법은 없구..그려야 되는데..

    > 트리뷰의 이벤트 중에서 OnCustomDrawItem 이벤트가 있어요.

    > 이 이벤트는 트리뷰의 노드를 그리기 직전에 호출되니까

    > 거기서 그리면 됩니다.

    > 아래 코드를 참고해 보세요.

    > 선택된 노드를 뻘겋게 색상을 변경해줄 겁니다.

    > 그럼, 즐거운 프로그래밍 되시길~

    >

    > procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;

    > Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);

    > var

    > DC: HDC;

    > OldFont: HFont;

    > rtNode: TRect;

    > begin

    > if cdsSelected in State then begin

    > DC := GetDC(Node.Handle);

    > oldFont := SelectObject(DC, TreeView1.Font.Handle);

    > SetTextColor(DC, clRed);

    > try

    > rtNode := Node.DisplayRect(true);

    > TextOut(DC, rtNode.Left + 2, rtNode.Top + 1,

    > pChar(Node.Text), Length(Node.Text));

    > DefaultDraw := false;

    > finally

    > SelectObject(DC, OldFont);

    > ReleaseDC(Node.Handle, DC);

    > end;

    > end;

    > end;