Prezados, sou novo no fórum, e estou prestando um serviço pra uma determinada empresa, onde ela está realizando um mini projeto de emissão de NFE no firemonkey, ela anteriormente veio utilizando a VCL + ACBRNFe.
A questão é que no Delphi XE3 ao inserir um componente da ACBR no firemonkey ele nem mesmo compila, então resolvi fazer uma adaptação para que o ACBR funciona-se no FMX. Avaliando o projeto ele não tem nenhum impedimento para funcionar no firemonkey, visto que nada ou quase nada utiliza interface.
O único problema que eu pude visualiza foi em relação a biblioteca ACBRCAPICOM_TLB.PAS onde é utilizado o OleServer.pas que somente existe na VCL. Mas analisando esta biblioteca pode-se verificar que ela somente faz uso das API do Windows, que também podem ser acessadas do firemonkey, escrevi um arquivo chamado FMX.OleServer.Pas e FMX.OleConsts.Pas para fazer a substituição trocando o bloco de código
uses Vcl.OleConst, Vcl.Controls;
Por
uses FMX.OleConst, FMX.Controls, FMX.Types;
E no final do arquivo
initialization
GroupDescendentsWith(TOleServer, Vcl.Controls.TControl);
Por
initialization
GroupDescendentsWith(TOleServer, FMX.Types.TControl);
O segundo problema é que tanto no Delphi XE2 e no Delphi XE3 não existe conditional compilation para determinar se o projeto é proveniente do Firemonkey ou VCL, então a solução encontrada por mim seria utilizar a Conditional Defines disponibilizada nas opções dos projetos, desta forma seria possível o mesmo componente ser utilizado para VCL e Firemonkey sem grandes dificuldades, é claro que deve ser de bom censo de todos que utilizam o componente sem o código fonte, que as DCU compiladas para o FMX não serão utilizadas na VCL e vice-versa.
Os demais arquivos alterados foram:
ACBrCAPICOM_TLB.pas
ACBrDFeUtil.pas
ACBrMSXML2_TLB.pas
ACBrNFe.pas
ACBrNFeDANFEClass.pas
ACBrNFeNotasFiscais.pas
ACBrNFeWebServices.pas
FMX.OleServer.pas
FMX.OleConst.pas
Os seguintes itens foram testados em Delphi XE3 no Windows 8 x64 no ambiente de Homologação:
Pedido de Seleção do Certificado Pela Capicom no repositório do Windows.
Pedido de Status do Servidor
Envio de Nota Fiscal
Vale lembrar que este recurso é somente para o Windows!
Editado em 17/01/2013 - Correção na função GetAppExeName
ACBrNFeUtil.pas
Editado em 17/01/2013 15:30 - Unit PCN forçando uso da VCL no FMX (Corrigido)
pcnNFe.pas
ACBrCAPICOM_TLB.pas
ACBrDFeUtil.pas
ACBrMSXML2_TLB.pas
ACBrNFe.pas
ACBrNFeDANFEClass.pas
ACBrNFeNotasFiscais.pas
ACBrNFeWebServices.pas
FMX.OleServer.pas
FMX.OleConst.pas
ACBrNFeUtil.pas
pcnNFe.pas