Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сохранение содержимого TreeView [Delphi, Windows]


ILPU ©   (2008-03-07 08:24:00) 

Как сохранить содержимое TreeView в файл и
обратно загрузить?


ILPU   (2008-03-12 08:58:00) [1]

Большое спасибо!


Дмитрий К   (2008-03-11 17:52:00) [2]

Цитата:

Slay  (24.01.05 11:28)  [8]

Вот пример сохранения и загрузки данных TreeView. У меня работает.

//Сохранение TreeView в файл (Base.dat)

function Save2File(Sender:TKOLTreeView): Boolean;
var
F: HFile;

procedure item2file(ind:cardinal);
var
len:cardinal;
path: String;
begin
while ind<>0 do
begin
 path := sender.TVItemPath(ind,'\');
 len :=length(path) ;
 FileWrite( F, len,4);
 FileWrite( F, path[1], len );
 if Sender.TVItemChild[ind]<>0 then item2file(Sender.TVItemChild[ind]);
 ind := sender.TVItemNext[ind];
end;
end;

begin
result := false;
F := FileCreate('Base.dat', ofOpenWrite or ofCreateAlways);// or ofShareExclusive ofShareDenyRead or ofShareDenyWrite
if F = INVALID_HANDLE_VALUE then Exit;

item2file(Sender.TVRoot);

FileClose( F );
result := true;
end;

//Загрузка из файла(Base.dat) в TreeView

function LoadFromFile(Sender:TKOLTreeView): Boolean;
var
 len,ind : cardinal;
 F : HFile;
 Path: String;

function IndPath:cardinal;
var
 tmpPath,tmpText: String;
begin
tmpPath := ExtractFilePath(Path);
result := Sender.TVRoot;
tmpText := parse(tmpPath,'\');
while result<>0 do
if sender.TVItemText[result] = tmpText then
begin
 if length(tmpPath)=0 then exit;
 result:= sender.TVItemChild[result];
 tmpText := parse(tmpPath,'\');
end else result:= sender.TVItemNext[result];
end;

begin
result := false;
F := FileCreate('Base.dat', ofOpenRead or ofOpenExisting);//  or ofShareExclusive
if F = INVALID_HANDLE_VALUE then Exit;
Sender.BeginUpdate;
while FileRead(F,len,4)<>c0 do
begin
 SetLength(Path,len);
 FileRead(F,Path[1],len);
 ind := IndPath;
 Sender.TVInsert(ind,TVI_SORT,ExtractFileName(path))
end;
Sender.EndUpdate;
FileClose( F );
result := true;
end;

Конец цитаты.


ILPU   (2008-03-11 17:27:00) [3]

Можно использовать For i := 1 to MYTreeView.Count do begin а вот как дальше?
Идеи есть у кого?


ILPU   (2008-03-11 17:27:00) [4]

Можно использовать For i := 1 to MYTreeView.Count do begin а вот как дальше?
Идеи есть у кого?


Dimaxx   (2008-03-07 10:35:00) [5]

Никак. Писать самому сохранение...


Наверх

Титульная страница Поиск, карта сайта Написать письмо