一个小问题,但却不好解决。
解决这个问题有两种方法:
方法一:在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的那个事件中写此代码,都无法自动下拉。
有什么好办法吗?
   

解决方案 »

  1.   

    注册鼠标事件请参考  public
       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;试试看,我用的是笔记本没有鼠标,以上应该可以实现鼠标滚轮
      

  2.   

    IDWB方法可用。
    不过改用dbcombobox,更灵活一些