Exemplo de implemetação Pascal (Delphi)

 

Se depois de configurado seu componente via propriedade quiser verificar seu preenchimento, utilize um type para saber de que forma ele foi configurado:

 
  type
  TTipoConfiguracao = (tcViaIni, tcViaPropriedades);   

 

Declare seu componente, visualmene ou por código:

 
  TFrmExemplo = class(TForm)
  CTe: TspdCTe;   

 

Declare uma váriavel global, para definir que tipo de configuração irá utilizar:

 
  private
  fTipoConfiguracao: TTipoConfiguracao;   

 

Inicializaze sua váriavel global, no método que lhe for mais conveniente, no nosso utilizamos o Create do Form.

 
  procedure TFrmExemplo.FormCreate(Sender: TObject);
begin
  fTipoConfiguracao := tcViaIni;
end;   

 

Método de implementação por propriedade, pode ser acionado por qualquer outro método ou por ação externa como um botão:

 
  procedure TFrmExemplo.ConfiguraViaPropriedades;
var
  _VersaoManual: string;
begin
  CTe.NomeCertificado.Text := 'NOME DO CERTIFICADO';
  fTipoConfiguracao := tcViaPropriedades;
  CTe.CNPJ := '01234567890123';
  CTe.UF := 'PR';
  CTe.Ambiente := akHomologacao;

  CTe.VersaoManual := vm300;
  CTe.MappingFileName:= 'MappingCte.txt';
  CTe.ArquivoServidoresHom := 'cteServidoresHom.ini';
  CTe.ArquivoServidoresProd := 'cteServidoresProd.ini';
  CTe.TipoCertificado := ckFile;
  CTe.OnGenerateXMLTomadorServico := CTeGenerateXMLTomadorServico;

  CTe.IgnoreInvalidCertificates := true;
  CTe.MaxSizeLoteEnvio := 500;
  CTe.DiretorioLog := 'Log\';
  CTe.DiretorioTemplates := 'Templates\';
  CTe.ValidarEsquemaAntesEnvio := False;
  CTe.DiretorioEsquemas := 'Esquemas\';

  _VersaoManual:= TspdCTEUtils.VersaoManualToStr(CTe.VersaoManual);
  CTe.DacteSettings.ModeloRetrato := GetActualDir +'Templates\'+_VersaoManual+'\Dacte\Retrato.rtm';
  CTe.DacteSettings.ModeloPaisagem := '';
  CTe.DacteSettings.LogotipoEmitente := GetActualDir +'Templates\'+_VersaoManual+'\Dacte\tecnospeed.jpg';
  CTe.DacteSettings.FraseHomologacao := 'SEM VALOR FISCAL';

  CTe.ModoOperacao := moNormal;  // CTe.ModoOperacao := moFSDA; OU CTe.ModoOperacao := moEPEC; OU CTe.ModoOperacao := moSVC;
end;   

 

Conforme explicado inicialmente a necessidade de se criar um type para verificação de configuração:

 
  
procedure TFrmExemplo.CheckConfig(ClearOutput: Boolean = true);
var
  bConfig : Boolean;
begin

  Application.ProcessMessages;
  bConfig := True;
  if trim(CTe.UF) = '' then
    bConfig := False;
  if trim(CTe.CNPJ) = '' then
    bConfig := False;
  if trim(CTe.NomeCertificado.Text) = '' then
  begin
    if (Trim(CTe.CaminhoCertificado) = '')  or  (Trim(Cte.SenhaCertificado) = '') then
      bConfig := False;
  end;
  if (fTipoConfiguracao = tcViaIni) and (not bConfig) then
    raise Exception.Create('Favor configurar o componente antes de prosseguir (via ini ou via propriedades).');
end;   

 

Exemplo de implementação pela sintáxe Visual Basic

Seguindo a mesma lógica com o exemplo acima, segue implementação da configuração via propriedade, pela sintaxe Visual Basic:

 
  'Carregar configurações por código
Private Sub btnCarregarCodigo_Click()
  On Error GoTo ErroCarregarCodigo
    'Ambiente
    CTe.Ambiente = CTeX.Ambiente.akHomologacao 'Configura Ambiente de Homologacao

    'Configurações globais
    CTe.UF = "PR"       'Configurar UF
    CTe.CNPJ = "01234567890123"   'Configurar O CNPJ
    CTe.TipoCertificado = CTeX.TipoCerticado.ckFileX
    CTe.NomeCertificado = "NOME CERTIFICADO"
    CTe.ArquivoServidoresHom = App.Path + "\cteServidoresHom.ini"
    CTe.ArquivoServidoresProd = App.Path + "\cteServidoresProd.ini"
    
    CTe.VersaoManual = vm300 'Ou as outras versões
    
    CTe.MappingFileName = "MappingCte.txt"
    CTe.DiretorioEsquemas = App.Path + "\Esquemas\"
    CTe.DiretorioTemplates = App.Path + "\Templates\"
    CTe.DiretorioLog = App.Path + "\Log\"
    CTe.MaxSizeLoteEnvio = 500
    CTe.ValidarEsquemaAntesEnvio = False
    CTe.IgnoreInvalidCertificates = True

    'Configurações de impressão
    Select Case CTe.VersaoManual
        Case vm103:  CTe.ImpressaoModeloRetrato = App.Path + "\Templates\1.03\Dacte\Retrato.rtm"
                     CTe.ImpressaoLogoTipoEmitente = App.Path + "\Templates\1.03\Dacte\tecnospeed.jpg"
        Case vm104:  CTe.ImpressaoModeloRetrato = App.Path + "\Templates\1.04\Dacte\Retrato.rtm"
                     CTe.ImpressaoLogoTipoEmitente = App.Path + "\Templates\1.04\Dacte\tecnospeed.jpg"
        Case vm200:  CTe.ImpressaoModeloRetrato = App.Path + "\Templates\2.00\Dacte\Retrato.rtm"
                     CTe.ImpressaoLogoTipoEmitente = App.Path + "\Templates\2.00\Dacte\tecnospeed.jpg"
        Case vm200a: CTe.ImpressaoModeloRetrato = App.Path + "\Templates\2.00a\Dacte\Retrato.rtm"
                     CTe.ImpressaoLogoTipoEmitente = App.Path + "\Templates\2.00a\Dacte\tecnospeed.jpg"
    End Select
 
    CTe.ImpressaoModeloPaisagem = ""
    CTe.ImpressaoFraseHomologacao = "SEM VALOR FISCAL"
    CTe.ModoOperacao = moNormalX ' ou as outras opções, de modo Operação
    
    
ErroCarregarCodigo:
 lblStatus = Err.Description 'Demonstrar a exceção do erro, em algum output visual

 End Sub