RAD Studio VCL Reference
ContentsIndex
PreviousUpNext
TTreeView.Indent Property

Specifies the amount of indentation in pixels when a list of child nodes is expanded.

Pascal
property Indent: Integer;
C++
__property int Indent;

Use Indent to determine how far child nodes are indented from their parent nodes when the parent is expanded.  

C++ Examples: 

 

/*
The following example shows how the OnCustomDrawItem event
handler draws items and lines of the tree view after the 
OnCustomDraw event handler has filled in the background.
*/ 
void __fastcall TCustomDrawForm::TVCustomDrawItem(TCustomTreeView *Sender,
      TTreeNode *Node, TCustomDrawState State, bool &DefaultDraw)
{
  TRect NodeRect;
/*
    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 (State.Contains(cdsSelected))
    {
      TV->Canvas->Font->Assign(SelectedFontDialog->Font);
      TV->Canvas->Brush->Color = SelBkgColorDialog->Color;
    };

    DefaultDraw = FDefaultDrawItem;
/*
    DefaultDraw = False means you have to handle all the
    item drawing yourself, including the buttons, lines,
    images, and text.
*/
    if (!DefaultDraw)
    {
      //draw the selection rect.
      if (State.Contains(cdsSelected))
      {
        NodeRect = Node->DisplayRect(True);
        TV->Canvas->FillRect(NodeRect);
      };
      NodeRect = Node->DisplayRect(False);

      if (None1->Checked)
      //no bitmap, so paint in the background color.
      {
        TV->Canvas->Brush->Color = BkgColorDialog->Color;
        TV->Canvas->Brush->Style = FBrushStyle;
        TV->Canvas->FillRect(NodeRect);
      }
      else
        //don't paint over the background bitmap.
        TV->Canvas->Brush->Style = bsClear;

      NodeRect.Left = NodeRect.Left + (Node->Level * TV->Indent);
      // NodeRect.Left now represents the left-most portion 
      // of the expand button
      DrawButton(&NodeRect, Node); // See the CustomDraw demo

      NodeRect.Left = NodeRect.Left + TV->Indent + FButtonSize;
      //NodeRect->Left is now the leftmost portion of the image.
      DrawImage(&NodeRect, Node->ImageIndex); // See the CustomDraw demo

      NodeRect.Left = NodeRect.Left + ImageList->Width;
      //Now we are finally in a position to draw the text.

      TV->Canvas->TextOut(NodeRect.Left, NodeRect.Top, Node->Text);
    };
}

 

Delphi Examples: 

{
The following example shows how the OnCustomDrawItem event 
handler draws items and lines of the tree view after the 
OnCustomDraw event handler has filled in the background.
} 
procedure TCustomDrawForm.TVCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode;
  State: TCustomDrawState; var DefaultDraw: Boolean);
var
  NodeRect: TRect;
begin
  with TV.Canvas do
  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
      Font.Assign(SelectedFontDialog.Font);
      Brush.Color := SelBkgColorDialog.Color;
    end;

    DefaultDraw := False; // FDefaultDrawItem;
{
    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);
        FillRect(NodeRect);
      end;
      NodeRect := Node.DisplayRect(False);

      if None1.Checked then
      //no bitmap, so paint in the background color.
      begin
        Brush.Color := BkgColorDialog.Color;
        Brush.Style := FBrushStyle;
        FillRect(NodeRect)
      end
      else
        //don't paint over the background bitmap.
        Brush.Style := bsClear;

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

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

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

      TextOut(NodeRect.Left, NodeRect.Top, Node.Text);
    end;
  end;
end;

 

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!