Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.09.25;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
2-1306865108
armstrong
2011-05-31 22:05
2011.09.25
уникальные данные железа


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


15-1306920650
Дмитрий С
2011-06-01 13:30
2011.09.25
eval в 4ом FireFox, баг?


1-1267021784
nokla user
2010-02-24 17:29
2011.09.25
Окно копирования windows


15-1307175573
Юрий Зотов
2011-06-04 12:19
2011.09.25
Очередной способ мошенничества?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский