一个小问题,但却不好解决。
解决这个问题有两种方法:
方法一:在DBLookupComboBox1的OnEnter中
procedure TForm1.DBLookupComboBox1Enter(Sender: TObject);
begin
DBLookupComboBox1.DropDown;
end;
可以实现自动下拉,但不能实现高亮自动跟随;
方法二:
在另外的组件中可以这样:
procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(DBLookupComboBox1.Handle, WM_LBUTTONDOWN, MK_LBUTTON, 0);
end;
可以很好地实现自动下拉和高亮自动跟随,但无论在DBLookupComboBox1的那个事件中写此代码,都无法自动下拉。
有什么好办法吗?
解决这个问题有两种方法:
方法一:在DBLookupComboBox1的OnEnter中
procedure TForm1.DBLookupComboBox1Enter(Sender: TObject);
begin
DBLookupComboBox1.DropDown;
end;
可以实现自动下拉,但不能实现高亮自动跟随;
方法二:
在另外的组件中可以这样:
procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(DBLookupComboBox1.Handle, WM_LBUTTONDOWN, MK_LBUTTON, 0);
end;
可以很好地实现自动下拉和高亮自动跟随,但无论在DBLookupComboBox1的那个事件中写此代码,都无法自动下拉。
有什么好办法吗?
OldmyWnd : TWndMethod;
procedure NewmyWnd (var Message : TMessage);
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}{ TForm1 }procedure TForm1.NewmyWnd(var Message: TMessage);
var
IsNeg : Boolean;
begin
if Message.Msg = WM_MOUSEWHEEL then
begin
IsNeg := Short(Message.WParamHi) < 0;
if IsNeg then
DBLookupComboBox1.ListSource.DataSet.MoveBy(1)
else
DBLookupComboBox1.ListSource.DataSet.MoveBy(-1)
end
else
OldmyWnd(Message);end;procedure TForm1.FormCreate(Sender: TObject);
begin
OldmyWnd := DBLookupComboBox1.WindowProc ;
DBLookupComboBox1.WindowProc := NewmyWnd;end;试试看,我用的是笔记本没有鼠标,以上应该可以实现鼠标滚轮
不过改用dbcombobox,更灵活一些