Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#179

Re: himXML (gesprochen himix ML)

  Alt 28. Okt 2009, 15:46
Hab hier mal 'nen noch ungetesteten Code zum Speichern und Laden eines TTreeView.

Gespeichert wird natürlich der .Text und die ganzen Subnodes ... also die ganze Baum-Struktur des Trees
und beim Rest kann man entschieden werden, was man speichern/laden will.
Da wären die ganzen Bildindize .ImageIndex, .SelectedIndex, .StateIndex, .ExpandedImageIndex
und .OverlayIndex, außerdem .Enabled und die Zustände .Selected, .Focused und .Expanded,
für jeden einzelnen Node.


Ein TVirtualStringTree wird auch bald folgen, dort wird .Data dann ebenso über einen Callback gespeichert und geladen.
Delphi-Quellcode:
Type TSTVProc = Procedure(Node: TXMLNode; TVNode: TTreeNode);
  TSTVSavedData = Set of (ssImageIndex, ssSelectedIndex, ssStateIndex, ssExpandedIndex,
                    ssOverlayIndex, ssEnabled, ssSelected, ssFocused, ssExpanded, ssData);

Const ssDefault = [ssImageIndex..ssSelected, ssExpanded];

Procedure SerializeTreeView(Node: TXMLNode; TreeView: TTreeView;
  Save: TSTVSavedData = ssDefault; DataProc: TSTVProc = nil);

Procedure DeserializeTreeView(Node: TXMLNode; TreeView: TTreeView;
  Load: TSTVSavedData = ssDefault; DataProc: TSTVProc = nil);
benutzen
Delphi-Quellcode:
Var XML: TXMLFile;
  Node: TXMLNode;

// speichern
XML := TXMLFile.Create;
Node := XML.AddNode('MyTreeView');
SerializeTreeView(Node, TreeView1);
XML.SaveToFile('file.xml');
XML.Free;

// laden
XML := TXMLFile.Create;
XML.LoadFromFile('file.xml');
Node := XML.Node['MyTreeView'];
DeserializeTreeView(Node, TreeView1);
XML.Free;
Dieser und ähnliche Codes werden allerdings wohl nie direkt im Projekt enthalten sein, da sie einfach zu speziell sind,
aber es ist eine kleine Abteilung auf der zukünftigen Webseite vorgesehn.



[edit]
der ganze Code kommt gleich wieder ... dann als Anhang in 'ner eigenen Unit
so, da isser wieder

[add]
nun auch getestet, etwas geändert und mit Beispiel, siehe Bild
Miniaturansicht angehängter Grafiken
unbenannt_533.jpg  
Angehängte Dateien
Dateityp: pas hser_treeview_103.pas (5,7 KB, 3x aufgerufen)
$2B or not $2B
  Mit Zitat antworten Zitat