这个问题我也遇到过解决方案 在ListView的OnMouseMove事件中添加代码 procedure TForm1.ListView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var Item: TListItem; begin Item:= ListView1.GetItemAt(x, y); If Item.ImageIndex = 0 then begin end; if Item.ImageIndex = 1 then begin end; end;
楼上说的方法也行,不过那样会消耗额外的性能,因为你鼠标移上去就要变了 建议在 ListView的OnContextPopup事件中写代码 比如有一个弹出菜单里面有三个菜单项目,1,2,3我要在ListView的ItemIndex中为0时,显示1,为1时显示2 也就是说显示的菜单和ItemIndex的值对应。 代码如下: procedure TForm1.ListView1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean); procedure SetMenuItemVisible(index: integer); var i: integer; begin for i:= 0 to PopUpMenu1.Items.Count - 1 do begin if PopupMenu1.Items.Count < i then exit; if i <> index then PopUpMenu1.Items[i].Visible := false else PopUpMenu1.Items[i].Visible := true end; end; begin SetMenuItemVisible(ListView1.ItemIndex); end;
在ListView的OnMouseMove事件中添加代码
procedure TForm1.ListView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
Item: TListItem;
begin
Item:= ListView1.GetItemAt(x, y);
If Item.ImageIndex = 0 then
begin end;
if Item.ImageIndex = 1 then
begin end;
end;
建议在 ListView的OnContextPopup事件中写代码
比如有一个弹出菜单里面有三个菜单项目,1,2,3我要在ListView的ItemIndex中为0时,显示1,为1时显示2
也就是说显示的菜单和ItemIndex的值对应。
代码如下:
procedure TForm1.ListView1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
procedure SetMenuItemVisible(index: integer);
var
i: integer;
begin
for i:= 0 to PopUpMenu1.Items.Count - 1 do
begin
if PopupMenu1.Items.Count < i then exit;
if i <> index then
PopUpMenu1.Items[i].Visible := false
else
PopUpMenu1.Items[i].Visible := true
end;
end;
begin
SetMenuItemVisible(ListView1.ItemIndex);
end;