Obter valor do banco ao navegar pelo DbGrid
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:
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?
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
Curtidas 0
Melhor post
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:
Troque "formReferencia" pelo nome do seu form correto.
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
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
20/08/2024
Creio que faltou setar o conteúdo do campo para a propriedade "Date" do DateTimePicker. Teste assim:
Se não funcionar no evento "Click", você pode testar o código no evento "AfterScroll" do Dataset "qrContasData_Doc".
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
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.
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
20/08/2024
Verdade, desta forma fica inclusive mais organizado.
obrigado.
obrigado.
GOSTEI 0