У меня есть tcxTreeList с 3 столбцами, первый столбец имеет установленное свойство Node.CheckGroupType := ncgCheckGroup;
, а второй столбец содержит ключ первого корневого узла, а третий столбец содержит ключи всех дочерних узлов под корневым узлом. Как я могу получить ключ корневого узла независимо от того, проверен он или нет, и ключи всех проверенных дочерних узлов в 2 переменные для вставки в БД и загрузки элементов из ключей, которые мы получаем из БД
Мой код для добавления элементов, как показано ниже
APNode := tv.Add;
APNode.CheckGroupType := ncgCheckGroup;
APNode.Values[0] := define;
ApNode.Values[1] := dCode;
определить - содержит текст, такой как Created, Released,In-Active и т.д.. все корневые узлы 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 — это ключ, а определение — это значение. В корневых узлах списка дерева, таких как Created, Released, In Active, Checked и Reactivated, есть другой ключ, который находится в столбце 1, а ключ для значений подузлов, таких как Sample, Development, Production и т. д., находится в 3-м столбце. В БД сохраняются только ключевые значения, ключи корневого узла сохраняются напрямую независимо от того, отмечены они или нет. Ключ каждого корневого узла будет сохранен в разных строках и попадет только в подузлы. Ключи проверенных узлов сохраняются в БД через запятую. Например . Если проверяются корневой узел Created и элементы под ним, такие как Sample , Development , то ключ корневого узла E
является одним столбцом [DEFCODE (Primarykey)], а ключи подузлов M,E
(DEFINITION) с разделителями-запятыми находятся в другом столбце.
code
, а другой дляdefine
.code
должен содержать все ключи корневых узлов в каждой строке, гдеdefine
содержит ключи проверенных узлов под корневым узлом. - person userhi   schedule 22.11.2019Node.Parent
иNode.Haschildren
иNode.ChildCount
. Вы можете достичь своих целей, используя предоставленные свойства объекта. - person nolaspeaker   schedule 22.11.2019dcode
— это одна буква, аdefine
— это строка, верно? Кроме того, в первом блоке кода вы присваиваетеdcode
второму столбцу, т. е. ApNode.Values[1], но при вызове AddTreeListNode значениеdcode
передается как третий столбец. значение столбца. Почему такая разница или это ошибка? - person MartynA   schedule 23.11.2019