zoukankan      html  css  js  c++  java
  • TTreeView.OnCustomDrawItem

    
    
        TTreeNode *node;
        node = this->TreeView1->Items->Add(0, "AAAA");
        TreeView1->Items->AddChild(node, "aaa1");
        TreeView1->Items->AddChild(node, "aaa2");
        TreeView1->Items->AddChild(node, "aaa3");
    
        node = this->TreeView1->Items->Add(0, "BBBB");
        TreeView1->Items->AddChild(node, "aaa1");
        TreeView1->Items->AddChild(node, "aaa2");
        TreeView1->Items->AddChild(node, "aaa3");
    
    

     循环插入节点

        TTreeNode *anode;
        for (int i = 0; i < 100; i++)
        {
            anode = this->TreeView1->Items->Add(0, "Node" + String(i));
            TreeView1->Items->AddChild(anode, "aaa1");
            TreeView1->Items->AddChild(anode, "aaa2");
            TreeView1->Items->AddChild(anode, "aaa3");
        }
    View Code

    c++

    /* 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

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


  • 相关阅读:
    python自动华 (十七)
    vue 链接
    hexo博客相关
    nodejs 安装 cnpm 命令
    centos7 node express项目 将http接口升级为https接口的解决方法
    centos7 showdoc 手动安装部署
    centos7 showdoc 安装部署
    npm install -d
    AngularJs出现错误Error: [ng:areq]
    AngularJs1使用中出现错误 Error: [ng:areq]
  • 原文地址:https://www.cnblogs.com/cb168/p/3910327.html
Copyright © 2011-2022 走看看