Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Pessoal, boa tarde!

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.

Essa foi uma explicação técnica sobre o que é o projeto. Agora, vamos colocar qual é nossa ideia de lançamento. Gostaria de colocá-lo para a comunidade num modelo misto, tanto comercial como colaborativo. Comercial porque o trabalho de criar as interfaces COM é MUITO extenso, além de ser usadas técnicas avançadas de programação para, por exemplo, criar as listas de objetos e fazer com que os eventos (ou listeners, gatilhos, delegates, etc.) também estejam acessíveis aos objetos COM.

Colaborativo porque o projeto trará para a comunidade ACBr algo que há muito se aguarda, que é o HELP do componente. A idéia é liberar para a comunidade as estruturas de help pré feitas, tanto em HTML como CHM, para críticas, sugestões, adições, fazendo com que a documentação do ACBr esteja on-line para qualquer um acessar.

Além disso, a comunidade pode criar os exemplos em suas próprias linguagens de programação, assim, a pessoa que criar o ECFTeste em DataFlex, por exemplo, torna-se referência de conhecimento ACBr em sua linguagem, criando oportunidades de negócio em consultoria.

O ACBrX não está sendo desenvolvido para se opor ao ACBr, ou ter funcionalidades a mais, nem a menos. A ideia é fazer com que o ACBr torne-se um conceito que pode ser usado em várias linguagens de programação. Desta forma, tanto programadores Delphi como C#, VB6, etc, estarão falando sobre os mesmos métodos, parâmetros, eventos, listas. Desenvolvedores de várias linguagens poderão tirar suas dúvidas de ACBr nos fóruns e listas de discussão já existentes.

Enfim, o que irei comercializar é apenas nosso trabalho da criação das interfaces COM, que possibilitam acesso aos objetos ACBr diretamente em seus fontes, nada mais.

E agora, a pergunta que não quer calar: O que vocês acham de tudo isso? Aguardo críticas e sugestões. Grande abraço!

P.S. Conversei previamente com o Daniel Simões a respeito e ele não se opõe nem vê problemas no conceito do projeto.

Link para o comentário
Compartilhar em outros sites

Pessoal, bom dia.

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;

        }


Link para o comentário
Compartilhar em outros sites

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