Можно подставить имя поля для поиска по индексу в комбобоксе
Код:
DBGrid1.DataSource.DataSet.Locate(DBGrid1.DataSource.DataSet.Fields[ComboBox1.ItemIndex].FieldName, Edit1.Text,[]);
З.Ы. Ваш код нуждается в оптимизации, поскольку такие длинные конструкции особливо обращение к гридовому поставщику через эту же сетку всегда являлось и является моветоном