TVCustomDrawItem (Delphi)
From RAD Studio Code Examples
Language:
Description
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.
Code
procedure TCustomDrawForm.TVCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean); var NodeRect: TRect; begin with TV.Canvas do begin { If DefaultDraw is True, any of the node's font properties can be changed. Note also that when DefaultDraw = True, Windows draws the buttons and ignores your setted 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 that 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 available, so paint in the background color. begin Brush.Color := BkgColorDialog.Color; Brush.Style := FBrushStyle; FillRect(NodeRect) end else //Do not paint over the background bitmap. Brush.Style := bsClear; NodeRect.Left := NodeRect.Left + (Node.Level * TV.Indent); // NodeRect.Left now represents the leftmost 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 you are finally in the position to draw the text. TextOut(NodeRect.Left, NodeRect.Top, Node.Text); end; end; end;
Uses
- Vcl.ComCtrls.TCustomTreeView.OnCustomDrawItem ( fr | de | ja )
- Vcl.ComCtrls.TTreeNode.DisplayRect ( fr | de | ja )
- Vcl.ComCtrls.TTreeNode.Level ( fr | de | ja )
- Vcl.ComCtrls.TCustomTreeView.Indent ( fr | de | ja )