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.

WesleyInputQuery_DBGrid01
Figura 1. Arquivo XML

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.

WesleyInputQuery_DBGrid01
Figura 2. Testando o código
´

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.