就是一般的一个窗体,窗体上面放一个DbGrid就可以了,下面的代码给你参考
//就是你下拉框所显示的窗体的代码
public
    function Execute(HostControl: TControl; var ItemNo: String;   var  ItemName: String; var UnitPrice:Double;Var Aunit:String;Var Spec:String):Boolean;
    { Public declarations }
  end;var
  FrmSelectProduct: TFrmSelectProduct;
-----------------------------------------------procedure AdjustDropDownForm(AControl : TControl; HostControl: TControl);
var
   WorkArea: TRect;
   HostP, PDelpta: TPoint;
begin
   SystemParametersInfo(SPI_GETWORKAREA,0,@WorkArea,0);
   HostP := HostControl.ClientToScreen(Point(0,0));
   PDelpta := AControl.ClientToScreen(Point(0,0));   AControl.Left := HostP.x;
   AControl.Top := HostP.y + HostControl.Height + 1;   if (AControl.Width > WorkArea.Right - WorkArea.Left) then
     AControl.Width := WorkArea.Right - WorkArea.Left;   if (AControl.Left + AControl.Width > WorkArea.Right) then
     AControl.Left := WorkArea.Right - AControl.Width;
   if (AControl.Left < WorkArea.Left) then
     AControl.Left := WorkArea.Left;
   if (AControl.Top + AControl.Height > WorkArea.Bottom) then
   begin
     if (HostP.y - WorkArea.Top > WorkArea.Bottom - HostP.y - HostControl.Height) then
       AControl.Top := HostP.y - AControl.Height;
   end;   if (AControl.Top < WorkArea.Top) then
   begin
     AControl.Height := AControl.Height - (WorkArea.Top - AControl.Top);
     AControl.Top := WorkArea.Top;
   end;   if (AControl.Top + AControl.Height > WorkArea.Bottom) then
   begin
     AControl.Height := WorkArea.Bottom - AControl.Top;
   end;end;function TFrmSelectProduct.Execute(HostControl: TControl; var ItemNo: String; var ItemName: String; var UnitPrice:Double;Var Aunit:String;Var Spec:String):Boolean;
begin
  AdjustDropDownForm(Self,HostControl);
  Visible := True;
  ModalResult := mrCancel;
  while (Visible) do Application.ProcessMessages;
  Result := False;
  if ModalResult = mrOk then
  begin
    ItemNo   := Query1.FieldByName('ItemNo').AsString;
    ItemName := Query1.FieldByName('ItemName').AsString;
    unitPrice:= Query1.FieldByName('CurrentPrice').AsFloat;
    Aunit:=Query1.FieldByName('Unit').AsString;
    Spec :=Query1.FieldByName('Spec').AsString;
    Result := True;
  end;
end;
然后你就可以在双击某一个文本框中的事件中引用function TFrmSelectProduct.Execute(HostControl: TControl; var ItemNo: String; var ItemName: String; var UnitPrice:Double;Var Aunit:String;Var Spec:String):Boolean;函数就可以了,其他的你自己补充