Delphi 11.3 DBLookupComboBox滚动问题, Delphi 11.3

bmvo0sr5  于 2023-06-22  发布在  其他
关注(0)|答案(1)|浏览(219)

我一直遇到DBLookupComboBox无法正常工作的问题。填充它并将其指向适当的表可以正常工作。选择一个项目并插入到适当的表中也可以正常工作。
但是,向下滚动DBLookupComboBox项列表根本不起作用。完全忽略鼠标滚轮。
我在另一篇文章中发现了下面的代码,它可以让滚动工作,但是滚动一次跳两个项目,完全跳过一个项目。

procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);

begin
if (DBLookupComboBox1.Focused() = true) then DBLookupComboBox1.Perform(WM_KEYDOWN, VK_DOWN, 0);
end;

procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin

if (DBLookupComboBox1.Focused() = true) then DBLookupComboBox1.Perform(WM_KEYDOWN, VK_UP, 0);
end;

组合框中大约有30个项目,所以点击滚动条上的向上/向下有点不起作用。
任何帮助非常感谢,非常感谢。

fzwojiic

fzwojiic1#

您应该添加“Handled:= True”。

procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
      MousePos: TPoint; var Handled: Boolean);
    begin
      if (DBLookupComboBox1.Focused() = true) then begin
        DBLookupComboBox1.Perform(WM_KEYDOWN, VK_DOWN, 0);
        Handled := True;
      end;
    end;

    procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
      MousePos: TPoint; var Handled: Boolean);
    begin
      if (DBLookupComboBox1.Focused() = true) then begin
        DBLookupComboBox1.Perform(WM_KEYDOWN, VK_UP, 0);
        Handled := True;
      end;
    end;

相关问题