delphi listview 右键菜单
listview为报表形式,在mousedown中我加了右键菜单,想实现上下记录交换。右键菜单有四条:移到最上,上移一行……。右击时,根据记录位置自动设置菜单里的enable,但发现菜单总是晚一步
追问:我的想法是这样的,在ListView中右击第一行时,菜单中的“移到最上”和“上移一行”的Enable应为False;
在ListView的MosesDown中:
if (Button=mbRight) and (ListView1.ItemIndex>-1) then
begin
ListView1.PopupMenu :=nil;
if ListView1.ItemIndex =0 then
PopupMenu1.Items[0].Enabled :=False
else
PopupMenu1.Items[0].Enabled :=True;
ListView1.PopupMenu :=PopupMenu1;
end;
运行后,结果是这样的,第一右击第一行,没反应,第二次点击任何一行,菜单的第一项均为灰,
菜单晚一步的意思就是你想要的结果总是在下一次右击时出现本应这次出现的结果。