我用TJVTreeView实现树的CheckBox功能,当一个节点Check时触发一个事件,但是我查了一下,这个控件好象没有提供OnChecked事件,那我把Check时触发的代码写在哪里呢。我现在是这样处理的,写在Onlick里。
procedure TfrmCzy.trvRightClick(Sender: TObject);
var fNode:TJVTreeNode;
begin
  inherited;
  fNode:=TJvTreeNode(trvRight.selected);
  if showDlg('确实要赋予'+fNode.Text+'的所有权限吗?','询问',2,suiInformation)=mrOK then
      showmessage('ok')
    else
      showmessage('cancel');
end;
这样带来一个问题,就是点击节点展开树时,也会出现提示框。最好是把这段代码写在类似OnChecked之类的事件里。请各位高手帮帮忙。

解决方案 »

  1.   

    为什么不在OnChange中写呢?—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  2.   

    要来OnClick中写也可以:
    procedure TfrmCzy.trvRightClick(Sender: TObject);
    var
      HitTests: THitTests;
      fNode:TJVTreeNode;
    begin
      with TJVTreeView(Sender) do
      with ScreenToClient(Mouse.CursorPos) do
        HitTests := GetHitTestInfoAt(X, Y);
      if htOnItem  in HitTests then
      begin
        //这里才表示点击节点而不是其他,在此处写你的代码
      end;
    end;—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  3.   

    一开始点击根节点前面的checkbox是不会触发onchange的。
      

  4.   

    To lxpbuaa(桂枝香在故国晚秋) ( )
    牛人啊!厉害呀!
    给分了!