Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 1987 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Utilizo ACBr para a impressão de Danfes e Boletos e tenho a necessidade de Gerar em outros formatos os quais não estão disponíveis.
A algum tempo atrás até criei um post com as alterações necessárias o qual não foi aceito pois os recursos que necessito estão disponíveis apenas para Fast.
Então para que seja possível exportar os relatórios em outros formatos, toda vez que atualizo os fontes tenho que alterar o código fonte do ACBr com as implementações necessárias o que é um pouco trabalhoso.
Através de ClassHelpers consegui fazer a implementação para exportar Boleto e Danfe em outros formatos, porém para que isso seja possível, necessito que alguns métodos e propertys estejam públicos.

No Boleto em Fast a function PreparaRelatorio está privada, já no Danfe em Fast a function que faz esse trabalho já está definida como pública.
Na unit ACBrNFeNotasFiscais necessito acesso a procedure VerificarDANFE.
No Danfe em Fast o dmDanfe está definido apenas como variável, sem uma propriedade para acesso público a ela, já no Boleto esse mesmo datamodule possui uma property para acesso público.

Estou anexando aqui as units alteradas condizentes com o componente em questão para análise, mas vou criar um post em cada um dos fóruns, pois sei que os responsáveis por esses dois componentes são pessoas diferentes.

ACBrBoletoFCFR.pas

Postado

Eu tenho uma treta dessa, tanto que não uso a impressão que tem de boleto que tem no componente, pois deixo o boleto para ser alterado no cliente, é mais uma ideia.

Se vc derivar um componente do original, e rescrever a rotina não funciona? mesmo sendo privada.

Postado

Até seria uma possibilidade, mas pra ter acesso a método/propriedade privados só é possível caso o objeto pai e filho estejam na mesma Unit (privados da cláusula private, usando strict private ai só o próprio objeto tem acesso). Neste caso o método teria que estar declarado na cláusula protected onde um método não tem acesso publico mas os objetos que herdarem deste objeto conseguem ter acesso.

Porém ClassHelpers trazem uma enorme facilidade de uso, uma vez que é possível adicionar métodos a qualquer classe existente sem  a necessidade de criar uma classe herdando de outra. Vou exemplificar: no componente TACBrNFe existe a property NotasFiscais do tipo TNotasFiscais no qual eu necessito a implementação de um novo método e não posso alterar a classe original (poderia ser uma classe nativa do Delphi para facilitar o entendimento). Até poderia estender este objeto e utilizar utilizando Cast ter acesso ao método, mas achei mais interessante criar um ClassHelper para isso uma vez que o próprio Delphi tem utilizado ClassHelpers nas versões mais recentes para fazer aquelas conversões de tipos (MinhaVariavelString := MinhaVariavelInteira.toString;).

Vou anexar aqui meus Helpers para ter uma ideia do que estou implementando.

 

UACBr.ProntaEntrega.Boleto.Helper.pas UACBr.ProntaEntrega.NFe.Helper.pas

  • Este tópico foi criado há 1987 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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.