在Delphi 2007中,我试图强制TComboBox下拉,但是当我这样做时,在控件进行编辑并且鼠标悬停在窗体上方时,鼠标光标消失了。在阅读了关于使用TComboBox实现过滤器功能的SO answer之后,我想到了这个想法。
演示行为。
在示例代码中,您可以看到我尝试过的两种变通办法,但都没有奏效。
可以克服消失的光标吗?
也欢迎使用另一个自由控件/组件,该控件可以实现在键入时过滤列表的相同目标。我需要根据项目中是否包含文本来过滤项目,因此自动完成路由似乎不是一个选择。
干杯
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure ComboChange(Sender: TObject);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.AutoComplete := false;
ComboBox1.Style := csDropDown;
ComboBox1.OnChange := ComboChange;
ComboBox1.Items.Add('One');
ComboBox1.Items.Add('Two');
ComboBox1.Items.Add('Three');
end;
procedure TForm1.ComboChange(Sender: TObject);
begin
{ First Try }
ComboBox1.DroppedDown := true;
{ Second Try }
//PostMessage((Sender as TComboBox).Handle, CB_SHOWDROPDOWN, 1, 0);
{ Grasping at straws }
//ShowCursor(true);
end;
end.