Eventos de DBGrid

Delphi

08/05/2010

Tenho 2 DBGrid e 2 tabelas, com um campo comum "NumNF".

Na 1ª tenho o cabeçalho da NF, ou seja, nº da NF, nome do comprador, data, etc...

Na 2ª tenho a descriminação dos produtos.

Com o evento OnCellClick ativado na 1ª DBGrid, clico numa célula e a 2ª me mostra essa descriminação, após passar por um filtro que é o campo "NumNF".

Até aí tudo bem, só que estou tentando, ao invés de clicar, navegar com as teclas de Seta para Cima e Seta para Baixo, só que dessa forma o ponteiro não aponta para  o "NumNF" da 2ª DBGrid, ou seja, ela permanece inalterada mostrando os dados do último Click.

Testei todos os eventos da 1ª DBGrid mas não consegui resolver.

Existe alguma forma para isso?

Agradeço qualquer ajuda.
Clovis Perazza

Clovis Perazza

Curtidas 0

Respostas

Paulo Ricardo

Paulo Ricardo

08/05/2010

a maneira mas simples de fazer isso é usar Master/Detalhe ou se for no modo "braçau" trabalhe com o DataSource no evento OnDataSetState e nele faça os mesmo tratamentos que ta fazendo no grid, claro coloque um if para verificar o evento da tabela como por exemplo...

if DataSource.DataSet.State in [dsBowser] then // se o dataset estiver no modo de navegação então...
aplique esses comandos...

espero ter ajudado ;)
GOSTEI 0
Clovis Perazza

Clovis Perazza

08/05/2010

Vou testar Paulo, depois posto o resultado.

Obrigado.
GOSTEI 0
Carlos Mazzi

Carlos Mazzi

08/05/2010

Já tentaste usar o evento ONKEYDOWN?     if key = vk_down then  //seta pra baixo
    gridConsulta.SetFocus;   ou     if key = vk_up then   //seta pra cima
    gridConsulta.SetFocus;
GOSTEI 0
Carlos Mazzi

Carlos Mazzi

08/05/2010

Ops faltou explicar, onde estiver usando as setas, use os comandos, .Next ou .Prior. Abracos
GOSTEI 0
Clovis Perazza

Clovis Perazza

08/05/2010

Valeu Carlos, vou testar.

Obrigado.
GOSTEI 0
Clovis Perazza

Clovis Perazza

08/05/2010

Carlos, testei sua sugestão mas não deu certo.
Talvez eu esteja fazendo algo errado, mas na procedure abaixo, as teclas Seta para Cima e Seta para Baixo, não são "sentidas".

Outras teclas como letras, números e Enter são reconhecidas, mas as PageUp, PageDown e Setas, não são.

Veja como usei:

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key = #38) or (Key = #40) then <-
//  if (key = chr(vk_down)) or (key = chr(vk_up)) then <- utilizei essas 2 comparações
  DBGrid1.SetFocus;
end;

Abraços.
GOSTEI 0
Robson Catunda

Robson Catunda

08/05/2010

Acho mais prático utilizar o AfterScroll do dataset referente ao 1º dbgrid.
GOSTEI 0
Wilson Junior

Wilson Junior

08/05/2010

Também utilizo o AfterScroll, assim como o colega Robson, e funciona perfeitamente.

Espero ter colaborado.
GOSTEI 0
Clovis Perazza

Clovis Perazza

08/05/2010

Obrigado pessoal, vou testar depois informo se funcionou.

Abraços.
GOSTEI 0
Carlos Mazzi

Carlos Mazzi

08/05/2010

Blz, ficamos no aguardo...
GOSTEI 0
POSTAR