Jump to content

diadoacbr

Classe que identifica qual componente chamou


Mario Inacio
Go to solution Solved by BigWings,
  • Este tópico foi criado há 418 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde.

Estou alterando a forma de configurar o componente em minha aplicação e estava tentando fazer uma função genérica, mas precisava de classe/função que identificasse o componente que chegou ali.

Da seguinte forma:

procedure CarregaComponente(vComponente: variant);

begin

	   // essa funcao abaixo precisaria identificar o componente que chamou	
       with ClasseQueIdentificaOComponenteQueChamou(vComponente) do begin

               with Configuracoes.Geral do begin   
                  SSLLib                  := TSSLLib(fieldbyname('SSLLib').asInteger);
                  SSLCryptLib             := TSSLCryptLib(fieldbyname('CryptLib').asInteger);   
                  SSLHttpLib              := TSSLHttpLib(fieldbyname('HttpLib').asInteger);   
                  SSLXmlSignLib           := TSSLXmlSignLib(fieldbyname('XmlSign').asInteger);   
                  Salvar                  := True;   
                  ExibirErroSchema        := True;   
                  RetirarAcentos          := True;   
                  FormaEmissao            := TpcnTipoEmissao(fieldbyname('formaemissao').asInteger);   
                  ModeloDF                := TpcnModeloDF(1);   
                  VersaoDF                := TpcnVersaoDF(fieldbyname('versao').asInteger);   
                  IdCSC                   := fieldbyname('idtokenhom').asString;   
                  CSC                     := Trim(fieldbyname('tokenhom').asString);   
                  if fieldbyname('ambiente').asInteger = 0 then begin                //producao   
                     IdCSC                := fieldbyname('idtoken').asString;   
                     CSC                  := fieldbyname('token').asString;   
                  end;   
                  VersaoQRCode            := veqr200;   
               end;   
     end;

end;

 

Teria alguma nesse sentido?

Link to comment
Share on other sites

  • Moderadores
  • Solution

Basta informar como a classe base:

uses ACBrDFe;

procedure CarregaComponente(vComponente: TACBrDFe);

Você pode precisar fazer typecast para algumas propriedades:

if (vComponente is TACBrNFe) then
begin
  TACBrNFe(vComponente).IdCSC := <idCSC>;
  TACBrNFe(vComponente).VersaoQrCode := veqr200;

 

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

Projeto ACBr

 

 

Link to comment
Share on other sites

Ola Big.

Não vou usar apenas NF-e, quero chamar para todos os DF-e e parametrizar em um único local.

Seria assim as chamadas:

 
CarregaComponente(ACBrNfe) ou 
CarregaComponente(ACBRCte) ou
CarregaComponente(AcbrMDfe)
 

Dentro da função CarregaComponente identificaria o componente que chamou e usaria com "with" 

Link to comment
Share on other sites

  • Moderadores

Então é ainda mais simples.

procedure CarregaComponente(vComponente: TACBrNFe);
begin
  vComponente.Configuracoes.Geral.idCSC := <idCSC>;
  vComponente.Configuracoes.Geral.VersaoQrCode := veqr200;
end;

 

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

Projeto ACBr

 

 

Link to comment
Share on other sites

Ola.

Ainda não é assim que imagino, pois o parâmetro dessa função pode ser NFe, CTe ou MDFe.

Deveria ser variant.

procedure CarregaComponente(vComponente: variant);
begin
  vComponente.Configuracoes.Geral.idCSC := <idCSC>;
  vComponente.Configuracoes.Geral.VersaoQrCode := veqr200;
end;

 

Link to comment
Share on other sites

  • Moderadores
3 minutos atrás, Mario Inacio disse:

Ainda não é assim que imagino, pois o parâmetro dessa função pode ser NFe, CTe ou MDFe.

Então use TACBrDFe conforme minha primeira resposta.

4 minutos atrás, Mario Inacio disse:

Deveria ser variant.

Variant é pra tipos básicos, não serve pra classes.

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

Projeto ACBr

 

 

Link to comment
Share on other sites

  • Consultores

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • Este tópico foi criado há 418 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.