我在对TListView操作上,对单击TListView时候发现好象每次执行都是两次OnSelectItem,第一次极可能是lvInfo.Selected = nil第二次就是lvINfo.Selectd<>nil不知道为什么?请教各位,我有用处

解决方案 »

  1.   

    ListView第一次获得焦点时,只执行一次OnSelectItem,Selected 为你选中的项,若已经获得焦点,再选中其他项时会执行两次OnSelectItem,第一次为以前先遣的项,第二为后来选中的项
      

  2.   

    若后来选中中的项和已经选中的项相同则不执行OnSelectItem
      

  3.   

    针对你说的第二中情况:你说第一次为以前的项,我奇怪我测试的时候第一次为nil第二次为后来选中的项
      

  4.   

    既然如此,在OnSelectItem里面
    if Selected = nil then Exit;
      

  5.   

    OnSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
    的意思是在选某一项的时候而在选某一项的时候就会有两个操作,一个是选中的项变为未选中状态,一个是未选中的项变成选中状态,而这两个变化过程都会触发该事件事件的参数:
    Sender:事件的触发者,即ListView
    Item:触发事件的相关项
    Selected:相关项的即将变化的状态(例如如果是选中项变为未选中状态,则Selected为False)