0

我在这方面发现了很多东西,但它们要么是针对第三方控件、不同的特定情况,要么是针对完全不同的语言。我需要的应该相当简单。

我有TDBGrid一个TComboBox放置在特定单元格上的。当用户在这个网格中滚动时,组合框会移动到相应的单元格。用户还可以更改此组合框的值以更新数据库。

然而,当使用鼠标滚轮滚动时,如果鼠标指针恰好在这个组合框上,它最终会改变组合框的值,而不是滚动网格。

如何抑制组合框中的滚动?

4

1 回答 1

0

我正在回答这种 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;
于 2022-01-27T21:46:29.613 回答