Abrindo form para efetuar filtros
Olá, estou com o seguinte problema. No evento onCreate do FrmFiltros tenho a condição :
if (frmEstoque.DBGrid1.SelectedIndex = 1) then
Panel_filtro_descricao.Visible:=true;
O panel de filtro por descrição só ficara visivel se a coluna 1 do dbGrid do estoque estiver selecionada. Usando este código não da nenhum erro, porem mesmo com a coluna 1 selecionada, o panel filtro por descrição não fica visivel ao abrir o Form dos filtros. Ai então fiz um teste tirando o panel de filtro por descrição do FrmFiltros e colocando no mesmo Form que esta a dbGrid, o FrmEstoque, ai então funciona perfeitamente, porem preciso trabalhar com um form separado para efetuar os filtros. Como poderia corrigir esta situação ?
if (frmEstoque.DBGrid1.SelectedIndex = 1) then
Panel_filtro_descricao.Visible:=true;
O panel de filtro por descrição só ficara visivel se a coluna 1 do dbGrid do estoque estiver selecionada. Usando este código não da nenhum erro, porem mesmo com a coluna 1 selecionada, o panel filtro por descrição não fica visivel ao abrir o Form dos filtros. Ai então fiz um teste tirando o panel de filtro por descrição do FrmFiltros e colocando no mesmo Form que esta a dbGrid, o FrmEstoque, ai então funciona perfeitamente, porem preciso trabalhar com um form separado para efetuar os filtros. Como poderia corrigir esta situação ?
Jhon
Curtidas 0
Respostas
Douglas
19/02/2015
Olá Jhon, tudo bem?
Bem, pelo código que você postou não me parece estar fazendo referência ao panel do formulário FrmFiltros.
O certo seria instanciar o seu formulário filtros e aí sim acessar os objetos contidos nele para que possa exibir ou não de acordo com sua necessidade.
Bem, pelo código que você postou não me parece estar fazendo referência ao panel do formulário FrmFiltros.
if (frmEstoque.DBGrid1.SelectedIndex = 1) then Panel_filtro_descricao.Visible:=true;
O certo seria instanciar o seu formulário filtros e aí sim acessar os objetos contidos nele para que possa exibir ou não de acordo com sua necessidade.
if (frmEstoque.DBGrid1.SelectedIndex = 1) then var FrmFiltros : TFrmFiltros; begin FrmFiltros := TFrmFiltros.Create; FrmFiltros.Panel_filtro_descricao.Visible := true; FrmFiltros.ShowModal; end;
GOSTEI 0
Jhon
19/02/2015
Olá Douglas, muito obrigado, deu certo da forma que me passou. Porem me deparei com um outro problema, que acredito que seja praticamente pelo mesmo motivo anterior.
Quando clico no botão OK do filtro, da erro de acess violation.
Código que esta no botão OK do form filtro:
frmEstoque.ClientDataSet_estoque.Filtered := false;
frmEstoque.ClientDataSet_estoque.Filter := 'data_cad>='''+DateToStr(DateTimePicker1.Date)+''''+
'and data_cad<='''+DateToStr(DateTimePicker2.Date)+'''';
frmEstoque.ClientDataSet_estoque.Filtered := true;
neste caso, o erro acontece por que o ClientDataSet_estoque esta no form estoque, e não no form do filtro, então como eu teria de fazer nesse caso, pois não consigo trabalhar com nenhum componente do banco de dados que esta em outro form, no caso no form estoque. Poderia me ajudar ?
Quando clico no botão OK do filtro, da erro de acess violation.
Código que esta no botão OK do form filtro:
frmEstoque.ClientDataSet_estoque.Filtered := false;
frmEstoque.ClientDataSet_estoque.Filter := 'data_cad>='''+DateToStr(DateTimePicker1.Date)+''''+
'and data_cad<='''+DateToStr(DateTimePicker2.Date)+'''';
frmEstoque.ClientDataSet_estoque.Filtered := true;
neste caso, o erro acontece por que o ClientDataSet_estoque esta no form estoque, e não no form do filtro, então como eu teria de fazer nesse caso, pois não consigo trabalhar com nenhum componente do banco de dados que esta em outro form, no caso no form estoque. Poderia me ajudar ?
GOSTEI 0
Douglas
19/02/2015
Olá Douglas, muito obrigado, deu certo da forma que me passou. Porem me deparei com um outro problema, que acredito que seja praticamente pelo mesmo motivo anterior.
Quando clico no botão OK do filtro, da erro de acess violation.
Código que esta no botão OK do form filtro:
frmEstoque.ClientDataSet_estoque.Filtered := false;
frmEstoque.ClientDataSet_estoque.Filter := 'data_cad>='''+DateToStr(DateTimePicker1.Date)+''''+
'and data_cad<='''+DateToStr(DateTimePicker2.Date)+'''';
frmEstoque.ClientDataSet_estoque.Filtered := true;
neste caso, o erro acontece por que o ClientDataSet_estoque esta no form estoque, e não no form do filtro, então como eu teria de fazer nesse caso, pois não consigo trabalhar com nenhum componente do banco de dados que esta em outro form, no caso no form estoque. Poderia me ajudar ?
Quando clico no botão OK do filtro, da erro de acess violation.
Código que esta no botão OK do form filtro:
frmEstoque.ClientDataSet_estoque.Filtered := false;
frmEstoque.ClientDataSet_estoque.Filter := 'data_cad>='''+DateToStr(DateTimePicker1.Date)+''''+
'and data_cad<='''+DateToStr(DateTimePicker2.Date)+'''';
frmEstoque.ClientDataSet_estoque.Filtered := true;
neste caso, o erro acontece por que o ClientDataSet_estoque esta no form estoque, e não no form do filtro, então como eu teria de fazer nesse caso, pois não consigo trabalhar com nenhum componente do banco de dados que esta em outro form, no caso no form estoque. Poderia me ajudar ?
Jhon, você não consegue trabalhar com o objeto frmEstoque.ClientDataSet_estoque, pois você não manipulou o mesmo na tela de estoque. Para utiliza-lo no formulário filtro, o frmEstoque.ClientDataSet_estoque deve estar com os dados carregado no clientDataSet. Depois você faz a filtragem no formulário de filtros.
GOSTEI 0
Jhon
19/02/2015
Ok, obrigado pela ajuda.
GOSTEI 0