TTreeViewのLoadFromStreamでロードするには

解決


Gライタン  2007-10-05 11:23:15  No: 27958

TTreeViewをLoadFromFileではなく、LoadFromStreamでツリーの状態を復元しようとしているのですが、

var
MS:  TMemoryStream;
slstTmp:  TStringList;
begin

  MS  :=  TMemoryStream.Create;
  slstTmp  :=  TStringList.Create;

  slstTmp.LoadFromFile('tree.txt');  //tree.txtにはTTreeView.SaveToFileで保存された形式のテキストが入っている

  slstTmp.SaveToStream(MS);
  TreeView1.LoadFromStream(MS);

  MS.Free;
  slstTmp.Free;

・・見よう見真似でTMemoryStreamを使ってみたのですが、TreeView1の中には何も入っていません。
TTreeViewのItemsはTTreeNodeなのでどこか特殊なのかもしれませんが。

要するに、slstTmpが持ってるツリー情報をTTreeView.LoadFromFileで開くようTreeView1に移したいのです。


これじゃね?  2007-10-05 17:45:10  No: 27959

slstTmp.SaveToStream(MS);
  MS.Position := 0;     //ここ
  TreeView1.LoadFromStream(MS);


Gライタン  2007-10-05 20:11:00  No: 27960

うわっ!  できました!!

ストリームの場合はPositionを0にしないといけないんですね…

小さなことだけど、大変勉強になりました。  どうもありがとうございます!!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加