Ir para conteúdo
  • Cadastre-se

dev botao

Impressão modelo 55 Fortes , Path SALVAR pode ser alterado ?


Ver Solução Respondido por Antonio Carlos L,
  • Este tópico foi criado há 1236 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde a todos.

Na impressão do modelo 55 no Fortes Report, SEM mexer nos fontes, é possível quando em PREVIEW, ao clicar em SALVAR o Path Default que é onde o executável se encontra, ser alterado por exemplo para a Área de Trabalho sem alterar os fontes ?

Obrigado

Antonio Carlos

 

 

  • Curtir 1
Postado
4 horas atrás, Antonio Carlos L disse:

SALVAR

Boa tarde,

eu também ja reparei neste detalhe, ja me perguntaram tambem, se dava pra definir um caminho/pasta padrão pra salvar o pdf, mas ainda não consegui estudar os fontes pra ver...  acho q faz sentido, por exemplo, poderia ter essa opção/propriedade no componente RLPreviewSetup...

Atr

Ricardo

  • Curtir 1
Postado
14 horas atrás, RicardoVoigt disse:

Boa tarde,

eu também ja reparei neste detalhe, ja me perguntaram tambem, se dava pra definir um caminho/pasta padrão pra salvar o pdf, mas ainda não consegui estudar os fontes pra ver...  acho q faz sentido, por exemplo, poderia ter essa opção/propriedade no componente RLPreviewSetup...

Atr

Ricardo

Oi @RicardoVoigt eu modifiquei as units em anexo, ( RLPreviewForm.pas e RLSaveDialog.pas )

Com isso o componente RLPreviewSetup passou a ter a propriedade InitialDir do SaveDialog

PropertyNew.png.b68e98028a31bbdc5783577c40920203.png

O RLReport sozinho não tem essa propriedade, apenas se for colocado o componente RLPreviewSetup no form onde esta o RLReport.

Se você julgar que o pessoal do Fortes incorporaria aos fontes, poderia passar para eles ?

No form do ACBr que é responsavel pela impressão do modelo 55 , existe um  RLPreviewSetup ?

Em havendo, então poderia ser chamado diretamente ( não precisaria modificar os fontes ) ou teria que ser criado uma propriedade ?

Obrigado

 

 

SourceInitialDir.zip

Postado

Oi @RicardoVoigt por desconhecer o ACBr posso ter feito a coisa de uma forma mais dificil.

 

Para testar eu coloquei um componente RLPreviewSetup no form ACBrNFeDANFeRL , criei a class procedure SetInitialDir(aValue:string);

As units estão em anexo.

Fiz a reinstalação pelo instalador e correu normal.

Testei pelo exemplo da NFe , tive que dar uses em ACBrNFeDANFeRL e acessei assim :

TfrlDANFeRL(ACBrNFe1.DANFE).SetInitialDir('C:\');

e ao clicar no botão selecionar é direcionado ao ponto.

Se eu colocar as units ACBrNFeDANFeRL.pas e ACBrNFeDANFeRL.dfm no meu projeto isso faria com que essas units é que fossem consideradas na compilação do executável em detrimento das que ficam dentro da pasta Fortes ?

 

ACBrNFeDANFeRL.dfm ACBrNFeDANFeRL.pas

Postado
7 horas atrás, Antonio Carlos L disse:

Com isso o componente RLPreviewSetup passou a ter a propriedade InitialDir do SaveDialog

Ola, legal vc ter "botado a mão na massa"... mas quanto ao Fortes acho q teria q postar la no github pra eles verem... não mexi muito no github ainda, nem sei como faz uma contribuição de código por la...

Eu fiz um outro teste durante o dia e o componente RLPDFFilter tem uma propridade Filename que vc poderia sugerir o caminho e nome do arquivo no Savedialog... porem dentro do AcbrNfeDanfeRl ja tem um componente RLPDFFilter (encapsulado, sem acesso de fora)

Acho que uma propriedade no componente AcbrNfeDanfeRl poderia resolver, repassando o caminha para esta propriedade filename...

Att

Ricardo

  • Solution
Postado

Oi @RicardoVoigt , como também não sei como contribuir com o Fortes pelo GitHub e ficaria na dependência primeiro deles.

Teria uma necessidade posterior do Team do Acbr , isso se entendessem útil, de implementarem no código, então resolvi de uma forma que não precisa da alteração nos repositórios.

Em anexo estão  4 arquivos  que devem ser incluídos na aplicação ( RLPreviewForm.pas , RLSaveDialog.pas ,  ACBrNFeDANFeRL.pas , ACBrNFeDANFeRL.dfm ) .

Testei usando o exemplo da NFe , tive que dar uses em ACBrNFeDANFeRL e acessei assim :

TfrlDANFeRL(ACBrNFe1.DANFE).SetInitialDir('C:\'); 

ACBrNFe1.NotasFiscais.Imprimir;

Para ter certeza de que os componentes estavam no default deles, eu exclui as pastas do Fortes e o ACBr , e instalei do zero pelo instalador.

No exemplo de NFe do ACBr coloquei as units junto aos fontes e adicionei nas uses, build e funcionou.

Desconsiderem as units anteriores pois houve pequenas modificações.

Se entender Ok, pode fechar

 

Lib.zip

Postado
16 horas atrás, Antonio Carlos L disse:

Se entender Ok, pode fechar

Bom dia,

eu ainda acho que a solução para esta ideia podia ser mais simples... 🤨

 

Vou deixar uma "dica" abaixo que talvez te dê outro ponto de vista...

1) considerando que o botão Salvar do "RLPreviewForm" olha a propriedade "...Preview.Pages.Title", e só pega Filename do "filter" se Title estiver vazia, e

2) considerando que os componentes de impressão de DANFe (e outros DA) definem a chave de acesso nesta mesma propriedade Title...

 

No form do seu projeto coloque um componente  "RLPreviewSetup", e no evento "BeforeSave" eu fiz esse código abaixo e "meio que deu certo" 🤨

 

var
  chavedfe : String;
begin

  ShowMessage('ola mundo... BeforeSave!'+sLineBreak +
    (Sender as TRLPreviewForm).Preview.Pages.JobTitle+sLineBreak +
    (Sender as TRLPreviewForm).Preview.Pages.Title);

  chavedfe := Funcoes.somenteNumeros((Sender as TRLPreviewForm).Preview.Pages.Title);
  if (chavedfe = '') then
  begin
    chavedfe := Funcoes.somenteNumeros((Sender as TRLPreviewForm).Preview.Pages.JobTitle);
  end;

  if ValidarChave(chavedfe) then
  begin
    ForceDirectories(DIR_PDF);

    (Sender as TRLPreviewForm).Preview.Pages.Title := '';
    // caso usuário dê um segundo clique no botão SALVAR, Title já está vazia,
    // por isso guardei a chave na JobTitle... :-)
    (Sender as TRLPreviewForm).Preview.Pages.JobTitle := chavedfe;
    Self.RLPDFFilter1.FileName := DIR_PDF + chavedfe;
    // uses RLFilters
    RLFilters.SelectedFilter := Self.RLPDFFilter1;
  end
  else
  begin
    Self.RLPDFFilter1.FileName := '';
  end;

 

Um problema é que poderia haver uma "quebra" no código caso alguma das considerações acima fosse alterada...

Att

Ricardo

  • Curtir 1
  • 2 semanas depois ...
Postado

Oi @RicardoVoigt eu fiz uns testes em cima do que falou mas não deu certo aqui, talvez por inexperiência.

Fiz uma postagem no Issues do Fortes Adição de Nova Propriedade #284 para o Juliomar com as duas units alteradas.

Com a propriedade InitialDir no RLPreviewSetup basta acrescentar ele no mesmo form de onde esta a DANFERL, sem nenhuma mudança no ACBr.

Alimentando a propriedade ao se aperta o botão de selecionar o savedialog vinculado já fica setado e no edit já aparece esse caminho para que o usuario  possa colocar o nome que quiser no arquivo.

Para não atrapalhar eu mantive a mesma logica anterior se não tiver setado InitialDir o edit recebe apenas o nome do arquivo. 

Valeu a ajuda. 

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