herdando valores.
Imaginem a seguinte situação:
Tenho um form frmRelatorio, outro frmCadPedido.
No frmRelatorio, no evento AfterPrint, eu faço o relatório receber todos os valores, (Número do Pedido, Cliente etc.. etc..).
No final eu pego o id do pedido (Where idpedido = frmCadPedido.idpedido)
Essa solução funciona legal.
O Problema:
Agora fiz uma pesquisa, de pedidos nessa pesquisa eu gostaria de imprimir também o pedido.
Então meu frmRelatorio está pegando o valor idpedido, do form frmCadPedido.
Eu gostaria de passar esse valor de ambos os form, sem repetir código.
Eu sei que poderia colocar o valor idpedido, em baixo do Tform, mas o form frmRelatorio vai ficar com 2 variaveis iguais, outra também vou precisar disso no frmRelatorio, não gostaria de criar um procedimento com muitos parametros, só precisava herdar o valor dessa variavel de ambos os forms.
alguém tem uma solução boa para resolver isso ?
Obrigado
Tenho um form frmRelatorio, outro frmCadPedido.
No frmRelatorio, no evento AfterPrint, eu faço o relatório receber todos os valores, (Número do Pedido, Cliente etc.. etc..).
No final eu pego o id do pedido (Where idpedido = frmCadPedido.idpedido)
Essa solução funciona legal.
O Problema:
Agora fiz uma pesquisa, de pedidos nessa pesquisa eu gostaria de imprimir também o pedido.
Então meu frmRelatorio está pegando o valor idpedido, do form frmCadPedido.
Eu gostaria de passar esse valor de ambos os form, sem repetir código.
Eu sei que poderia colocar o valor idpedido, em baixo do Tform, mas o form frmRelatorio vai ficar com 2 variaveis iguais, outra também vou precisar disso no frmRelatorio, não gostaria de criar um procedimento com muitos parametros, só precisava herdar o valor dessa variavel de ambos os forms.
alguém tem uma solução boa para resolver isso ?
Obrigado
Lynx
Curtidas 0
Respostas
Lynx
19/08/2005
eu tentei criar um procedimento ImprimirRelatorio(form:Tform;idpedido:integer);
e no outro form fazer
Mas não deu certo
e no outro form fazer
with TfrmRelatorio.Create(nil) do begin rlPedido.AfterPrint.ImprimirRelatorio(nomedoform:idpedido); rlPedido.Preview; free end;
Mas não deu certo
GOSTEI 0
Lynx
19/08/2005
beleza acho que assim estou no caminho certo.
No form relatório eu criei a procedure ImprimirRelatorio(Form:TForm;idpedido:Integer)
no form do cadastro ou pesquisa, eu coloco assim
Mas está retornando esse erro
No form relatório eu criei a procedure ImprimirRelatorio(Form:TForm;idpedido:Integer)
no form do cadastro ou pesquisa, eu coloco assim
with TfrmRelatorio.Create(nil) do begin rlPedido.AfterPrint.ImprimirRelatorio(frmPesquisaouCadastro,idpedido); rlPedido.Preview; free end;
Mas está retornando esse erro
Incompatible types: ´TForm´ and ´Class reference´
GOSTEI 0
Lynx
19/08/2005
Outra coisa, se eu criar uma variavel no frmRelatorio, e nos outros Forms atribuir valor a ela é certo ?
frmrelatorio
varidpedido: Integer;
frmCadPedido e FrmPesqPedido
Nesses forms eu altero o valor da variavel varpedido, do relatório.
É Possivel alterar o valor da variavel em outro form ?
é meio estranho fazer isso...
Alguém pode me dar uma força ?
Valeu
frmrelatorio
varidpedido: Integer;
frmCadPedido e FrmPesqPedido
Nesses forms eu altero o valor da variavel varpedido, do relatório.
É Possivel alterar o valor da variavel em outro form ?
é meio estranho fazer isso...
Alguém pode me dar uma força ?
Valeu
GOSTEI 0
Rjun
19/08/2005
Basta declarar a variável na área de declarações publicas. Mas o correto seria vc criar propriedades em vez de variáveis publicas.
GOSTEI 0
Lynx
19/08/2005
O Problema, que não da certo alterar o valor de uma váriavel em outro form.
Ler funciona, mas alterar o valor não.
Isso é meio gambiarra tb...
Como seria declarar propriedades ?
Na verdade o que eu preciso é passar o valor, da variavel idpedido de qualquer form.
Quando fixo no frmRelatório ,frmcadPedidos.idpedido funciona...
Mas só vai funcionar para esse form.
valeu
Ler funciona, mas alterar o valor não.
Isso é meio gambiarra tb...
Como seria declarar propriedades ?
Na verdade o que eu preciso é passar o valor, da variavel idpedido de qualquer form.
Quando fixo no frmRelatório ,frmcadPedidos.idpedido funciona...
Mas só vai funcionar para esse form.
valeu
GOSTEI 0
Lynx
19/08/2005
no caso no relatório eu coloco fixo assim.
Eu fixei o frmCadPedidos, esse valor deveria ser dinamico, no caso.
frmFormQueAbriu.idpedido.
Porque, agora vou passar o idpedido, em vários forms, e não gostaria de repetir código.
SQL.Add(´select * from PEDIDOS where IDPEDIDO = :IDPEDIDO´); ParamByName(´IDPEDIDO´).AsInteger:= frmCadPedidos.idpedido; Open;
Eu fixei o frmCadPedidos, esse valor deveria ser dinamico, no caso.
frmFormQueAbriu.idpedido.
Porque, agora vou passar o idpedido, em vários forms, e não gostaria de repetir código.
GOSTEI 0
Lynx
19/08/2005
:cry: ainda estou com esse problema...
Não tem como pegar a variavel do form que abriu...
Fixando o valor da certo, só para um form.
Não gostaria de fazer gambiarra com variavel pra saber qual form abriu, e colocar vários parametros...
:cry:
Não tem como pegar a variavel do form que abriu...
Fixando o valor da certo, só para um form.
Não gostaria de fazer gambiarra com variavel pra saber qual form abriu, e colocar vários parametros...
:cry:
GOSTEI 0
Lynx
19/08/2005
Vou tentar explicar da forma mais clara possivel.
Imagine isso
No cadastro tem um botao para imprimir, quando clica nele abre o FrmRelatorio.
no form relatório tem isso.
Então essa situação funciona porque eu coloco fixo [color=red:e61925b042]frmCadPedidos.idpedido[/color:e61925b042] na condicão do relatório.
Se eu mudar para [color=red:e61925b042]frmPesqPedidos.idpedido[/color:e61925b042] vai funcionar a impressao na tela de pesquisa e não vai funcionar na tela de cadastro :lol:
Acho que deu para entender, o que preciso...
Tentei de muitas maneiras mas não deu certo.
Só fazendo gambiarra com váriavel para resolver.
Alguém pode me ajudar, a resolver isso de uma forma mais limpa ?
Muito Obrigado.
Obs:(Fica aqui meu agradecimento ao Marcos Sales, pela força que deu nas m.p)
valeu!
Imagine isso
FrmCadPedidos var idpedido : Integer; FrmPesqPedidos var idpedido : Integer
No cadastro tem um botao para imprimir, quando clica nele abre o FrmRelatorio.
no form relatório tem isso.
with qryRelPedido do begin Close; SQL.Clear; SQL.Add(´select * from PEDIDOS where IDPEDIDO = :IDPEDIDO´); ParamByName(´IDPEDIDO´).AsInteger:= frmCadPedidos.idpedido; Open; lblData.Caption:= ´Data: ´+FieldByname(´DATA´).AsString; lblPedido.Caption:= ´Pedido Nº ´+FieldByname(´CODPEDIDO´).AsString; abaixo tem muitas mais linhas... passando para os label do relatório
Então essa situação funciona porque eu coloco fixo [color=red:e61925b042]frmCadPedidos.idpedido[/color:e61925b042] na condicão do relatório.
Se eu mudar para [color=red:e61925b042]frmPesqPedidos.idpedido[/color:e61925b042] vai funcionar a impressao na tela de pesquisa e não vai funcionar na tela de cadastro :lol:
Acho que deu para entender, o que preciso...
Tentei de muitas maneiras mas não deu certo.
Só fazendo gambiarra com váriavel para resolver.
Alguém pode me ajudar, a resolver isso de uma forma mais limpa ?
Muito Obrigado.
Obs:(Fica aqui meu agradecimento ao Marcos Sales, pela força que deu nas m.p)
valeu!
GOSTEI 0