![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сохранение содержимого 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]Никак. Писать самому сохранение...