Hello, it's me again.

Je suis au bord du désespoir : j'ai besoin d'un TShellTreeView, à qui je demande bêtement de m'afficher les fichiers des dossiers, un truc tout simple -- enfin, je croyais...

Au début ça commence bien : je clique sur test1, il s'ouvre et je vois son contenu. Bien.
Je clique sur test2, ça referme test1 et ça m'affiche le contenu de test2, encore bien.
Je clique sur test3, ça referme test2 et ça m'affiche le contenu de test3, toujours bien.
Je clique sur test4, ça referme test3 et là, bim bam boum, au lieu de sélectionner le nom du dossier (comme les fois précédentes), ça sélectionne le premier fichier de sa liste...

Nom : bug_dossier_stv.gif
Affichages : 253
Taille : 11,5 Ko

Pourquoi ? Mais my God pourquoi ?

Il y a peut-être une blagounette dans le code ci-dessous, mais je n'arrive pas à la trouver, d'autant plus qu'en cliquant juste sur les triangles à gauche des noms des dossiers, ça a un comportement bizarre : des fois ça s'ouvre du 1er coup, des fois non.
Et j'ai mis ce bout de code car le comportement automatique ne fonctionne pas comme je le voudrais (pas de collapsing automatique, par ex.)
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
procedure TForm1.tvListMouseDown(Sender: TObject; Button: TMouseButton; // tvList c'est le TShellTreeView
  Shift: TShiftState; X, Y: Integer);
var
  aNode: TTreeNode;
begin 
  PreviousNode := CurrentNode;
  aNode := TTreeview(sender).GetNodeAt(X, Y);
  // il en manque mais ça n'a rien à voir
  CurrentNode  := aNode;
  if CurrentNode <> PreviousNode then begin
    tvList.BeginUpdate;
    if not CurrentNode.Expanded then begin
      CurrentNode.Selected := True;
      CurrentNode.Expand(False);
      if PreviousNode <> nil then
        if PreviousNode.Expanded then PreviousNode.Collapse(False);
    end;
    tvList.EndUpdate;
  end;
Testé avec la wonderful 1.8.2...

Ah, ça ne se voit pas sur ces copies d'écran réduites à l'essentiel, mais j'ai positionné les scrollbars à ssAutoBoth dans l'EDI et si j'en parle, c'est parce que je ne les vois jamais...

EDIT : j'ai enlevé "et peut-être" dans le tag du titre, le problème est présent également dans XP sp2...
Par contre, le ssAutoBoth des scrollbars du TShellTreeView a l'air d'y fonctionner correctement.
/EDIT