delphi 中的fctreeView 所有节点有checkBox。 checkBox被选中的保存, 没选中的不保存! 而且下次在某个地方还要以fcTreeView的形式显示给用户!怎么保存呢!请高人指教!

解决方案 »

  1.   

    很简单的吧,遍历选择的文本是否等于INI文件中的值 或者分割文本文件的文本的值,再判断选择状态
      

  2.   

    保存时增加对CHECKBOX的字段,显示的时候再读出来啊
      

  3.   

    显示的时候只显示被check的节点!而且仍要以以前的结构显示!我想的是!在保存时就只保存已选择的节点!显示式直接拿出来就行了!还有一种是   vokeyliu    说的!带checkbox保存!读的时候不显示  UnChecked 节点!而且再次显示的时候不需要CheckBox了!只显示结构就行了!
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      I:Integer;
      Node : TfcTreeNode;
    begin
         for I := 0 to fcTreeView1.Items.Count -1 do
         begin
           if  fcTreeView1.Items.Item[I].Checked  then
             begin
             fcTreeView1.Selected := fcTreeView1.Items.Item[I];
             Node := fcTreeView1.Selected;
             Node.Delete;
            end;
        end;
       fcTreeView1.SaveToFile('G:\ceshi.txt');
    end;这段代码有什么问题吗?为什么报错呢!
      

  5.   

    这样是不行的。中途删除节点,同时fcTreeView1.Items.Count值变化了,造成循环错误。
    删除时,fcTreeView1.Items.Count-1,而I+1,这样可漏掉切点。使用:
    Top:=0;
    repeat
      if fcTreeView1.Items.Item[Top].Checked
      then fcTreeView1.Items.Item[I].Delete
      else Top:=Top+1;
    until Top>=fcTreeView1.Items.Count;
    fcTreeView1.SaveToFile('G:\ceshi.txt');
      

  6.   

    上面I改为Top:
    Top:=0;
    repeat
      if fcTreeView1.Items.Item[Top].Checked
      then fcTreeView1.Items.Item[Top].Delete
      else Top:=Top+1;
    until Top>=fcTreeView1.Items.Count;
    fcTreeView1.SaveToFile('G:\ceshi.txt');