Ir para conteúdo
  • Cadastre-se

dev botao

Gostaria de Propor duas alterações no componente


Solivan
  • Este tópico foi criado há 4188 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Em primeiro lugar boa noite, meus parabens pelos esforços em manter a compatibilidade no ACBr, funciona perfeitamente no DXE

Gostaria de propor algumas alterações aqui, esta primeira apresentou dois pequenos bugs, depois que foi atualizado a suite ACBr, não sei se é coisa de versões do Delphi, se for queira desconsiderar;

class function DFeUtil.FormatarFone(AValue: String): String;

var

lTemp: string;

begin

// Proposta de Italo

AValue := IntToStr(StrToInt64Def(LimpaNumero(AValue), 0));

Result := AValue;

lTemp := '';

if NaoEstaVazio(AValue) then

begin

case length(AValue) of

8: Result := '( )' + copy(AValue, 1, 4) + '-' + copy(AValue, 5, 4);

9: begin

if copy(AValue, 1, 1) = '9' // Celulares da Municipio de São Paulo tem 9 Digitos e o primeiro é 9

then Result := '( )' + copy(AValue, 1, 5) + '-' + copy(AValue, 6, 4)

else begin

ltemp := '0' + copy(AValue, 1, 1);

Result := '(' + lTemp + ')' + copy(AValue, 2, 4) + '-' + copy(AValue, 6, 4);;

end;

end;

else

begin

AValue := Poem_Zeros(AValue, 12);

if (copy(AValue, 1, 1) = '0') and (copy(AValue, 2, 1) = '0')

then begin

ltemp := copy(AValue, 3, 2);

Result := '(' + lTemp + ')' + copy(AValue, 5, 4) + '-' + copy(AValue, 9, 4);;

end

else begin

ltemp := copy(AValue, 2, 2);

Result := '(' + lTemp + ')' + copy(AValue, 4, 5) + '-' + copy(AValue, 9, 4);;

end;

end;

end;

end;

end;

a outra modificações seria substituir o MessageDlg(, por MessageBox( na função da Unit da Classe de Impressora Fiscal quando tenta conectar-se no ECF e o mesmo não responde, então a seguinte mssg aparece Deseja tentar novamente, poderia ser com a api do windows ficaria mais elegante e em português, ao invés de Yes ou No?

function MssgRetentar(cMssg : String) : boolean; { AnsiString exibe carracteres estranhos na mssg }

begin

Result := (MessageBox(Application.Handle, 'Retentar', PChar(cMssg), MB_ICONWARNING or MB_YESNO or MB_TOPMOST) = 6);

end;

function TACBrECFClass.DoOnMsgRetentar( const Mensagem : String;

const Situacao : String = ''): Boolean;

{$IFDEF MSWINDOWS}

Var

UsandoBlockInput : Boolean ;

{$ENDIF}

begin

Result := False ;

{$IFNDEF CONSOLE}

{$IFDEF MSWINDOWS}

UsandoBlockInput := False ;

if fsUsandoBlockInput then

begin

UsandoBlockInput := True ;

BlockInput(False,True);

end ;

{$ENDIF}

{$ENDIF}

if Assigned( fsOnMsgRetentar ) then

fsOnMsgRetentar( ACBrStr(Mensagem), Situacao, Result )

else

begin

{$IFNDEF CONSOLE}

if Retentar and (MssgRetentar( ACBrStr( Mensagem+sLineBreak+sLineBreak + cACBrECFDoOnMsgRetentar ))) then

Result := True ;

{$ENDIF}

end ;

{$IFNDEF CONSOLE}

{$IFDEF MSWINDOWS}

if UsandoBlockInput then

BlockInput(True,False);

{$ENDIF}

{$ENDIF}

end;

Sistema de Automação Comercial para diversos segmentos
NF-e, NFC-e, SPED Fiscal - www.arenasoft.com.br

Link para o comentário
Compartilhar em outros sites

  • Consultores

Sobre sua sugestão número 1:

a) Por que você quer alterar o componente?

B) Qual componente você quer alterar?

c) Em que arquivos suas alterações vão entrar?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

na primeira função está dando erro nas duas linha que estão destacadas em azul, e o arquivo em questão é a Unit ACBrUtil.pas,

a Segunda função se trata da rotina que verifica se a impressora está ligada, e sobre a pergunta se deseja tentar conectar no ECF novamente? que resulta em duas alteranitvas em ingles Yes e No, quando poderia simplemente usar a API do Windows(MessageBox) que acompanha todas as versões do windows, e o arquivo me parece que é o ACBrECFClass.pas....

na Verdade não é uma modificação pra personalizar o componente e sim pra corrigir supostos erros!!!

Obrigado!

Sistema de Automação Comercial para diversos segmentos
NF-e, NFC-e, SPED Fiscal - www.arenasoft.com.br

Link para o comentário
Compartilhar em outros sites

  • Fundadores

MessageBox está descartada... ele é API do Windows, e o ACBrECF é multiplataforma...

para evitar mensagens do Delphi em Ingles você deve traduzir a Unit Conts.pas do Delphi, e deixar uma cópia dela no seu projeto (fazendo o Delphi sobrepor a Unit padrão)

Procure na internet, você já achará essa unit traduzida...

Não compreendi o problema com as linhas:

AValue := Poem_Zeros(AValue, 12);

if (copy(AValue, 1, 1) = '0') and (copy(AValue, 2, 1) = '0')

- Qual o erro ? O que ocorre ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

A função que enviei já está corrigida, a que baixei estava com erro nas duas linhas, eu acho que já foi corrigida pq apaguei a unit, baixei novamente e compilei meu projeto e não constatei mas a ocorrencia de erro.

Obrigado pela atenção!

Sistema de Automação Comercial para diversos segmentos
NF-e, NFC-e, SPED Fiscal - www.arenasoft.com.br

Link para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...