Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.09.25;
Скачать: CL | DM;

Вниз

Treeview, как хранить?   Найти похожие ветки 

 
Buzzik ©   (2011-06-04 17:59) [0]

Простите за тупой вопрос.
Не могу разобраться с Treeview.
Нет ли у TreeView1.Items.Item[0]. какого либо невидимого изменяемого поля, чтобы записать туда что это за нод, и потом работать с ним?


 
Юрий Зотов ©   (2011-06-04 18:13) [1]

Есть свойство Data. Это указатель. Можно создать любой блок любых данных и его адрес занести в это свойство. Тогда данные будут относиться именно к этому узлу дерева.

Только имейте в виду, что созданный блок данных сам по себе не уничтожится - поэтому, когда он станет уже не нужен, его надо убить ручками.


 
Virgo_Style ©   (2011-06-04 18:13) [2]

.Data, если мне склероз не изменяет


 
Buzzik ©   (2011-06-04 18:38) [3]

Спасибо.
Простите за наглость, а не завалялся ли у кого маленький примерчик кода?


 
Andy BitOff ©   (2011-06-04 18:47) [4]

> Buzzik ©   (04.06.11 18:38) [3]
> Спасибо.
> Простите за наглость, а не завалялся ли у кого маленький
> примерчик кода?

http://tinyurl.com/6ezbpt7


 
VirEx ©   (2011-06-07 07:31) [5]


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls;

type
 TForm1 = class(TForm)
   TreeView1: TTreeView;
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   Button4: TButton;
   procedure Button2Click(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure Button4Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
TreeView1.Items.Clear;
TreeView1.LoadFromFile("c:\111.txt");
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TreeView1.SaveToFile("c:\111.txt");
end;

procedure SaveContainer(Component: TComponent; FileName: string);
var
 FileStream: TFileStream;
 MemStream: TMemoryStream;
begin
 FileStream := TFileStream.Create(FileName, fmCreate);
 MemStream := TMemoryStream.Create;
 try
   MemStream.WriteComponent(Component);
   MemStream.Position := 0;
   ObjectBinaryToText(MemStream, FileStream)
 finally
   MemStream.Free;
   FileStream.Free;
 end;
end;

procedure LoadContainer(Component: TComponent; FileName: string);
var
 FileStream: TFileStream;
 MemStream: TMemoryStream;
begin
 FileStream := TFileStream.Create(FileName, 0);
 MemStream := TMemoryStream.Create;
 try
   ObjectTextToBinary(FileStream, MemStream);
   MemStream.Position := 0;
   MemStream.ReadComponent(Component);
 finally
   MemStream.Free;
   FileStream.Free;
 end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
SaveContainer(TreeView1,"c:\222.txt")
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
LoadContainer(TreeView1,"c:\222.txt");
end;

end.

при сохранении "встроенным" методом TreeView1.SaveToFile("c:\111.txt");
будет чтото вроде:
asdasdasd
ddddd
 aaaa
 dddd
asdasdasd


при сохранении методом SaveContainer(TreeView1,"c:\222.txt") будет примерно такое:
object TreeView1: TTreeView
 Left = 48
 Top = 24
 Width = 321
 Height = 329
 Indent = 19
 TabOrder = 0
 Items.Data = {
   02000000220000000000000000000000FFFFFFFFFFFFFFFF0000000001000000
   096173646173646173641E0000000000000000000000FFFFFFFFFFFFFFFF0000
   0000020000000564646464641D0000000000000000000000FFFFFFFFFFFFFFFF
   000000000000000004616161611D0000000000000000000000FFFFFFFFFFFFFF
   FF00000000000000000464646464220000000000000000000000FFFFFFFFFFFF
   FFFF000000000000000009617364617364617364}
end


если нужно сохранять объекты помещенные в Data, они должны быть предками TComponent и в них нужно перекрывать методы
procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override;
procedure SetParentComponent(Value: TComponent); override;

интересно - погуглите



Страницы: 1 вся ветка

Текущий архив: 2011.09.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
15-1307175573
Юрий Зотов
2011-06-04 12:19
2011.09.25
Очередной способ мошенничества?


15-1306787399
Юрий
2011-05-31 00:29
2011.09.25
С днем рождения ! 31 мая 2011 вторник


1-1267095254
EgorovAlex
2010-02-25 13:54
2011.09.25
Редирект сообщения MouseWheel


15-1307162500
boriskb
2011-06-04 08:41
2011.09.25
Не смог не поделиться


1-1265708544
LightGreen
2010-02-09 12:42
2011.09.25
Вызов inherited определённого базового класса