DBGRID

Delphi

07/01/2004

Ai galera, obrigado por me ajudarem em todas as minhas duvidas..

Por favor me ajudem em mais esta...

Eu tenho um form com um DGGRID e um edit onde eu faco uma pesquisa aproximada em uma tabela atraves do evento ONCHANGE do Edit...

Como faco para colocar o foco no DBGRID qdo eu pressionar as teclas seta para baixo e seta para cima ele role uma linha para cima ou para baixo np GRID?


Por exemplo:
Eu digito no Edit ´MARIA D´. No GRID aparece todos os clientes que comecam com Maria, eu quero pressionar seta para baixo ou para cima e o foco va direto para o GRID e role uma llinha para cima ou para baixo no GRID...


Certo que serei ajudado, desde ja agradeco...


Valeu..


Igor

Igor

Curtidas 0

Respostas

Fórum Vini

Fórum Vini

07/01/2004

Olá,
coloque esse código no evento onKeyDown do Edit( ou do DbEdit ):
  if (Key = VK_UP) then
  begin
    ClientDataSet1.Prior;
    Key:= 0;
  end;
  if (Key = VK_DOWN) then
  begin
    ClientDataSet1.Next;
    Key:= 0;
  end;



Espero ter ajudado.
Vinicius.


GOSTEI 0
Igor

Igor

07/01/2004

Valeu colega...

Deu certo mesmo...


GOSTEI 0
Marco Salles

Marco Salles

07/01/2004

Olá, coloque esse código no evento onKeyDown do Edit( ou do DbEdit ):
  if (Key = VK_UP) then
  begin
    ClientDataSet1.Prior;
    Key:= 0;
  end;
  if (Key = VK_DOWN) then
  begin
    ClientDataSet1.Next;
    Key:= 0;
  end;
Espero ter ajudado. Vinicius.


Vini. Tudo Indica Que ´Deu Certo Mesmo´ Como Nosso Amigo Colocou. Mas Gostaria Que Esta Dica fosse Mais Geral. Por Ser Uma Dica Interrresante. Ao Ler o Código Tive Uma Pequena Dúvida. A Instrução
[color=red:47b8176ec5]ClientDataSet1[/color:47b8176ec5] Não Será Identificada. Isto é Não Sendo Identificada, Não Roda, e Não Compila, Não Executa etc... [color=red:47b8176ec5]Esta Istrução Veio De Onde :?: [/color:47b8176ec5]


GOSTEI 0
Marco Salles

Marco Salles

07/01/2004

Desculpe-me Vini. Mas Antes De Enviar a Mensagem Anterior Eu Estava Tentando Digitar a Instrução. ´NomeMeuCampo´.DataSet.Prior´ e Não Estava Compilando. So Que Infelizmente Estava Digitando Esta Instrução Exatamente Em Um Lugar Errado De Um Evento. Então Por Gentileza Desconsidere a Mensagem Anterior e Seguimos Adiante.....


GOSTEI 0
Igor

Igor

07/01/2004

Ai Pessoal resolvi voltar o tópico porque me surgiu uma pequena dúvida..
Qdo eu pressiono Seta p/ cima volta um registro no DBGRID, tudo bem ...
Só que tbem no Edito o ponto de inserção volta uma posição também, ficando no meio da string que eu digitei...
Como faço p/resolver isso galera?...


Valeu...


GOSTEI 0
Marco Salles

Marco Salles

07/01/2004

Não Dá Para Entender Esta Situação Igor. Pois O Código Que o Vini Sugeriu , Quando Pressionado a Seta Para Cima, é Atribuido Para ´Key´
o Valor De Zero(Key:=0);Agora Para Resolver De Fato o Seu Problema V.c Deve Passar Mais Informações Do Seu Código, Os Eventos Associados Etc...Por Exemplo, Suponha Um Form Com Uma Tabela, Um DbGrid,Um DataSource,Um Edit.Com Os Seguintes Eventos.No Evento OnCreate Do Form Fazemos a Indexação Da Tabela.No Evento OnChange Do Edit, Fazemos a Pesquisa Aproximada Usando
Table1.FindNearest([Edit1.Text]);E No Evento onKeyDown dO Edit1 Escrevemos O Código Que o Vini Sugeriu.Com Esses Eventos e Com Esses Códigos,Posso Garantir Para V.c, Que O Ponto De Inserção Não Volta.

Então Meu Amigo De Duas Uma, Ou Seu Projeto Tem Eventos Ou Códigos Que Deverão Serem Mencionados Para Podermos Esclarecer Esta Penimba Ou V.c Esta Digitando Alguma Coisa Errada


GOSTEI 0
Igor

Igor

07/01/2004

Valeu Marcos....
Eu estava esquecendo justamente da instrução ´Key:=0;´
Deu certo...


GOSTEI 0
POSTAR