Ir ao topo

Tecnobyte

Logomarca da Tecnobyte
Contato por WhatsApp

WhatsApp

(69) 3421-6756

Contato por Telefone

(69) 3421-6756

(69) 3421-6757

Enviar mensagem

Enviar

mensagem

Contato por Facebook

Facebook

Vídeos

Vídeos

Atendimento de segunda a sexta, das 08h00 às 19h00 (horário de Brasília).

Banner

Delphi - Banco de Dados

Fazer pesquisa incremental apenas com DBGrid

Problema:

Gostaria de fazer um formulário de pesquisa que, ao digitar
algo sobre o DBGrid, o registro correspondendo fosse 
localizado.

Solução:

- Coloque no form: TTable, TDataSource, TDBGrid e TLabel.

- Ajuste as propriedades do Table1:
  DatabaseName = 
  TableName = 
  Active = true

- Ajuste as propriedades do DataSource1:
  DataSet = Table1

- Ajuste as propriedades do DBGrid1:
  DataSource = DataSource1
  Options -> dgEditing = false
  ReadOnly = true
  
  * Pode também ajustar a propriedades Columns para escolher
    as colunas que serão exibidas.

- Na seção private da unit declare:
  private
    FTexto: string;

- No evento OnCreate do form coloque:
  FTexto := '';
  Label1.Caption := '';

- No evento OnKeyPress do DBGrid1:

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key in [#8, #32..#255] then begin

    if Key = #8 then { BackSpace }
      FTexto := Copy(FTexto, 1, Length(FTexto)-1)
    else
      FTexto := FTexto + Key;

    { Posiciona na coluna Nome }
    Table1.FieldByName('Nome').FocusControl;

    { Escolhe o índice e procura }
    Table1.IndexFieldNames := 'Nome';
    Table1.FindNearest([FTexto]);

    { Mostra o texto procurado }
    Label1.Caption := FTexto;
  end;
end;

Observações

No nosso exemplo estamos pesquisando através do campo "Nome". Para esta pesquisa precisamos de um índice com este campo.

O conteúdo desta página pode ajudar alguém? Compartilhe!