Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

Notei que a impressão do DANFE está ficando com uma área fora da página de impressão, devido ao uso das margens via código.

Isso ocorre porque o método que faz o ajuste de margens nas páginas, faz isso nas páginas já processadas que já estão prontas para impressão, porem como alguns componentes de impressão possuem "posicionamentos relativos", e utilizam da propriedade que permite "esticar" conforme o tamanho se necessário, ao alterar as margens altera também área de impressão vertical, mas a rotina utilizada possui uma falha, pois não muda o tamanho da página, apenas do conteúdo.

Outra coisa que notei é que se usar o "modo designer" para adaptar o arquivo e executar a visualização, a configuração de margem não tem efeito, pois são gerados novos previews que já não são afetados/reprocessado runtime via código.

Após analisar o código e os problemas, acredito que a única forma segura que permita definir essas configurações via código, ou via arquivo, que seja aplicável também em modo designer, seria usando uma variáveis do fast report no código ACBr, e utiliza-los no script do arquivo.

Vantagens:

  1. Será utilizado a margens padrão do componente ou se definida via código.
  2. Se zeradas via código, permitirá usar as margens definida no próprio arquivo.
  3. Não obriga ter margem salvas no arquivo, mas é visível no preview normal quanto no preview do designer.
  4. Resolve o problema da área de impressão fora da página devido auto ajustes com elementos de esticam/crescem para apresentar todos descritivo
  5. Evita que o designer carregue configurações de margens do código, evitando gravar arquivos com margens que não deveria pertencer ao arquivo.

Desvantagens:

  1. Requerer atualizar arquivos modelos .fr3

ACBrNFeDANFEFRDM.pas

  frxReport.Variables['MargemSuperior'] := DANFEClassOwner.MargemSuperior;
  frxReport.Variables['MargemInferior'] := DANFEClassOwner.MargemInferior;
  frxReport.Variables['MargemEsquerda'] := DANFEClassOwner.MargemEsquerda;
  frxReport.Variables['MargemDireita'] := DANFEClassOwner.MargemDireita;

DANFeNFCe.fr3

begin
  if <MargemSuperior> > 0 then                                           
    Page1.TopMargin := <MargemSuperior>;
  if <MargemInferior> > 0 then                                           
    Page1.BottomMargin := <MargemInferior>;
  if <MargemEsquerda> > 0 then                                        
    Page1.LeftMargin := <MargemEsquerda>;
  if <MargemDireita> > 0 then                                               
    Page1.RightMargin := <MargemDireita>;
end.

 

ACBrNFeDANFEFRDM.pas DANFeNFCe5_00.fr3

  • Este tópico foi criado há 228 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.

The popup will be closed in 10 segundos...