Hola.
Se me ocurre que podrías simplificar con un Edit y un DBgrid.
.-En el DBGrid->Options pone a False dgIndicator y dgRowLines.
.-Poné el Edit sobre el título del DBGrid de forma que lo cubra totalmente.
.-Cambia el color del DBGrid para diferenciar.
Luego poné por ejemplo, algo como esto en el evento OnChange del Edit:
Código Delphi
[-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Text:= 'SELECT * FROM PRUEBA WHERE CAMPO LIKE '+
QuotedStr(Edit1.Text+'%');
Query1.Open;
if Query1.isEmpty and
(MessageDlg('¿ Agrega '+Edit1.Text+' ?',mtConfirmation,[mbYes,mbNo],0)=mrYes)then
begin
Query1.Close;
Query1.SQL.Text:='INSERT INTO PRUEBA(CAMPO) VALUES(:CAMPO)';
Query1.Params.ParamByName('CAMPO').AsString:= Edit1.Text;
Query1.ExecSQL;
Query1.Close;
Query1.SQL.Text:= 'SELECT CAMPO FROM PRUEBA ORDER BY CAMPO';
Query1.Open;
end
end;
Da el aspecto de un ComboBox desplegado y realiza la función que creo que buscas.
Un saludo.