Vamos fazer uma pesquisa no DBGrid usando uma função chamada InputQuery, que está declarada na unit Dialogs, como vemos a seguir:
function InputQuery(const ACaption, APrompt: string; var Value: string): Boolean;Por ser uma function e retonar um Boolean podemos testar a mesma com um IF, por exemplo:
If InputQuery('Dúvida ' , 'Digite o seu nome ',xVarNome) then
begin
.
.
.
.
.
end;Como podemos notar, ela tem um parâmetro do tipo Var, ou seja um parâmetro por referência. Para usá-la precisamos ter uma variável declarada do tipo string, que no exemplo acima foi a xVarNome : String;.
Vamos construir agora um exemplo e fazer funcionar a nossa pesquisa. O objetivo é que quando pressionarmos a tecla ENTER poderemos digitar o conteúdo de pesquisa desejado na coluna que estivermos selecionando no nosso DBGrid. Para construir o exemplo vamos adicionar uma TClientDataSet e um DataSource, além de um DBGrid. O mecanismo de conexão não é o foco do nosso exemplo, tanto que estamos usando um arquivo XML criado com a ajuda do TClientDataSet, como mostra a Figura 1.

Vamos implementar então o nosso código para fazer a pesquisa de acordo com a coluna selecionada no DBGrid. Para isso vamos usar o manipulador de evento OnKeyPress do nosso DBGrid:
procedure TFrmPrincipal.DBGrid1KeyPress(Sender: TObject; var Key: Char);
Var
xVarNome : String;
begin
if key = #13 then
begin
if InputQuery('Pesquisar ' +
TDBGrid(Sender).Columns[TDBGrid(Sender).SelectedIndex].FieldName,
'Digite o conteúdo',xVarNome) then
TDBGrid(Sender).DataSource.DataSet.Locate(TDBGrid(Sender).
Columns[TDBGrid(Sender).SelectedIndex].FieldName, xVarNome,
[loPartialKey,loCaseInsensitive]);
end;
end;Como podemos notar o código é bem simples, mas muito útil. Para testar basta você ter registro no seu DBGrid, depois escolher uma coluna e pressionar a tecla ENTER, então aparecerá uma caixa como a da Figura 2.

Você digita o conteúdo e novamente usa o ENTER ou clica no OK e pronto. Será feita uma pesquisa dentro do DataSet usando o campo NOME, com o conteúdo digitado.