Bonjour,

l'idée c'est de refaire ça (qui remonte à 20 ans en arrière avec un w2000, un Delphi7 et le composant DirectoryListBox (fourni avec D7 bien que remontant à Win 3.1) et qui fait ce que je veux, savoir, une jolie arborescence :
Nom : children-loadfont.png
Affichages : 183
Taille : 3,4 Ko

Mais comme avec le TShellTreeView, je m'y perds (c'est effroyable la quantité d'informations proposée), alors déjà j'ai commencé par voir si j'arrivais à quelque chose avec un simple TreeView (souvenir de tout un tas d'essais sous Windows et D7 il y a une quinzaine d'années) et ma foi, avec juste cette poignée de lignes de code, ça fait exactement ce qu"il me faut (TODO: rajouter les images, pour avoir un peu de charme) :
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
25
26
27
28
29
procedure TForm1.Button3Click(Sender: TObject);
const
  // simulation arborescence
  s = 'f:\4_2k\w2k\programmation\projets finis\loadfont\delphi\fonts\'; // 62
  DirSep = '\';
var
  t: string;
  i: integer;
  NodeText: string;
begin
  t := '';
  for i := 1 to length(s) do begin // récup des noms des dossiers de l'arbo
    NodeText := '';
    t := t + copy(s[i], 1);
    if s[i] = DirSep then begin
      NodeText := ExcludeTrailingPathDelimiter(t);// suppr du \ de fin
      //ShowMessage(NodeText); // ok, 'f:' et les autres, un par un
      aNode := TreeView1.Items.AddChild(aNode, NodeText); // du projet TreeView/tv_learning
      aNode.GetLastChild; // 2 lignes pour avoir l'arbo ouverte
      aNode.ExpandParents;
      t := '';
    end;       
  end;
end;
// sans oublier
    ...
  private
    { private declarations }
    aNode: TTreeNode;
Ce bout de code (enfin, juste les 3 lignes centrales qui commencent par aNode) vient de là mais dommage, le lien est mort...
Et il donne ça, c'est exactement ce que je veux. EDIT : c'est mieux avec des images, hein :
Nom : arbo-escalier.png
Affichages : 166
Taille : 9,6 Ko Nom : avec_images.png
Affichages : 164
Taille : 9,2 Ko
(suffit d'avoir une ImageList et de rajouter 2 lignes sous les 3 commençant par aNode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
aNode.ImageIndex    := 1; // Image du noeud
aNode.SelectedIndex := 0; // Image du noeud sélectionné
)
Mais comme je voudrais l'avoir avec un TShellTreeView dont il parait que c'est un dérivé du TTreeView, alors, n'écoutant que mon courage et n'ayant peur de rien, je prends la ligne active
Code : Sélectionner tout - Visualiser dans une fenêtre à part
aNode := TreeView1.Items.AddChild(aNode, NodeText);
et je la remplace par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
aNode := stv.Items.AddChild(aNode, NodeText); // 'stv' = ShellTreeView
Je compile, sans erreur, F9 et... hang ! Programme bloqué,
Je reprends la main, je recommence en pas à pas et je constate tristement que la ligne ci-dessus bloque tout au troisième passage, sans message, sans rien, juste tout bloqué...

Pour essayer d'y voir clair, j'ai tenté 2 essais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
//for i := 1 to length(s) do begin // original - ça bloque
//for i := 1 to 12 {length(s)} do begin // 3 premières entrées de la liste - ça bloque
  for i := 1 to 8  {length(s)} do begin // 2 premières entrées, ça passe
mais pas moyen d'ouvrir-fermer l'arbo, la construction en escalier ne s'est pas faite :
Nom : stv_kc.png
Affichages : 162
Taille : 10,1 Ko

En plus, la première entrée (le / sélectionné) n'est pas de moi.

Si quelqu'un a une idée, ça serait merveilleux.
Merci,

PS : et cette cochonnerie de ggl qui me fait perdre un temps dément à éliminer la quantité de pages qu'il me remonte SANS les mots-clé que je demande, ça, ça me laisse sans voix...