onjour,

je bricole un TTreeView avec l'affichage pour les items de g à dr du OnButton, du OnStateIcon, du OnIcon et du OnItem et tout est mignon.

Nom : treeview4fonts-v2.png
Affichages : 124
Taille : 17,6 Ko

Mais il y a un problème avec le OnButton, qui devrait m'afficher un ShowMessage et ne le fait pas, alors que les 3 autres options réagissent bien.

En gros j'ai ça comme code :
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
procedure TForm1.tvMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  HitTests: THitTests;
  aNode: TTreeNode;
begin
  if tv.Selected = nil then tv.Items[0].Selected := True;
  HitTests := tv.GetHitTestInfoAt(X, Y);
  with tv.ScreenToClient(Mouse.CursorPos) do aNode := tv.GetNodeAt(X, Y);
 
  if aNode = nil then begin {ShowMessage('pâté avec le node...');} Exit;end;
 
  if (htOnButton in HitTests) then begin ShowMessage('tv2MouseDown2 '+aNode.Text); exit; end; // KC
  if (htOnStateIcon in HitTests) then begin ToggleTreeViewCheckBoxes(aNode); exit; end; // ok
  if (htOnIcon in HitTests)
  or (htOnItem in HitTests) then begin ShowMessage('tv2MouseDown1 '+aNode.Text); exit; end; // ok
end;
Ce qui se passe, de droite à gauche :
un clic sur le texte (OnItem) ou l'image (OnIcon) --> ShowMessage du aNode.Text, ràs ;
un clic sur la StateIcon affiche/cache la case-à-cocher, ràs ;
un clic sur le bouton triangulaire rouge --> tout ce que je vois, c'est que le texte de l'item[0] tout en haut du treeview passe en sélectionné du noir au blanc et une fois blanc il y reste ; cependant, le triangle rouge bascule, mais le ShowMessage ne se montre pas...

Pourquoi ? Comment le faire apparaitre ?
Merci !