在命令显示组合框的下拉列表后,当鼠标移到窗体上时,如何确保鼠标指针出现?

How do I assure that mouse pointer appears when mouse moves over form after commanding the drop down for a combobox to show?

我有一个问题:

  1. 我有一个只有组合框的表单。
  2. 当第 3 项发生时,组合框有焦点并且鼠标没有悬停在窗体上。
  3. 我触发组合框的下拉列表以显示按键事件。

当下拉列表可见然后我将鼠标指针移到窗体上时,指针要么不可见,显示忙,要么显示调整大小图标但不会变回正常指针当超过表格时。

有什么方法可以确保当组合框的下拉列表显示时,当我将指针移到表单上时鼠标指针可见吗?

我试过:

我希望在显示下拉列表后能够显示鼠标指针,但它被隐藏了。感谢您的任何建议。

(注意:我遇到的这个问题 运行 并不是 Delphi 所独有的。我能够使用 Visual C# 2017 重现这个问题。无论哪种方式,如果有办法更正这个,很高兴知道)。

正如对问题的评论,该问题与 Delphi 无关。您可以在包含 OS 呈现的类似组合的对话框中观察到相同的行为。 "run" 对话框中的示例就是其中之一。

涉及单一环境,在 OnDropDown 事件处理程序中重新设置光标可解决问题。

procedure TForm1.ComboBox1DropDown(Sender: TObject);
begin
  winapi.windows.SetCursor(Screen.Cursors[Cursor]);
end;

最初我测试了上面的因为没有人在下拉后调用SetCursor。尽管似乎之前也没有人称呼它。所以我不知道原因或为什么上述修复有效。