选择Listitems拖动不起作用

时间:2013-06-02 16:43:55

标签: delphi listview mouse

MouseMove事件中,如果鼠标单击拖动它,我需要在列表视图中选择项目。但是我的代码不起作用。当我单击并拖动第一个项目时,我单击被选中。

MouseMove事件中:

//If left mouse button is depressed
if(GetAsyncKeyState(VK_LBUTTON) = 1) then
  begin
    LListItem := NestingResultsListView.GetItemAt(x,y);

    //If the item is not selected, select it.
    if not LListItem.Selected then
    begin
      LListItem.Selected := true;
    end;
  end;

2 个答案:

答案 0 :(得分:2)

TListView有一个MultiSelect属性,在Object Inspector中检查它,然后你可以用鼠标拖动选择多个项目,你不需要自己编写代码。

答案 1 :(得分:0)

首先,GetAsyncKeyState在单词的最高位返回“向下”状态,因此您应该编写类似GetAsyncKeyState(VK_BUTTON) and $8000 <> 0的内容。

其次,使用GetAsyncKeyState鼠标按钮不是一件好事,因为它检查物理按钮(如果用户是左撇子并重新映射按钮,他将会因为代码需要鼠标左键而感到困惑被压)。更好的方法是记住OnMouseDown事件中按下的鼠标按钮,并在OnMouseUp事件中更新/重置它们。