AdvCheckTreeview连接到数据库

时间:2014-10-22 09:05:20

标签: delphi delphi-xe2

我有一个来自TMS的名为AdvCheckTreeView的组件,其中树视图的每个节点都有一个复选框,就像其他工具选项板中的CheckListBox一样。现在,我的问题是如何获得每个节点的检查状态并保存到数据库。

考虑这是一个具有树视图和复选框的Checktreeview:

PIS00
  |__PIS001
  |  |__PIS00011
  |  |__PIS00012
  |
  |__PIS002
  |  |__PIS00021
  |

现在,我想获得每个的检查状态并将其扔到各自的数据域。例如。

PIS00 - Datafield/Name : DBPIS00
PIS001 - Datafield/NAme : DBPIS001

如果我检查PIS001然后它返回一个布尔结果' True'如果没有,那么它将变成“假”。它将保存每个节点或项目的布尔结果,而不是检查它们。

这可能吗?

如果我使用DBCheckbox,我知道如何在数据库中保存布尔值。我只是不知道如何分配数据字段,如果它带有复选框的树视图,因为它没有数据源。

1 个答案:

答案 0 :(得分:0)

由于这不是数据感知控件,因此您必须手动迭代并根据节点的状态相应地设置每个字段。这基本上与你在第一时间填充树视图所做的相反,例如。

var  
  I : integer;  
  lNode : TTreeNode;  
begin  
  for I := 0 to advchecktreeview1.Items.Count - 1 do  
  begin  
    lNode := AdvCheckTreeView1.Items[I];  
    MyQuery.FieldByName('RelevantField').AsBoolean := AdvCheckTreeView1.Checked[lNode];           
  end;  
end;  

或者使用相关的Node click事件单独设置字段。