在命令显示组合框的下拉列表后,当鼠标移到窗体上时,如何确保鼠标指针出现?
How do I assure that mouse pointer appears when mouse moves over form after commanding the drop down for a combobox to show?
我有一个问题:
- 我有一个只有组合框的表单。
- 当第 3 项发生时,组合框有焦点并且鼠标没有悬停在窗体上。
- 我触发组合框的下拉列表以显示按键事件。
当下拉列表可见然后我将鼠标指针移到窗体上时,指针要么不可见,显示忙,要么显示调整大小图标但不会变回正常指针当超过表格时。
有什么方法可以确保当组合框的下拉列表显示时,当我将指针移到表单上时鼠标指针可见吗?
我试过:
Applicaiton.ProcessMessages
显示下拉列表后。
- 显示下拉列表后将焦点切换到组合框所在的窗体。
调用下拉显示后添加Key := #0;
。
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
SendMessage(ComboBox1.Handle, CB_SHOWDROPDOWN, Integer(True), 0);
Key := #0;
end;
尝试使用计时器触发按键事件中的下拉菜单。
- 在命令显示下拉菜单后尝试使用 "SetCursor"。
- 尝试使用“.DroppedDown”,但未发现与 "SendMessage" 的结果有任何差异。
我希望在显示下拉列表后能够显示鼠标指针,但它被隐藏了。感谢您的任何建议。
(注意:我遇到的这个问题 运行 并不是 Delphi 所独有的。我能够使用 Visual C# 2017 重现这个问题。无论哪种方式,如果有办法更正这个,很高兴知道)。
正如对问题的评论,该问题与 Delphi 无关。您可以在包含 OS 呈现的类似组合的对话框中观察到相同的行为。 "run" 对话框中的示例就是其中之一。
涉及单一环境,在 OnDropDown
事件处理程序中重新设置光标可解决问题。
procedure TForm1.ComboBox1DropDown(Sender: TObject);
begin
winapi.windows.SetCursor(Screen.Cursors[Cursor]);
end;
最初我测试了上面的因为没有人在下拉后调用SetCursor
。尽管似乎之前也没有人称呼它。所以我不知道原因或为什么上述修复有效。
我有一个问题:
- 我有一个只有组合框的表单。
- 当第 3 项发生时,组合框有焦点并且鼠标没有悬停在窗体上。
- 我触发组合框的下拉列表以显示按键事件。
当下拉列表可见然后我将鼠标指针移到窗体上时,指针要么不可见,显示忙,要么显示调整大小图标但不会变回正常指针当超过表格时。
有什么方法可以确保当组合框的下拉列表显示时,当我将指针移到表单上时鼠标指针可见吗?
我试过:
Applicaiton.ProcessMessages
显示下拉列表后。- 显示下拉列表后将焦点切换到组合框所在的窗体。
调用下拉显示后添加
Key := #0;
。procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char); begin SendMessage(ComboBox1.Handle, CB_SHOWDROPDOWN, Integer(True), 0); Key := #0; end;
尝试使用计时器触发按键事件中的下拉菜单。
- 在命令显示下拉菜单后尝试使用 "SetCursor"。
- 尝试使用“.DroppedDown”,但未发现与 "SendMessage" 的结果有任何差异。
我希望在显示下拉列表后能够显示鼠标指针,但它被隐藏了。感谢您的任何建议。
(注意:我遇到的这个问题 运行 并不是 Delphi 所独有的。我能够使用 Visual C# 2017 重现这个问题。无论哪种方式,如果有办法更正这个,很高兴知道)。
正如对问题的评论,该问题与 Delphi 无关。您可以在包含 OS 呈现的类似组合的对话框中观察到相同的行为。 "run" 对话框中的示例就是其中之一。
涉及单一环境,在 OnDropDown
事件处理程序中重新设置光标可解决问题。
procedure TForm1.ComboBox1DropDown(Sender: TObject);
begin
winapi.windows.SetCursor(Screen.Cursors[Cursor]);
end;
最初我测试了上面的因为没有人在下拉后调用SetCursor
。尽管似乎之前也没有人称呼它。所以我不知道原因或为什么上述修复有效。