GARANTIR DESCONTO

Fórum posicionando no grid #270555

01/03/2005

0

Oi, Galera. Já pesquisei sobre o assunto no site, mas não consegui achar nada que me responda o que eu preciso.

Usando Delphi 6, e componentes da paleta interbase.

Como posso fazer o dbgrid ficar mostrando sempre o registro
selecionado, por um locate de uma query, sempre aparecer na primeira linha da visualização do dbgrid.

Explicando melhor, quando abre o form de consulta mostra-se
todos os registros ordenados por nome. Daí eu preciso que ao
ser digitado num edit seja localizado por um locate o registro
desejado e o mesmo fique posicionado no inicio do dbgrid.

E de quebra caso nao exista o nome digitado posicione no próximo nome,
ou seja, se for pedido sandro e nao existir sandro que o ponteiro
indique saul.

Agradeço antecipadamente qualquer ajuda.

Sandro


Salupe

Salupe

Responder

Posts

01/03/2005

Bruno Belchior

você pode usas o componente ClientDataSet e executar a pesquisa depois vc dá um locate no resultado do ClientDataSet com o nome indicado...


Responder

Gostei + 0

01/03/2005

Salupe

Obrigado pela ajuda, mas isso eu já fiz, a localização do registro está feita.

O problema é fazer o ponteiro ficar na 1ª linha do dbgrid.

Preciso fazer com que ao fazer o locate, o dbgrid posicione o registro no primeiro lugar da tela.

Alguem sabe


Responder

Gostei + 0

03/03/2005

Salupe

sobe


Responder

Gostei + 0

03/03/2005

Rômulo Barros

Salupe, para este exemplo que vou descrever agora, vamos supor que o campo NOME seja o campo ´procurado´ e o campo MATRICULA seja a chave primária de nossa tabela. Segue:

procedure TForm1.Button1Click(Sender: TObject);
begin
   With(ClientDataSet1)Do
   Begin
      If(Locate(´NOME´,Edit1.Text,[loPartialKey]))Then
      Begin
         Filter := ´MATRICULA >= ´ + FieldByName(´MATRICULA´).AsString;
         IndexFieldNames := ´MATRICULA´;
         Filtered := True;
      End
      Else
        Begin
           If(Locate(´NOME´,Edit1.Text[1],[loPartialKey]))Then
           Begin
              Filter := ´MATRICULA >= ´ + FieldByName(´MATRICULA´).AsString;
              IndexFieldNames := ´MATRICULA´;
              Filtered := True;
           End
           Else
             MessageDlg(´Não existem registros que comecem com a letra ´ + Edit1.Text[1],mtInformation,[mbOk],0);
        End;
   End;
end;

end.


:arrow: [color=red:b757f0c4f7][b:b757f0c4f7]Não esqueçe, ao final, de desfazer o filtro.[/b:b757f0c4f7]
:wink: :wink: [/color:b757f0c4f7]


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar