怎样使LISTVIEW像DATAGRID那样可以分别编辑每一列的值?如:
头  name  age  sex
值  jack  20   m
    rose  18   f
    dinny 29   mLISTVIEW只能编辑第一列,怎样可以每一列呢?谢谢!

解决方案 »

  1.   

    当需要编辑的时候,弄个Edit放上去进行输入,完成后修改列值并隐藏Edit。
      

  2.   

    谢谢,那怎样将EDIT嵌入到LISTVIEW的ITEM中呢?
      

  3.   

    编辑列,除非第一列可以直接编辑,其他的不可以。你用ListView本来就是一个错误,要么用双击打开一个对话框来编辑这一行的其他列。要么就用上面的方法,Edit放置到ListView很简单,只要调用ListView的Insertcontrol就可以了,还需要设置Edit的Top和Left,让他在正确的位置上,创建这样的Edit的时候注意,Create的AOwner参数,如果是nil需要你手工的Destroy这个Edit,如果是其他的TwinControl的子类,那么在这个TwinControl Destroy的时候,它可以帮你Destroy它。还有一个办法,就是在设计的时候,直接放一个Edit在上面,把它的Visible设置为False,就是不可见,需要的时候就True,就是可见,同样需要从新定位Edit的位置。我觉得这里最困难的在于定位Edit,你需要知道鼠标在那个位置,就是点了那个不可编辑的列上面,需要你自己根据鼠标位置,和列宽,以及ListView的位置来判断,listView还有一个方法可以将鼠标的屏幕位置转换成像对它的位置,任何TwinControl的子类都有这个方法。我不知道OnmouseDown事件中提供的鼠标位置是相对Form的还是相对聚焦元件的,你可以自己试验一下。
      

  4.   

    我得到的MOUSE位置不精确的,怎么样得到精确的?我在窗体关闭时
    Edit1.free;
    为什么还是释放不了?