Jump to content

How to TUniTreeView load from file


kkelchev

Recommended Posts

Hi ,

How to loadFromFile(TUniTreeView)  like standart VCL TreeView .

It should be possible because in Design time TUniTreeView.Items editor have button "Load" -> Browse (file) and it work fine.

How to do this at RunTime. There is no (or I can't'see it ) TUniTreeView .LoadFromFile method

Thanks

Kamen

Link to comment
Share on other sites

  • 1 year later...

I solved in this way:

type
  TUniTreeViewHelper=class helper for TUniTreeView
    procedure SaveToFile(aFileName:string);
    procedure LoadFromFile(aFileName:string);
  end;

{ TUniTreeViewHelper }

procedure TUniTreeViewHelper.LoadFromFile(aFileName: string);
var f:textfile;
  ss:Tstringlist;
  s,s1:string;
  i,j:integer;
  ind,level:array of integer;
  curlength:integer;
begin
  try
    assignfile(f,aFileName);
    reset(f);
    ss:=Tstringlist.Create;
    //first pass check the owner
    setlength(level,0);
    repeat
      readln(f,s);
      s1:=s.Replace(#9,'');
      ss.Add(s1);//label

      setlength(level,ss.Count);
      level[ss.Count-1]:=length(s)-length(s1);
    until eof(f);

    setlength(ind,length(level));
    ind[0]:=0;
    for i:=ss.Count-1 downto 1 do begin
      j:=i;
      repeat
        dec(j);
      until level[j]=level[i]-1;
      ind[i]:=j;
    end;

    //now I create treeview
    Items.Clear();
    Items.Add(nil,ss[0]);
    for i := 1 to length(ind)-1 do begin
      if ind[i]<0 then Items.Add(nil,ss[i])
      else Items.Add(Items[ind[i]],ss[i]);
    end;

  finally
    closefile(f);
    ss.Free;
  end;
end;

procedure TUniTreeViewHelper.SaveToFile(aFileName: string);
var f:textfile;
  i:integer;
begin
  try
    assignfile(f,aFileName);
    rewrite(f);
    for i:=0 to Items.Count-1 do begin
      writeln(f,StringOfChar(#9,items[i].Level)+items[i].Text);
    end;


  finally
    closefile(f)
  end;
end;

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...