All pastes #34994 Raw Edit

Marcos__

public text v1 · immutable
#34994 ·published 2005-12-27 19:17 UTC
rendered paste body
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var
  NodeRect: TRect;
begin
  //If DefaultDraw it is true, any of the node's font properties can be
  //changed. Note also that when DefaultDraw = True, Windows draws the
  //buttons and ignores our font background colors, using instead the
  //TreeView's Color property.
  //if cdsSelected in State then
  //begin
  //  Sender.Canvas.Font.Assign(Form1.Font);
  //  Sender.Canvas.Brush.Color := clBlue;
  //end;

  DefaultDraw := False;
  //DefaultDraw = False means you have to handle all the item drawing yourself,
  //including the buttons, lines, images, and text.
  if not DefaultDraw then
  begin
    //draw the selection rect.
    if cdsSelected in State then
    begin
      NodeRect := Node.DisplayRect(True);
      Sender.Canvas.FillRect(NodeRect);
    end;
    NodeRect := Node.DisplayRect(False);

    Sender.Canvas.Brush.Color := clWindow;
    Sender.Canvas.Brush.Style := bsSolid;
    Sender.Canvas.FillRect(NodeRect);

    NodeRect.Left := NodeRect.Left + (Node.Level * TreeView1.Indent);
    //NodeRect.Left now represents the left-most portion of the expand button
    DrawButton(NodeRect, Node);

    NodeRect.Left := NodeRect.Left + TreeView1.Indent + FButtonSize;
    //NodeRect.Left is now the leftmost portion of the image.
    DrawImage(NodeRect, Node.ImageIndex);

    NodeRect.Left := NodeRect.Left + ImageList1.Width;
    //Now we are finally in a position to draw the text.

    Sender.Canvas.TextOut(NodeRect.Left, NodeRect.Top, Node.Text);
    Sender.Canvas.Font.Style := [fsItalic, fsBold];
    Sender.Canvas.TextOut(NodeRect.Left + Sender.Canvas.TextWidth(Node.Text), NodeRect.Top, 'asd');
  end;
end;