IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Comment sauver un TTreeView et ses nodes data ?


Sujet :

Composants VCL Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Comment sauver un TTreeView et ses nodes data ?
    comment puis-je sauvgarder un treeview et ses nodes data dans un fichier text , et lorsque j'ouvre l'App le treeview en question va etre auto-rempli , lorsque je clique sur chaque node son data est affiché dans un memo.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    Pesonellment j'implementerais une sauvegarde et une implementaion en XML.
    Le XMl est un fichier text sous un format particulier, donc il devrait vous convenir.
    Les fichiers XMl sont en passe de devenir un standard de fait.
    Delphi contient déja tous les outils pour suvegarder/recharger le fichier.
    Par contre, la sauvegarde n'est pas automatique. Vous devez imlementer les procédure .

    Autre méthode beaucoup plus simple essayer les méthodes SaveToFile ou load fromFile de TTReeView.
    Je n'ai jamais utiliser, mais il n'y a pas de raison que cela ne fonctionne pas.
    Extrement simple.
    Natif du Treeview , donc pas de bug à prioris et implementation extrement rapide.
    Par contre si vous faite une suvegarde général de tout les paramètre de votre application, vous devez réimplementer un code différent de la sauvegarde du treeView simple.

    En faite tout dépend ce que vous ferez ensuite avec votre code, mais la seconde solution est vraiement tres simple.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    TreeView.SaveToFile
    TreeView.LoadFromFile

    Pour le reste il suffit d'utiliser l'évenement OnChange ?, recupérer le texte du node et le mettre dans un memo

  4. #4
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Pour le reste il suffit d'utiliser l'évenement OnChange ?, recupérer le texte du node et le mettre dans un memo
    c'est ça le problem j'ai aucaun problem avec l'evenement on change ou avec le sauvgarde de tout le treeview mais le problem c'est que je veux bien sauvgarder le treeview avec ses data de node pas seulemet le treeview donc je veux :
    savgarder le treevierw + le text du node dans un ficher text

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Dans ce cas il faut implementer la sauvegarde à la main (cas XML).

    Il vous faut non seulement la sauvegarde du treeview, mais aussi la sauvegarde de tous les objet suceptible d'ètre dans les data.

  6. #6
    Candidat au Club
    Inscrit en
    Mars 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    si c'est le cas pouvez vous me donner un exmple et comment je peux l'utilser merçi

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Lancement de la sauvegarde.
    (XmlDoc est un TXmlDocument);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
         Xmldoc.Active := False;
          XMLDoc.FileName := '';
          XMLDoc.Active := True;
          XMLDoc.Version  := '1.0';
          ColorList.SaveToXmlDoc(XmlDoc, Nil);
          Xmldoc.SaveToFile(SaveDialog.FileName);
    Procedure De sauvegarde (SaveToXmlDoc)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    procedure SaveToXmlDoc(Xmldoc: TXmlDocument; Root: IXMLNode);
    begin
     
      if Root = nil then begin
        FirstNode                  :=               XMLDoc.CreateNode(CONST_XML_COLORLIST, ntElement);
        XMLDoc.DocumentElement :=   Firstnode;
      end else begin
        FirstNode := Root.AddChild(CONST_XML_COLORLIST);
      end;
    {
    Si je commence mas sauvegarde içi (Root = nil)
      Je cree le 1° noeud du XMLDoc (Document element)
    Si je continue une sauvegarde (Root <> nil)
      Mon 1° noeud sera un enfant de root
    }
     
      For AIndex := 0 to TReeView.Items.count - 1 do begin
        if  TReeView.Items[AIndex].Level = 0 then 
          saveNode(TReeView.Items[AIndex], Firstnode); 
      end;
    end;
    Sauvegarde d'un noeud
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    procedure saveNode(TreeNode:Treenode; ParentXml: IXMlNode); 
    var
      Newnode, DataNode: IXMLNOde;
    AIndex: Integer;
    begin
     
    Créer le noeud XML correspondant au noeud du treeview
      NewNode := PArentXml.AddChild(CONST_XML_COLORLIST_NODE);
     
     
    // Sauvegarder toute les propriété util du noeud Y Compris les informations util sur les objets dans les data
    // Example limité au texte et a l'image index
      DataNode := NewNode.Addchild(CONST_XML_COLORLIST_NODE_NAME);
      DataNode.NodeValue := TReeNode.TExt;
    NewNode.Addchild(CONST_XML_COLORLIST_NODE_IMAGEINDEX);
      DataNode.NodeValue := IntToStr(TReeNode.ImageIndex);
     
     
    //Sauvegarder touts les enfant du noeud
    for AIndex := 0 To TreeNode.Count - 1 do begin
      saveNode(TReeNode.ITems[AIndex], NewNode);
    end;
    end;
    NOTA LEs constantes telle que CONST_XML_COLORLIST sont les noms 'étiquettes' identifant les noeud de l'arborescense du XML

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment sauver un RichEdit avec ses attributs ?
    Par Nicolas Coolman dans le forum Débuter
    Réponses: 3
    Dernier message: 23/03/2009, 17h41
  2. Comment lancer Eclipse en incluant ses plugins
    Par eclie dans le forum Eclipse Platform
    Réponses: 8
    Dernier message: 19/02/2009, 08h45
  3. [Requete] Comment ignorer des lignes avec un LOAD DATA
    Par frangin2003 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2005, 12h14
  4. Comment copier un dossier et ses sous dossiers ?
    Par touhami dans le forum Langage
    Réponses: 5
    Dernier message: 30/12/2004, 16h10
  5. Comment sauver plusieurs String ?
    Par Speed41 dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2004, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo