我有一个问题:
当下拉列表可见,然后我将鼠标指针移动到表单上时,指针要么不可见,要么显示它正忙,要么显示调整大小图标,但在表单上方时不会返回正常指针。
有没有什么可以做的,以确保当组合框的下拉显示时,当我将指针移到表单上时鼠标指针是可见的?
我试过了:
Applicaiton.ProcessMessages
显示下拉后。Key := #0;
。
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
SendMessage(ComboBox1.Handle, CB_SHOWDROPDOWN, Integer(True), 0);
Key := #0;
end;
我希望能够在显示下拉列表后显示鼠标指针,但它会被隐藏。谢谢你的任何建议。
(注意:我遇到的这个问题并不是Delphi所独有的。我能够使用Visual C#2017复制该问题。无论哪种方式,如果有办法纠正这个问题,最好知道)。
正如已经对这个问题所评论的那样,问题与Delphi无关。您可以在对话框中观察到相同的行为,其中包含操作系统提供的类似组合。一个例子是“运行”对话框中的一个。
涉及单个环境,在OnDropDown
事件处理程序中重新设置光标可以解决问题。
procedure TForm1.ComboBox1DropDown(Sender: TObject);
begin
winapi.windows.SetCursor(Screen.Cursors[Cursor]);
end;
最初我测试了上面因为没有人在下拉后调用SetCursor
。虽然似乎没有人先称之为。所以我不知道上述修复的原因或原因。