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