Q&A

  • 답변좀 해주세요.
트리뷰에 대한 질문입니다.

다시 글을 올립니다.

Treeview을 클릭하면 그곳에는 font와주변 색깔이 바뀌지 않습니까..

그런데 여기서 다른곳(예로 Edit또는 그리드)을 클릭하면 그곳의 색깔이 원상태가 되지 않습니까..

이것을 계속 유지를 시켜줄려면 어떻게 하면 되는지요.

고수님들 가르켜주세요.

4  COMMENTS
  • Profile
    1cm 2001.11.28 07:52
    DrawItem이벤트에서



    IF (OdSelected in State) then Font.Color:=원하는 색깔..;



    포커스를 잃더라도 선택되 있는 상태이기만 하면.. 원하는 색깔의 글씨를.....



    이런 식으로 해보세여..



    영프리오 wrote:

    > 트리뷰에 대한 질문입니다.

    > 다시 글을 올립니다.

    > Treeview을 클릭하면 그곳에는 font와주변 색깔이 바뀌지 않습니까..

    > 그런데 여기서 다른곳(예로 Edit또는 그리드)을 클릭하면 그곳의 색깔이 원상태가 되지 않습니까..

    > 이것을 계속 유지를 시켜줄려면 어떻게 하면 되는지요.

    > 고수님들 가르켜주세요.

  • Profile
    영프리오 2001.11.28 10:04
    procedure Tfmbasic.TreeView1CustomDrawItem(Sender: TCustomTreeView;

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

    begin

    if OdSelected in State then

    begin

    Font.Color := clWhite ; // 선택된 item의 폰트 컬러

    Brush.Color := clSkyBlue ; // 선택된 item의 Brush Color

    end;

    end;

    위와 같이 했는데 에러가 나는데요. 그리고 저는 위에서 OdSelected 이것 대신에 cdsSelected 을 사용도 해봤는데 이것은 제가 원하는 이벤트가 안나오더가고요.

    다른것이 있을것 같은데 어떻게 하면 되나요.





    1cm wrote:

    > DrawItem이벤트에서

    >

    > IF (OdSelected in State) then Font.Color:=원하는 색깔..;

    >

    > 포커스를 잃더라도 선택되 있는 상태이기만 하면.. 원하는 색깔의 글씨를.....

    >

    > 이런 식으로 해보세여..

    >

    > 영프리오 wrote:

    > > 트리뷰에 대한 질문입니다.

    > > 다시 글을 올립니다.

    > > Treeview을 클릭하면 그곳에는 font와주변 색깔이 바뀌지 않습니까..

    > > 그런데 여기서 다른곳(예로 Edit또는 그리드)을 클릭하면 그곳의 색깔이 원상태가 되지 않습니까..

    > > 이것을 계속 유지를 시켜줄려면 어떻게 하면 되는지요.

    > > 고수님들 가르켜주세요.

  • Profile
    1cm 2001.11.28 18:47
    이궁..지송!!



    어젯밤에 졸린상태라소 Treeview를 왠 Listbox로 착각했네욤!!



    님의 말은 트리뷰에서 포커스를 잃더라도 선택되 있는 것은 계속 선택되 있는 상태로



    남아라..이거죠



    음..테스트는 못해봤구여..버그가 이쓸찌 모릅니다....



    일단 전역변수로



    var

    MyNode: TTreeNode; 라고 해주시겅..



    MouseDown 이벤트에서



    MyNode:=Treeview.Selected;

    Treeview1.Repaint;



    일케 해여.. 글구 DrawItem이벤트에서



    IF Node=MyNode then

    begin

    Treeview1.Canvas.Brush.Color:=원하는 색깔

    Treeview1.Canvas.FillRect(Node.DisplayRect(True));

    end;



    일케 하면 대지 않나여..(아마 몇가지 더 고칠점이 나타날지도..)



    다른 방법이 있으심은 고수님들께서..









    영프리오 wrote:

    > procedure Tfmbasic.TreeView1CustomDrawItem(Sender: TCustomTreeView;

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

    > begin

    > if OdSelected in State then

    > begin

    > Font.Color := clWhite ; // 선택된 item의 폰트 컬러

    > Brush.Color := clSkyBlue ; // 선택된 item의 Brush Color

    > end;

    > end;

    > 위와 같이 했는데 에러가 나는데요. 그리고 저는 위에서 OdSelected 이것 대신에 cdsSelected 을 사용도 해봤는데 이것은 제가 원하는 이벤트가 안나오더가고요.

    > 다른것이 있을것 같은데 어떻게 하면 되나요.

    >

    >

    > 1cm wrote:

    > > DrawItem이벤트에서

    > >

    > > IF (OdSelected in State) then Font.Color:=원하는 색깔..;

    > >

    > > 포커스를 잃더라도 선택되 있는 상태이기만 하면.. 원하는 색깔의 글씨를.....

    > >

    > > 이런 식으로 해보세여..

    > >

    > > 영프리오 wrote:

    > > > 트리뷰에 대한 질문입니다.

    > > > 다시 글을 올립니다.

    > > > Treeview을 클릭하면 그곳에는 font와주변 색깔이 바뀌지 않습니까..

    > > > 그런데 여기서 다른곳(예로 Edit또는 그리드)을 클릭하면 그곳의 색깔이 원상태가 되지 않습니까..

    > > > 이것을 계속 유지를 시켜줄려면 어떻게 하면 되는지요.

    > > > 고수님들 가르켜주세요.

  • Profile
    영프리오 2001.11.28 20:22


    이 버그까지 잡아 달라고 하면 무리겠죠.

    무슨 버그냐 하면 프로그램 상에는 에러는 없고요.

    노드부분을 클릭시 그 밑에 노드가 진하게 나온다는것과 상위 parent 노드가1.5배정도 커진다는 것입니다.

    저는 이유를 모르기 때문에 조금 어렵네요.

    여러가지 도움에 감사합니다. 수고하세요