比如右键重命名,把选中的节点或者listview中的选项设置为可写状态

解决方案 »

  1.   

    用Node.Data来表示是不是只读,用OnEditing来控制是不是让用户编辑,如下:
    procedure TForm1.TreeView1Editing(Sender: TObject; Node: TTreeNode;
      var AllowEdit: Boolean);
    begin
      AllowEdit :=  Node.Data = nil;
    end;procedure TForm1.ListView1Editing(Sender: TObject; Item: TListItem;
      var AllowEdit: Boolean);
    begin
      AllowEdit :=  Item.Data = nil;
    end;procedure TForm1.ppmiReadOnlyClick(Sender: TObject);
    begin
      if TreeView1.Selected <> nil then
      begin
        //如果Node.Data=nil就是只读,否则可写,两个状态互换
        if TreeView1.Selected.Data = nil then
          TreeView1.Selected.Data := TObject(1)
        else
          TreeView1.Selected.Data := nil;
      end;
    end;ListView一样的处理
      

  2.   

    有什么不懂呢?
    不就一个OnEditing事件嘛?!它返回一个Node和一个AllowEdit用来分别表示:当前用户正要编辑还没有编辑的节点,AllowEdit用来
    控制是不是让用户编辑这个节点的文本内容。
    Node.Data就是Node的一个指针成员。如果是nil表示节点内容可以编辑,如果不是nil表示这个节点不可编辑。