在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;
答案 0 :(得分:2)
TListView有一个MultiSelect属性,在Object Inspector中检查它,然后你可以用鼠标拖动选择多个项目,你不需要自己编写代码。
答案 1 :(得分:0)
首先,GetAsyncKeyState
在单词的最高位返回“向下”状态,因此您应该编写类似GetAsyncKeyState(VK_BUTTON) and $8000 <> 0
的内容。
其次,使用GetAsyncKeyState
鼠标按钮不是一件好事,因为它检查物理按钮(如果用户是左撇子并重新映射按钮,他将会因为代码需要鼠标左键而感到困惑被压)。更好的方法是记住OnMouseDown
事件中按下的鼠标按钮,并在OnMouseUp
事件中更新/重置它们。