在treeview1新建节点是自动标记为红色,并保存数据库(如为0时没有颜色,1时为红色),系统从新启动标记颜色应该还在!
procedure TForm1.ppmiTogColorClick(Sender: TObject);
begin
  //设置红色
  if TreeView1.Selected <> nil then
  begin
    TreeView1.Selected.Data := TObject(1);
    TreeView1.Invalidate;
  end;
end;procedure TForm1.ppmiUntogColorClick(Sender: TObject);
begin
  //取消红色
  if TreeView1.Selected <> nil then
  begin
    TreeView1.Selected.Data := nil;
    TreeView1.Invalidate;
  end;
end;//TreeView1.OnAdvancedCustomDrawItem事件
procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
  var PaintImages, DefaultDraw: Boolean);
var
  ACanvas:TCanvas;
  ARect: TRect;
begin
  ACanvas := TreeView1.Canvas;
  ARect := Node.DisplayRect(True);  if Node.Data <> nil then
    ACanvas.Brush.Color := clRed
  else if Node.Selected then
    ACanvas.Brush.Color := clSkyBlue
  else
    ACanvas.Brush.Color := TreeView1.Color;
  ACanvas.Font.Assign(TreeView1.Font);
  ACanvas.FillRect(ARect);
  DrawText(ACanvas.Handle, PChar(Node.Text), -1,
     ARect, DT_SINGLELINE or DT_VCENTER or DT_SINGLELINE);
end;