![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте!
Стоит задача реализовать механизм сохранения для приложеньица. Что надо сохранить: дерево из TreeView, несколько StringList'ов. Сохраняется и читается вот такими процедурами: Код:
procedure SaveToFile(RootObject: TComponent; const FileName: TFileName);
var
FileStream: TFileStream;
MemStream: TMemoryStream;
begin
FileStream := TFileStream.Create(FileName, fmCreate);
MemStream := TMemoryStream.Create;
try
MemStream.WriteComponent(RootObject);
MemStream.Position := 0;
ObjectBinaryToText(MemStream, FileStream);
finally
MemStream.Free;
FileStream.Free;
end;
end;
procedure LoadFromFile(RootObject: TComponent; const FileName: TFileName);
var
FileStream: TFileStream;
MemStream: TMemoryStream;
begin
FileStream := TFileStream.Create(FileName, 0);
MemStream := TMemoryStream.Create;
try
ObjectTextToBinary(FileStream, MemStream);
MemStream.Position := 0;
MemStream.ReadComponent(RootObject);
finally
MemStream.Free;
FileStream.Free;
end;
end;Суть проблемы: такими процедурами я легко сохраняю и восстанавливаю TreeView отдельно, просто скармливая его этим функциям SaveToFile(TreeView1, 'saveTR.txt');. Если открыть полученный файл, то видно, что все недефолтовые свойства TreeView туда записались типа object TreeView1: TTreeView ... Но надо сохранять и мои StringList, соответсвенно я создаю свой класс (код ниже). Код:
ProjectData=class(TComponent)
private
//Tree:TTreeNodes; //другой вариант
Tree:TTreeView;
LMeasures:TStringList;
MeasuresCount:Integer;
public
constructor Create(ProjectData: TComponent); override;
destructor Destroy; override;
published
//property PartsTree : TTreeNodes read Tree write Tree; //Другой вариант
property PartsTree : TTreeView read Tree write Tree;
property Measures: TStringList read LMeasures write LMeasures;
property MCount:Integer read MeasuresCount write MeasuresCount;
end;Потом присваиваю значения и сохраняю: Код:
ProjectData:=TProjectData.Create(self);
ProjectData.PartsTree:=TreeView1;
ProjectData.MCount:=Form5.ListBox1.Items.Count;
for I := 0 to Form5.ListBox1.Items.Count - 1 do
ProjectData.Measures.Insert(I, Form5.ListBox1.Items[i]);
SaveToFile(ProjectData, 'save.txt');Код:
object TProjectData PartsTree = Form1.TreeView1 ... А вот если PartsTree присвоить тип TTreeNodes, то информация о структурое моего дерева PartsTree.NodeData=... сохраняется как надо, но читаться обратно она уже не хочет. Таким образом, либо как заставить сохраняться TreeView целиком, либо как заставить читаться TTreeNodes? Спасибо! |