Ir para conteúdo
  • Cadastre-se

Classe que identifica qual componente chamou


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

Recommended Posts

  • Membros Pro
Postado

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?

  • Moderadores
  • Solution
Postado

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

 

 

  • Membros Pro
Postado

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" 

  • Moderadores
Postado

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

 

 

  • Membros Pro
Postado

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;

 

  • Moderadores
Postado
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

 

 

  • Membros Pro
Postado

Não tinha me atentado no teu primeiro exemplo no parâmetro do tipo TACBrDFe .

Agora ficou bom e centralizadas todas as configurações.

Obrigado pela ajuda

  • Consultores
Postado

Obrigado por reportar.

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

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
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 !!

  • Este tópico foi criado há 1833 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...
The popup will be closed in 10 segundos...