Obter valor do banco ao navegar pelo DbGrid

Delphi

20/08/2024

Pessoal, tenho um formulário que possui um dbgrid e alguns dbedits ligados a um datasource
Então, se eu navegar pelo dbgrid, seja com as setas do teclado ou clicando com o mouse, os dbedits vão receber o valor selecionado no dbgrid.
Ocorre que para os campos data estou usando DateTimePicker e não estou conseguindo pegar o valor.

ex:
dtpData := Frmdm.qrContasData_Doc.AsDateTime;


Botei o codigo acima do evento de click, mas se o usuario usar as setas, não pega o valor

Alguma dica de como fazer?
Renan

Renan

Curtidas 0

Melhor post

Natanael Ferreira

Natanael Ferreira

21/08/2024

Você pode verificar se o form de referência foi criado antes de chamar o evento do AfterScroll com o "Assigned":

Exemplo:

if Assigned(formReferencia) then
 formReferencia.dtpData.Date := qrContasData_Doc.AsDateTime;

Troque "formReferencia" pelo nome do seu form correto.
GOSTEI 1

Mais Respostas

Arthur Heinrich

Arthur Heinrich

20/08/2024

Talvez você tenha que utilizar o evento "OnColEnter" do DBGrid. Ele ocorre sempre que o foco muda para uma nova célula no grid, o que pode ocorrer tanto com o uso do mouse, como pelo teclado.
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

20/08/2024

Creio que faltou setar o conteúdo do campo para a propriedade "Date" do DateTimePicker. Teste assim:

dtpData.Date := Frmdm.qrContasData_Doc.AsDateTime;

Se não funcionar no evento "Click", você pode testar o código no evento "AfterScroll" do Dataset "qrContasData_Doc".
GOSTEI 0
Renan

Renan

20/08/2024

Arthur, havia tentado o "OnColEnter", mas não surtiu efeito.

Natanael, funciona perfeitamente, porém como meu Dataset está num DataModule, recebo um erro de violação de acesso ao acessar o form de conferencia, pois ele ainda não foi criado no momento que dispara o AfterScroll.
Eu poderia criar o form lá no datamodule ou fazer uma gambiarra assim:

Setar o DbGrid para Enabled = False, para impedir que o usuário clique com o mouse, o que é bem o que eu quero.

Pegar a data do banco e jogar o DateTimePicker no momento que percorro a tabela, logo após o comando Next.
GOSTEI 0
Renan

Renan

20/08/2024

Verdade, desta forma fica inclusive mais organizado.

obrigado.
GOSTEI 0
POSTAR