还是TREEVIEW问题,我苯死了。(50分)

  • 主题发起人 主题发起人 吴剑明
  • 开始时间 开始时间

吴剑明

Unregistered / Unconfirmed
GUEST, unregistred user!
我想:
单击节点的+号时,生成子树。
单击节点的TEXT,则在右边的LISTVIEW中显示。。。。
现在我在ONMOUSEDOWN中写代码,无论是点+号,还是点TEXT,都是干一种事。
如何把他们分开来处理?

 
ttree.onExpanded even
 
点+相当于OnExpanded事件
单击是OnClick事件
 
使用ObMousedown是不对的。
单击Node,可以使用Onchange或者Onchanging事件。
展开Node,可以使用OnExpand或者Onexpanding事件。
当然,如果非要用ONMOusedown,可以用GetNodeAt来判断光标所在位置的Node。
 
就是展开事件嘛
 
检查THitTests,下面是一个例子。
procedure TForm1.TreeMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
MyHitTest: THitTests;
begin
case Button of
mbLeft: begin
MyHitTest := Tree.GetHitTestInfoAt(X, Y);
if ((htOnItem in MyHitTest) or (htOnLabel in MyHitTest)) then
begin
      ……
end
end;
mbRight: begin
     ……
end;
end;
end;
 
现在是这样的:
程序启动后,TREEVIEW自动会选一个ITEM的TEXT。
下面的判断是永远成立的。
MyHitTest := Tree.GetHitTestInfoAt(X, Y);
if ((htOnItem in MyHitTest) or (htOnLabel in MyHitTest)) then
begin
      ……
end
所以还是没区分加号和TEXT。 :(
 
有人吗?
 
faint,去看看windows事件
 
解决了。:)
 
多人接受答案了。
 
后退
顶部