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

Delphi Discussion :

[D7] ShellTreeView ne se met pas à jour


Sujet :

Delphi

  1. #1
    Membre actif

    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2009
    Messages : 128
    Points : 203
    Points
    203
    Par défaut [D7] ShellTreeView ne se met pas à jour
    Bonjour à tous,

    Dans mon petit programme, je permets à un éventuel utilisateur d'ouvrir des répertoires afin d'y sélectionner des fichiers. Pour cela, je me sers de l'outil TShellTreeView qui figure à la rubrique 'Exemples' de Delphi 7 Perso. Cela marche à merveille, mais dans une autre partie du programme, des répertoires peuvent être créés ou détruits, et pendant cela ou au retour, le ShellTreeView ne se met pas à jour.

    Le problème est que ces très beaux exemples de D7 ne sont pas documentés par l'aide Delphi. J'ai cherché ici dans la FAQ, je n'ai rien trouvé. Alors si quelqu'un parmi vous connaissait la function ou la propriété qu'il faut renseigner, je serais satisfait. J'ai mis AutoRefresh à true et j'ai envoyé la commande Udape, tout cela en vain. Est-ce encore une histoire d'événement ?

    Bref un petit tuyau me serait agréable.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    un bail que je n'avais entendu parler de ShellTreeView !
    du coup, j'ai lancé mon vieux D7 histoire de me remémorer.
    Premier questionnement la propriété Autorefresh (false par défaut) est-elle à True ?
    Si oui alors après la suppression d'un fichier/répertoire faire un ShellTreeview1.Refresh(nil); ou, mieux, si possible, récupérer le node parent de l'élément qui sera supprimé, faire la suppression puis ShellTreeView1.Refresh(lenodeparent);
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre actif

    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2009
    Messages : 128
    Points : 203
    Points
    203
    Par défaut
    Merci beaucoup SergioMaster

    Que la propriété autorefresh soit à true ou à false, ça ne change rien... Quant à la commande ShellTreeView.refresh(nil) , elle provoque une belle V.A. dans tous les cas.
    Je crois que je vais changer mon fusil d'épaule... C'est marrant, mon dernier message demandait comment synchroniser deux TListBox, et là, il s'agit en fait de synchroniser deux TShellTreeView. Que je suis compliqué !

  4. #4
    Membre actif

    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2009
    Messages : 128
    Points : 203
    Points
    203
    Par défaut
    Bon alors l'idée était la bonne, mais la commande était un peu erronnée. Refresh fait bien le boulot, mais il faut lui indiquer la TreeNode concernée. Or là, comme il s'agit de refresher toute l'arborescence, il faut lui indiquer le départ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    with ShellTreeView do Refresh(Items[0]);
    Toute l'arborescence , même bien ouverte est remise à jour. Et voilà

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Au temps pour moi , la syntaxe de ShellTreeView.Refresh(Node : TTreeNode) laissait à penser que c'était un node d'un treeview "classique" d'où ma proposition de nil.
    Le fait d'indiquer Refresh(Items[0]) laisse à penser que c'est plus un élément, comme quoi, le nom d'un paramètre est important
    Cela étant, je n'ai pas fouillé dans les sources pour retrouver comment est défini Items, un tableau ou une liste de ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre actif

    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2009
    Messages : 128
    Points : 203
    Points
    203
    Par défaut
    En tout cas merci beaucoup car sans ton idée, j'en serais encore à me demander comment faire.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/10/2006, 08h24
  2. Combobox.text qui ne se met pas à jour
    Par davels dans le forum Delphi
    Réponses: 6
    Dernier message: 21/08/2006, 10h29
  3. [AJAX] XMLHTTPREQUEST ne se met pas à jour :-/
    Par franckarts dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/08/2006, 18h11
  4. Update Récalcitrante !! Ne met pas à jour !
    Par samlepiratepaddy dans le forum Access
    Réponses: 14
    Dernier message: 28/10/2005, 09h31
  5. un update qui ne met pas à jour
    Par dor_boucle dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/10/2005, 09h31

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