Alternar componentes no dbCtrlGrid
Bom dia pessoal e um feliz ano novo a todos....
Bem, estou dando uma melhorada no módulo de consulta de meus sistemas e para isso coloquei um dbctrlgrid para "facilitar" a vida dos usuários, mas ta complicando um pouco a minha.
A ideia é que o usuário escolha o(s) campo(s) e o(s) critério(s), e em seguida forneça o valor para que o sistema gere o sql necessário e retorne as informações solicitadas...
O usuário escolhendo um campo que não seja do tipo date, vai aparecer um edit para ser informado o valor (aqui tudo bem), porém quando o tipo do campo é date, o sistema deixa o edit com visible := false e dois (data inicial e final) TJvDateEdit (Jedi) fique com o visible := true. O que vem ocorrendo é que quando escolho o campo date, é feito a alternância dos componentes, porém o TJvDateEdit se repete em todas as linhas do dbctrlgrid, e ao sair da linha ele volta ao edit.
Será que existe uma luz no fim do túnel???
Abraço a todos.
Bem, estou dando uma melhorada no módulo de consulta de meus sistemas e para isso coloquei um dbctrlgrid para "facilitar" a vida dos usuários, mas ta complicando um pouco a minha.
A ideia é que o usuário escolha o(s) campo(s) e o(s) critério(s), e em seguida forneça o valor para que o sistema gere o sql necessário e retorne as informações solicitadas...
O usuário escolhendo um campo que não seja do tipo date, vai aparecer um edit para ser informado o valor (aqui tudo bem), porém quando o tipo do campo é date, o sistema deixa o edit com visible := false e dois (data inicial e final) TJvDateEdit (Jedi) fique com o visible := true. O que vem ocorrendo é que quando escolho o campo date, é feito a alternância dos componentes, porém o TJvDateEdit se repete em todas as linhas do dbctrlgrid, e ao sair da linha ele volta ao edit.
Será que existe uma luz no fim do túnel???
Abraço a todos.
Claudio Andrade
Curtidas 0
Respostas
Claudio Andrade
28/12/2013
Resolvido...
Tratamento feito no evento DBCtrlGrid1PaintPanel.
Tratamento feito no evento DBCtrlGrid1PaintPanel.
GOSTEI 0
Eduardo Costa
28/12/2013
Claudio estou com esse mesmo problema, como foi que vc resolveu??
GOSTEI 0
Claudio Andrade
28/12/2013
Opa Eduardo, tudo jóia??
Bem, o que eu fiz foi bem simples. Coloquei um MemoryTable para poder pegar o nome do campo e seu indice pela ordem do FieldsEditor e no evendo DBCtrlGrid1PaintPanel coloquei o código abaixo:
O campo NC (Nome do Campo) identifica se o campo armazena uma data ou outro tipo de informação. Identificando como data ele deixa dois DataEdit's como visíveis e o Edit que seria para o restante das informações como visible := false;
Para identificar o NC, no fieldseditor eu usei a propriedade DisplayLabel
Qualquer dúvida pode ficar a vontade para perguntar...
Abraço.
Bem, o que eu fiz foi bem simples. Coloquei um MemoryTable para poder pegar o nome do campo e seu indice pela ordem do FieldsEditor e no evendo DBCtrlGrid1PaintPanel coloquei o código abaixo:
if ADMemTable1.FieldByName('NC').AsString = 'Data' then
begin
dtDataInicio.Visible := true;
dtDataFim.Visible := true;
edValorConsulta.Visible := false;
end
else
begin
dtDataInicio.Visible := false;
dtDataFim.Visible := false;
edValorConsulta.Visible := true;
end;
O campo NC (Nome do Campo) identifica se o campo armazena uma data ou outro tipo de informação. Identificando como data ele deixa dois DataEdit's como visíveis e o Edit que seria para o restante das informações como visible := false;
Para identificar o NC, no fieldseditor eu usei a propriedade DisplayLabel
Qualquer dúvida pode ficar a vontade para perguntar...
Abraço.
GOSTEI 0