Mattias Gaertner kirjoitti sunnuntai, 24. huhtikuuta 2011 02:19:03:
Show quoted text 8 lines
> Is it OK to implement a new event OnItemClick or OnNodeClick for
> TTreeView? It would be triggered only a node is clicked, not the '+' or
> background.
Often the background should be included in the trigger area.
And sometimes - as for example in the find in files dialog - you need
to distinguish between single and multi click.
All this can be easily done with OnMouseDown/Up.
Ok, it is _relatively_ easy but still not very intuitive. I guess 99% of code is only interested in clicked Nodes. Looking at your fix to TSearchResultsView, most of TreeViewMouseUp code is only for checking if a Node is left-clicked:
var
TV: TCustomTreeView;
Node: TTreeNode;
begin
if ButtonmbLeft then exit;
TV:=Sender as TCustomTreeView;
Node:=TV.GetNodeAt(X,Y);
if Node=nil then exit;
if x<Node.DisplayTextLeft then exit;
...and then dealing with single/double click:
if ([ssDouble,ssTriple,ssQuad]*Shift=[])
and EnvironmentOptions.MsgViewDblClickJumps then exit;
In this case both single and double clicks need to be handled but typically only one of them.
So, I still think it is a good idea to have events OnNodeClicked and OnNodeDoubleClicked
with "Node: TTreeNode" parameter.
Juha