none
ACBrX RRS feed

  • Discussão Geral

  • Pessoal, bom dia!

    Estamos prestes a lançar um projeto novo no mercado, então gostaríamos da opinião da comunidade de software de automação comercial, para adequarmos a ideia da melhor forma possível.

    O projeto ACBr possui diversos componentes que ajudam demais os desenvolvedores, porém, seus objetos (POO) estão ao alcance somente de programadores Delphi / Lazarus.

    Assim, com o uso de COM (Component Object Model, modelo padrão de componentes do Windows) via ActiveX, começamos a programar interfaces COM para objetos ACBr e o primeiro componente a estar acessível é o ACBrECF.

    Então, já temos uma DLL ActiveX que, após registrada no Windows, pode ser usada para instanciar um objeto ACBrECF diretamente em seus fontes, com tanto que sua linguagem de programação suporte COM, e são várias as que suportam, entre elas: VB6, VB.NET, C#, Access, Power Builder, xHarbour, Visual FoxPro (depende da versão), Visual DataFlex (depende da versão), entre outras. Basta verificar se sua linguagem de programação possui suporte a COM e como instanciar objetos COM.

    Já programamos inclusive o exemplo ECFTeste, em VB6, e os printscreens podem ser vistos pelos seguintes links:

    http://www.easysoftware.net.br/img/acbrx.acbrecf.01.png
    http://www.easysoftware.net.br/img/acbrx.acbrecf.02.png
    http://www.easysoftware.net.br/img/acbrx.acbrecf.03.png
    http://www.easysoftware.net.br/img/acbrx.acbrecf.04.png

    Quase todos os recursos estão disponíveis, desde eventos até listas de objetos, como por exemplo a propriedade ACBrECF.FormasPagamento. Inclusive, essas listas de objetos possuem suporte a for each, em linguagens como VB6 e C#

    O que não está disponível igual ao Delphi são métodos sobrecarregados e polimorfismo, já que COM não suporta sobrecarga de métodos e polimorfismo. Porém, métodos sobrecarregados como ACBrECF.LeituraMemoriaFiscal, fizemos ACBrX.ACBrECF.LeituraMemoriaFiscalPorData / ACBrX.ACBrECF.LeituraMemoriaFiscalPorReducao, etc. A propriedade ACBrX.ACBrECF.ECF possui apenas os métodos e propriedades da classe básica ACBrECFClass.

    Segue link para versão de avaliação do ACBrX:

    http://easysoftware.net.br/downloads/ACBrX.rar

    Esse arquivo possui o exemplo ECFTeste em VB6.

    Lembrando que a DLL deve ser registrada no Windows. O script "registrar componente.bat" já faz isso. No Windows Vista / 7, é necessário abrir um prompt de comando de administrador para então executar o script.

    Há também o pouco de documentação que fiz. Pretendo adicionar mais descrições aos métodos e eventos que eu conhecer.

    Segue código para instanciar o objeto ACBrX.ACBrECF em C#. O código é bem parecido para VB.NET. Após registrar a DLL no Windows, é necessário adicionar a referência COM ACBrX à solution. Outro detalhe importante é que o projeto deve ter Build para plataforma x86 (e não qualquer CPU).

    using ACBrX;
    using System.Runtime.InteropServices.ComTypes;
    
        public partial class Main : Form, IACBrECFEvents // reparar na implementação da interface IACBrECFEvents
    
            private ACBrX.ACBrECF ACBrECF;
            // variáveis para configuração de eventos
            private int cookie = -1;
            private IConnectionPoint icp = null;
    
            private void CarregarACBrX()
            {
                // instancia o objeto ACBrECF
                ACBrECF = new ACBrECF();
                // configuração de eventos
                // lembrando que é necessário implementar a interdace IACBrECFEvents junto ao form
                IConnectionPointContainer icpc = (IConnectionPointContainer)ACBrECF;
                Guid guid = typeof(IACBrECFEvents).GUID;
                icpc.FindConnectionPoint(ref guid, out icp);
                icp.Advise(this, out cookie);
            }
    
            private void Main_Load(object sender, EventArgs e)
            {
                CarregarACBrX();
            }
    
            private void Main_FormClosing(object sender, FormClosingEventArgs e)
            {
                icp.Unadvise(cookie);
                ACBrECF = null;
            }
    



    EasyTEF Team
    terça-feira, 20 de setembro de 2011 13:55