1 pièce(s) jointe(s)
[Linux et Windows] Problème de changement erroné de sélection dans TShellTreeView
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...
Pièce jointe 380800
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:
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