我在这方面发现了很多东西,但它们要么是针对第三方控件、不同的特定情况,要么是针对完全不同的语言。我需要的应该相当简单。
我有TDBGrid
一个TComboBox
放置在特定单元格上的。当用户在这个网格中滚动时,组合框会移动到相应的单元格。用户还可以更改此组合框的值以更新数据库。
然而,当使用鼠标滚轮滚动时,如果鼠标指针恰好在这个组合框上,它最终会改变组合框的值,而不是滚动网格。
如何抑制组合框中的滚动?
我在这方面发现了很多东西,但它们要么是针对第三方控件、不同的特定情况,要么是针对完全不同的语言。我需要的应该相当简单。
我有TDBGrid
一个TComboBox
放置在特定单元格上的。当用户在这个网格中滚动时,组合框会移动到相应的单元格。用户还可以更改此组合框的值以更新数据库。
然而,当使用鼠标滚轮滚动时,如果鼠标指针恰好在这个组合框上,它最终会改变组合框的值,而不是滚动网格。
如何抑制组合框中的滚动?
我正在回答这种 QA 风格,因为我自己找到了一个在各种论坛上找不到的简单解决方案。
最简单的方法是向 中添加OnKeyDown
事件处理程序TComboBox
,并添加以下内容:
procedure TfrmMain.cboStatusKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key in [VK_UP, VK_DOWN] then
Key:= 0;
end;
请记住,这也会阻止键盘向上/向下事件。如果您还希望阻止键盘左/右事件,那么您也可以这样做:
procedure TfrmMain.cboStatusKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key in [VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT] then
Key:= 0;
end;