Ir para conteúdo
  • Cadastre-se

dev botao

Classe que identifica qual componente chamou


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

Recommended Posts

  • Membros Pro

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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

  • Membros Pro

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 para o comentário
Compartilhar em outros sites

  • Membros Pro

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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

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