Fórum Eventos de DBGrid #377211

08/05/2010

0

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

Responder

Posts

08/05/2010

Paulo Ricardo

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 ;)
Responder

Gostei + 0

09/05/2010

Clovis Perazza

Vou testar Paulo, depois posto o resultado.

Obrigado.
Responder

Gostei + 0

09/05/2010

Carlos Mazzi

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;
Responder

Gostei + 0

09/05/2010

Carlos Mazzi

Ops faltou explicar, onde estiver usando as setas, use os comandos, .Next ou .Prior. Abracos
Responder

Gostei + 0

09/05/2010

Clovis Perazza

Valeu Carlos, vou testar.

Obrigado.
Responder

Gostei + 0

09/05/2010

Clovis Perazza

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.
Responder

Gostei + 0

10/05/2010

Robson Catunda

Acho mais prático utilizar o AfterScroll do dataset referente ao 1º dbgrid.
Responder

Gostei + 0

10/05/2010

Wilson Junior

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

Espero ter colaborado.
Responder

Gostei + 0

10/05/2010

Clovis Perazza

Obrigado pessoal, vou testar depois informo se funcionou.

Abraços.
Responder

Gostei + 0

12/05/2010

Carlos Mazzi

Blz, ficamos no aguardo...
Responder

Gostei + 0

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

Aceitar