Ttreeview. oncustomdrawitem

Source: Internet
Author: User
c++
/*The following example shows how the OnCustomDrawItem eventhandler 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

{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;


Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.