Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > TreeView1 - прорисовка выделения при Драге


Автор: XperT 13.6.2009, 00:03
Здраствуйте,
У меня такая проблема:

Я сделал выделение нодов в TreeView жирным если они находятся на первом уровне.

Код

procedure TfrmMain.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if Node.Parent = nil then Sender.Canvas.Font.Style := [fsBold];
end;


Но когда я делаю Drag&Drop, при наведении на такой элемент, он не выделяется как обычный (точнее не прорисовывается выделение). 
Кто-то может подсказать как лечить?

Автор: XperT 13.6.2009, 12:10
Решил проблему следующим образом:



Код

procedure TfrmMain.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if (Sender = TreeView1) then Accept := True;
  DragNode:=TreeView1.GetNodeAt(X,Y);
end;

procedure TfrmMain.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  if Node.Parent = nil then Sender.Canvas.Font.Style := [fsBold];      

  if (TreeView1.Dragging) and (DragNode<>nil)then
  begin
    if Node=DragNode then
      begin
        Sender.Canvas.Brush.Color:= clHighLight;
        Sender.Canvas.Font.Color := clHighLightText;
      end else
      begin
        Sender.Canvas.Brush.Color:= clWhite;
        Sender.Canvas.Font.Color := clBlack;
      end;
  end;  
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)