【发布时间】:2018-11-29 09:03:46
【问题描述】:
我的表单上有一个TListView(它一直是焦点)和一个OnKeyDown 事件处理程序(它的KeyPreview 属性为真)。
playlist 是我的 TListView 组件 (Style = vsReport)。
void __fastcall Tmform::mformKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
if(Shift.Contains(ssCtrl)) // hotkeys with CTRL
{
switch(Key)
{
case vkF: findDoublesbtnClick(mform); break; // [FIND TWINS]
case vkD: dbsClick(mform); break; // [DELETE BAD SONGS]
case vkA: playlist->SelectAll(); break; // [CTRL + A]
case vkS: settingsClick(mform); break; // [SETTINGS]
}
}
else // just keys
{
switch(Key)
{
case vkReturn: if(playlist->SelCount) pl.refreshSong(); break; // [ENTER]
case vkDelete: af.deleteFiles(); break; // [DELETE]
case vkSpace:
case vkNumpad3: pl.playPauseResume(); break;
case vkSubtract: prevbtnClick(mform); break; // [PREVIOUS]
case vkAdd: nextbtnClick(mform); break; // [NEXT]
case vkC: counterClick(mform); break; // [LISTENINGS WIN]
}
}
为什么当我按下任意键(TListView 聚焦)时它会发出哔哔声?
【问题讨论】:
-
有人能解释一下,为什么我的问题被否决了吗?
-
因为您没有提供适当的详细信息。据我们所知,问题可能出在
FormKeyDown事件处理程序中的代码。这是我们看不到的。提供minimal reproducible example。 -
非常感谢。我会努力改正我的错误。
-
我认为是因为列表处理了
keydown事件(我猜默认方法是播放哔声),所以它没有被表单处理。所以我想你也需要在 listView 中捕获 keydown 并通过将其翻转到keydown方法来处理它。 -
已经有一段时间了,但我似乎记得您可以通过在处理程序中将 Key 值设置为零来抑制哔声。