Ir para conteúdo
  • Cadastre-se

[-]ACBR-8198 NFe Ajuste de Margens por Windsoft [*]Remoção da Duplicidade de todos as duplicidades do exportador PDF do FastReport por MarcosRWeimer


Recommended Posts

Postado

[-]ACBR-8198 NFe Ajuste de Margens por Windsoft
[*]Remoção da Duplicidade de todos as duplicidades do exportador PDF do FastReport por MarcosRWeimer

essa rotina está removendo os filtros de exportação do objeto de impressao do sistema todo, teria como corrigir ?

Some todos filtros de PDF

Postado (editado)
17 minutos atrás, Antonio Gomes disse:

[-]ACBR-8198 NFe Ajuste de Margens por Windsoft
[*]Remoção da Duplicidade de todos as duplicidades do exportador PDF do FastReport por MarcosRWeimer

essa rotina está removendo os filtros de exportação do objeto de impressao do sistema todo, teria como corrigir ?

Some todos filtros de PDF

some daqui 

image.png.48b236b944030523a57dd0c30ba2dd37.png

Porque isso foi feito? Qual problema era gerado para essa linha (RemoveExportFastReportPDFDuplicate) ter sido adicionada? 

Será que alguem colocou o filtro de export pdf em varias telas e deixou o global ativado ? Se for, não é bacana, é um motor de export apenas por aplicacao

Achei o defeito, é so aqui, mas interferiu em tudo

image.png.0a367c02bce6331cfb21735e3b5774d8.png

Editado por Antonio Gomes
Postado
15 minutos atrás, Antonio Gomes disse:

some daqui 

image.png.48b236b944030523a57dd0c30ba2dd37.png

Porque isso foi feito? Qual problema era gerado para essa linha (RemoveExportFastReportPDFDuplicate) ter sido adicionada? 

Será que alguem colocou o filtro de export pdf em varias telas e deixou o global ativado ? Se for, não é bacana, é um motor de export apenas por aplicacao

Achei o defeito, é so aqui, mas interferiu em tudo

image.png.0a367c02bce6331cfb21735e3b5774d8.png

o problema está nisso penso eu:

constructor TfrxCustomExportFilter.Create(AOwner: TComponent);
begin
  inherited;
  if not FNoRegister then
    frxExportFilters.Register(Self);
a cada exportador de pdf criado dentro da aplicacao, entra na lista global na var FExportFilters, dentro da unit frxDsgnIntf ... em resumo, parece que permite apenas um export pdf por aplicação, pela logica...

  • Moderadores
Postado
3 horas atrás, Antonio Gomes disse:

Porque isso foi feito? Qual problema era gerado para essa linha (RemoveExportFastReportPDFDuplicate) ter sido adicionada? 

Tópico relacionado:

A ideia até onde sei era manter apenas um exportador, porque se adicionasse um ACBrNFeDANFEFR e um ACBrNFeDANFCEFR já duplicava a opção "Arquivo PDF"

Aqui não aconteceu de desaparecer todas as opções de exportar PDF, não entendi se você conseguiu resolver isso ou não.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado
6 horas atrás, BigWings disse:

Tópico relacionado:

A ideia até onde sei era manter apenas um exportador, porque se adicionasse um ACBrNFeDANFEFR e um ACBrNFeDANFCEFR já duplicava a opção "Arquivo PDF"

Aqui não aconteceu de desaparecer todas as opções de exportar PDF, não entendi se você conseguiu resolver isso ou não.

Então eu não resolvi, expus para debate, após postar e analisar o codigo fonte do FastReport, a única coisa que vejo é criar o objeto no acbr fast para vincular o motor de exportar, ao inves dele instanciar um, pois no sistema quem já tem ele não precisa mais colocar, é usual para qualquer parte do sistema. Aquela variavel global com a lista dos motores de exportar é o grande erro, mas é coisa do fast report, nao consigo mudar.

Olha a ideia se concorda: Na unit ACBrNFeDANFEFR

   published
    property FastExport: TComponent read FFastExport write SetFastExport;

Então eu pego e ligo o meu export pdf que fica no meu dm principal ali, e aquele create do acbr nao mais vai ser feito, a menos que eu nao tenha adiconado, e na hora de exportar deveremos setar as opcoes de transparency false que é uma chamada de rtti e as demais configuracoes para a saida do pdf.

 

Postado
13 horas atrás, BigWings disse:

Tópico relacionado:

A ideia até onde sei era manter apenas um exportador, porque se adicionasse um ACBrNFeDANFEFR e um ACBrNFeDANFCEFR já duplicava a opção "Arquivo PDF"

Aqui não aconteceu de desaparecer todas as opções de exportar PDF, não entendi se você conseguiu resolver isso ou não.

 

Aqui também não aconteceu de "sumir" a opção de exportar e resolveu a questão da duplicidade.

 

 

-=Ma®©oS=-

Postado
1 hora atrás, MarcosRWeimer disse:

 

Aqui também não aconteceu de "sumir" a opção de exportar e resolveu a questão da duplicidade.

 

 

O demo so adiciona uma vez, nem passa no seu codigo, experimenta colocar no seu sistema.

vai colocar ele duas  vezes, e vai ter hr que seu sistema vai  usar o motor do acbr como exportador, e foi deletado da lista, mas nao removido da fila, pra remover, precisava dar um free, tipo é na funcao unregister do fastreport.

14 horas atrás, BigWings disse:

Tópico relacionado:

A ideia até onde sei era manter apenas um exportador, porque se adicionasse um ACBrNFeDANFEFR e um ACBrNFeDANFCEFR já duplicava a opção "Arquivo PDF"

Aqui não aconteceu de desaparecer todas as opções de exportar PDF, não entendi se você conseguiu resolver isso ou não.

Olha se concorda com isso:

Se aprovarem, vou mexer no mdfe e cte.

ACBrNFeDANFEFRDM.pas ACBrNFeDANFEFR.pas

  • Consultores
Postado
Em 04/11/2025 at 09:32, Antonio Gomes disse:

O demo so adiciona uma vez, nem passa no seu codigo, experimenta colocar no seu sistema.

vai colocar ele duas  vezes, e vai ter hr que seu sistema vai  usar o motor do acbr como exportador, e foi deletado da lista, mas nao removido da fila, pra remover, precisava dar um free, tipo é na funcao unregister do fastreport.

Olha se concorda com isso:

Se aprovarem, vou mexer no mdfe e cte.

ACBrNFeDANFEFRDM.pas 102.84 kB · 1 download ACBrNFeDANFEFR.pas 22.12 kB · 0 downloads

o problema acontece se tu adicionar um frxreport e vincular o exportador.

ao gerar a impressão o sistema está deletando o seu exportador e usando o primeiro que ele acha via RTTI?

é isso o problema se entendi bem?

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • Consultores
Postado

gerei uma impressão em PDF usando o ACBrNFeFR depois gerei uma impressão em outro datamodule usando frxreport + pdf, não encontrei problemas.

 

tem como fazer no programa exemplo como recriar o problema de "sumir" o exportador ?

image.png

se for o caso coloque mais forms dentro do programa exemplo, simulando o fluxo, depois anexe aqui por favor

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

  • Moderadores
Postado
55 minutos atrás, Victor H. Gonzales - Panda disse:

tem como fazer no programa exemplo como recriar o problema de "sumir" o exportador ?

Eu consegui replicar assim:

- Adicionar um frxPDFExport no demo.

- Adicionar um botão que faça um FreeAndNil no frxPDFExport.

- Executar o demo, proceder com a impressão normal, depois executar o código do botão, depois tentar imprimir novamente, a opção de exportar PDF desapareceu.

Na minha aplicação não ocorreu porque meu data module de impressão está sempre instanciado.

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado
13 horas atrás, BigWings disse:

Eu consegui replicar assim:

- Adicionar um frxPDFExport no demo.

- Adicionar um botão que faça um FreeAndNil no frxPDFExport.

- Executar o demo, proceder com a impressão normal, depois executar o código do botão, depois tentar imprimir novamente, a opção de exportar PDF desapareceu.

Na minha aplicação não ocorreu porque meu data module de impressão está sempre instanciado.

 

Isso pra quem tem o exportador dentro de um dm da aplicação principal nao funciona, voce  está lidando com algo algo real ou apenas teoria do demo ?

vou montar um programa exemplo. Mas... antes de começarmos debater sobre, preciso que rastreie essa variável no fonte do fast report: FExportFilters

 

  • Moderadores
Postado
1 hora atrás, Antonio Gomes disse:

preciso que rastreie essa variável no fonte do fast report: FExportFilters

Minha versão é a Standard, não tenho os fontes.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado
44 minutos atrás, BigWings disse:

Minha versão é a Standard, não tenho os fontes.

Então vou explicar: 
é tipo um TList de objetos, quando vc prega o TFRxExport, qualquer um, a classe base dele vai nessa variavel global e empilha eles lá, com o export do acbr nao é diferente, ele deu create, ele entra na fila, o que vira aquele menu maior, e aqueles botoes de acesso rapido eles verificam se tem os itens da lista para colocar visible no botao de pdf e no menu menor qdo clica com mouse no meio da pagina por exemplo.

Logo, qdo vcs fazem o delete, ele nao some da fila, pq somente o free remove ele da fila, e ainda assim, o delete da fila precisaria ter sido analisado o Aowner, pq o meu do meu dmconexao está lá, debuguei aqui, entao como aquele deve falha, vc remove ele, depois abre de novo, a ordem parece que se altera sei lá, sei que dado um momento o meu que está no meu dmconexao nao mais funciona e estraga todos relatorios do sistema.

frxClass:
constructor TfrxCustomExportFilter.Create(AOwner: TComponent);
begin
  inherited;
  if not FNoRegister then
    frxExportFilters.Register(Self); <<<< aqui criou um exportpdf, entra aqui


destructor TfrxCustomExportFilter.Destroy;
begin
  if not FNoRegister then
    frxExportFilters.Unregister(Self); <<<< aqui remove da lista
end;

ai faz isso:
 

image.thumb.png.7ea80ad2f3913967490b191253907d28.png

 

Então quando o delete é feito, nao vai nesse Filter ali e remove..

 

image.png.eb0e8f84bde43bed8c9d703b3fa17585.png

Resumindo tudo, o exportador é tipo um hook, nao permite mais de um, exceto os deles mesmo. Por isso eu coloquei aquela property para ser setado o meu do meu dm e nao deixar o acbr instanciar, e quem nao colocar, vai instanciar, cabe ao programador arrumar, nisso aquele codigo que vcs colocou, torna-se inutil. 

  • Moderadores
Postado

Não sei se o Panda chegou a ver.

Acho que uma solução melhor seria apenas o ACBr não instanciar o exportPdf se já estiver instanciado pela aplicação.

Não cheguei a implementar, mas creio que resolva de todo lado.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado
5 horas atrás, BigWings disse:

Não sei se o Panda chegou a ver.

Acho que uma solução melhor seria apenas o ACBr não instanciar o exportPdf se já estiver instanciado pela aplicação.

Não cheguei a implementar, mas creio que resolva de todo lado.

estou mexendo, vou postar  daqui na pouco. entao voces analisam, deu certo a ideia, analisar os filter

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.