虚拟树研究-CheckBox初步判断只能在第一列

//虚拟树研究-CheckBox初步判断只能在第一列
procedure TWindowsXPForm.XPTreeInitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode;
  var InitialStates: TVirtualNodeInitStates);

var
  Data: PEntry;
begin
  if ParentNode = nil then //若为父节点 就位CheckBox样式
  
  begin
    Include(InitialStates, ivsHasChildren);
    Data := Sender.GetNodeData(Node);
    Data^ := TreeEntries[Node.Index mod 18];
    Data.Size := Random(100000);
    Node.CheckType := ctTriStateCheckBox; //ctButton;//ctCheckBox; //默认为第一列
  end
  else
    Node.CheckType := ctRadioButton; //不是父节点时就 是radio的样式
end;

procedure TGeneralForm.VST2InitNode(Sender: TBaseVirtualTree; ParentNode, Node: PVirtualNode;
  var InitialStates: TVirtualNodeInitStates);

const
  LevelToCheckType: array[0..5] of TCheckType = (
    ctButton, ctRadioButton, ctTriStateCheckBox, ctTriStateCheckBox, ctCheckBox, ctNone
  );

var
  Data: PNodeData2;

begin
Node.CheckType := LevelToCheckType[Data.Level];
    Sender.CheckState[Node] := csCheckedNormal;
原文地址:https://www.cnblogs.com/rogge7/p/6425295.html