在OnMouseDown或OnMouseUp中写都可以的: procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button=mbRight then if ListView1.Selected <>nil then { TListItem上响应鼠标右键按下的信息 } else { TListItem上空白处响应鼠标右键按下的信息 }end; ————————————————————————————————— 中国鹰派 杀光小日本,拒绝韩日货!
在ListItem上按下鼠标右键会引发OnMouseDown事件吗?
同意: xzhifei(飞) 也可以: procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if ssRight in shift then begin if Listview1.GetItemAt(x,y)<>nil then showmessage('OnItem') else showmessage('OnOthers'); end; end; 可以引发,右键也是点击啊~
{
TListItem上响应鼠标右键按下的信息
}
else
{
TListItem上空白处响应鼠标右键按下的信息
}
我试过在OnMouseUp事件中写,但如果在TListItem上单击鼠标右键,并不会引发该事件,反而鼠标左键单击时会引发该事件,我怀疑TListItem没把鼠标右键通知消息发给它的父控件,只发送了鼠标左键通知消息。
procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbRight then
if ListView1.Selected <>nil then
{
TListItem上响应鼠标右键按下的信息
}
else
{
TListItem上空白处响应鼠标右键按下的信息
}end;
—————————————————————————————————
中国鹰派
杀光小日本,拒绝韩日货!
也可以:
procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssRight in shift then
begin
if Listview1.GetItemAt(x,y)<>nil then
showmessage('OnItem')
else
showmessage('OnOthers');
end;
end;
可以引发,右键也是点击啊~
另外我发现Boland的Delphi和C++ Builder在win2000的NTFS下会出问题,无法保存文件,提示文件名中包含非法字符,我在另一部没有格式化成NTFS的win2000下就没有这个问题。