码迷,mamicode.com
首页 > 其他好文 > 详细

TTreeView.OnCustomDrawItem

时间:2014-08-13 18:00:26      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:style   http   color   os   io   strong   for   ar   

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;


TTreeView.OnCustomDrawItem,布布扣,bubuko.com

TTreeView.OnCustomDrawItem

标签:style   http   color   os   io   strong   for   ar   

原文地址:http://www.cnblogs.com/cb168/p/3910327.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!