我有一个包含3列的tcxTreeList,第一列具有set属性
Node.CheckGroupType := ncgCheckGroup;
,第二列包含第一个根节点的密钥,第三列包含根节点下的所有子节点的密钥。
我如何获取根节点的密钥(无论是否已选中)以及所有已检查的子节点的密钥到2个变量中以插入到db中,以及从我们从DB中获得的密钥中加载项
我添加项目的代码如下
APNode := tv.Add;
APNode.CheckGroupType := ncgCheckGroup;
APNode.Values[0] := define;
ApNode.Values[1] := dCode;
定义-包含“创建”,“发布”,“活动中”等文本。 dcode-包含每个根节点的键值,例如E,F,I,P,R
这是我为每个根节点添加子节点的方式
procedure TF_Form1.addPStatsToTreeList(tl: TcxTreeList; const dcode,define: string);
function AddTreeListNode(TreeList: TcxTreeList; APNode: TcxTreeListNode; const AValues: Array of Variant; AImageIndex: Integer): TcxTreeListNode;
begin
Result := TreeList.AddChild(APNode);
Result.AssignValues(AValues);
Result.Imageindex := AImageIndex;
end;
var
grpnode,chNode,ANode: TcxTreeListNode;
icnt : integer;
begin
icnt := tl.Count;
if Assigned(tl) then
begin
ANode := tl.TopNode;
while ANode <> nil do
begin
ANode := AddTreeListNode(tl,ANode,[define,'',dcode],0);
ANode := TcxTreeListNode(ANode.GetNext);
end;
end;
end;
更新
dcode是一个字母,Definition是一个字符串,Dcode是定义字符串的键,就像键值对一样,Dcode是键,定义是值。
在树形列表中,根节点(如“创建”,“发布”,“处于活动”,“已检查”和“重新激活”)具有不同的“密钥”(位于第1列),而子节点值(如“样本”,“开发”,“生产”等)的密钥位于第3列。
仅将密钥值保存到DB,无论是否选中根节点密钥,都直接保存。每个根节点密钥将保存到不同的行中,并且仅进入子节点。选中的节点密钥以逗号分隔的形式保存到DB。
例如 。如果选中了创建的根节点及其下的项目(如Sample,Development),则根节点密钥E
是一列[DEFCODE(Primarykey)],而逗号分隔的子节点密钥M,E
(DEFINITION)在另一列中