Treeview的选中节点,高亮显示。
但在失去焦点的时候,不显示
如果设置了TreeView.HideSelection:=False;
则在失去焦点的时候为灰色显示
现在我希望在失去焦点的时候依然可以普通的高亮显示,如windows默认的蓝色,
请问该如何做。谢谢

解决方案 »

  1.   


    procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
      Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
    begin
      if node.Selected then
      begin
        TreeView1.Canvas.Brush.Style := bsSolid;
        TreeView1.Canvas.Brush.Color := clRed;
      end;
    end;
      

  2.   


    这位大哥,clRed是固定的,我现在想要的是系统自己的highlight,这样可以随着系统设定变化原来是clHighlight,但是用这个在失去焦点时一样会变灰……
      

  3.   


    那个点啊……累死我了,死都对不上……
    关键delphi用psDot居然点是两个像素,要用pmNotXor自己去中和,但是感觉还是比默认的点线的点的间隔大……,这宽设定单位是Int,我已经是1了,无语……
      

  4.   

    以clHighlight代替clRed,自画也会变灰?
    自画过程是不分state了
    难道 失去焦点 时,控件会自行画(没有通过自画过程)一下
      

  5.   

    找到方法了  if node.Selected then
      begin
        Canvas.Brush.Style := bsFDiagonal;
        Canvas.Brush.Color := clHighlight;
        Canvas.Font.Color := clHighlightText;
      end;
    将style强行设置为前台窗口,就可以了,不然就和默认的是一样的了……
    ok。可以结了
      

  6.   

    OnCustomDrawItem事件里只需一句TreeView1.Canvas.Brush.Style := bsFDiagonal;就可以了。
      

  7.   

    太难搞了用WPF怎么实现呀?