Pesquisar na Comunidade
Showing results for tags 'Firemonkey'.
Encontrado 12 registros
-
Olá Pessoal Preciso de ajuda com o componente TACBrTEFAPI - Modelo = tefApiPayGoWeb. O componente TACBrTEFAPI esta gerando Access Violation e Memory Leak quando fecho uma aplicação feita em Firemonkey: para reproduzir o erro basta invocar 3X a chamada dos métodos: TACBrTEFAPI1.Inicializar; ACBrTEFAPI1.DesInicializar; e quando a aplicação e finalizada o seguintes erros vão ocorrer: É importante ressaltar que esse erro não ocorre na VCL, apenas na plataforma FMX. segue um vídeo para auxiliar na demonstração do erro: No anexo Exemplos.7zesta o exemplo escrito em FMX que gera o erro e um VCL que não apresenta o erro: Obrigado pela atenção
- 6 replies
-
- acbrtefapi
- access violation
- (e 3 mais)
-
Como usar o ACBr em Projetos Android FMX
um tópico no fórum postou Daniel Simoes Base de Conhecimento
Como alguns já devem saber, estamos fazendo um imenso trabalho nos fontes do ACBr, para compatibilizar o mesmo com os compiladores Delphi para Linux (POSIX), e Android (NEXTGEN). Essas plataformas, utilizam o Framework, FMX ou FireMonkey. Estou muito impressionado com a facilidade e capacidade do Delphi Rio, em gerar aplicações, Ricas, bonitas e rápidas, para Android... e creio que a FMX, será o futuro do Delphi. A compatibilização com esses novos compiladores, não foi algo trivial, pois infelizmente, eles introduziram grandes modificações na base do Object Pascal. Leia esse artigo, para saber mais sobre essas diferenças... Ok... legal... quero iniciar minhas aplicações em Android com o ACBr... o que devo fazer ? 1 - Informar que o seu projeto está usando FMX Para que o ACBr possa suportar compilação em VCL, FMX, LCL (Lazarus), Windows, Linux, Android... o código do ACBr, recebeu várias modificações com diretivas de compilação (IFDEFs) Para que essas diretivas sejam utilizadas, precisamos sinalizar para o ACBr, que o Projeto em questão, usa a FMX. Isso pode ser feito de duas maneiras: 1.1 - Inserindo uma Diretiva nas opções do Projeto (recomendado) Abra as opções do Projeto, Project -> Options (Shit-Ctrl-F11) Selecione: Building -> Delphi Compiler Em Target selecione All Configurations - All Plataforms Em Conditional Defines, escreva: FMX 1.2 - A segunda forma é modificar o ACBr.inc, ativando a diretiva FMX.. Porém use essa opção com cuidado, pois ela afetará todos os seus projetos, e você terá que comentar a linha novamente, quando for compilar um projeto VCL // Para usar FMX (Firemonkey) Windows / Delphi descomente essa linha {$DEFINE FMX} 2 - Informe o "Unit Scope Names" As novas versões do Delphi, usam notações com Pontos nas Units, como por exemplo: "System.SysUtils" ao invés de apenas "SysUtils". Para que o código fonte do ACBr, permaneça compatível com Delphi 7, não podemos modificar essa nomenclatura... Informar o Unit Scope Names, instruirá o compilador, a onde encontrar as Units com os novos nomes, mesmo usando a nomenclatura antiga... Vá em: Project -> Options -> Building -> Delphi Compiler (mesma tela do passo anterior) e informe os Unit Scopes necessários... exemplo: "System;Xml;Data;Datasnap;Web;Soap" 3 - Certifique-se que o Compilador conhece os Paths dos fontes Projeto ACBr Atualmente, o instalador do ACBr, adiciona automaticamente todos os diretórios dos Fontes do Projeto ACBr, em sua váriável Global, de LibPath dos Compiladores de Win32 e Win64... isso economiza um grande trabalho... Porém o instalador ainda não faz o mesmo, para os compiladores Linux e Android... então precisamos fazer isso manualmente... A maneira mais simples, é copiar os Paths do Compilador Win32 para o Android e Linux... Veja o passo a passo: 3.1 - Acesse: Tools -> Options -> Language -> Delphi -> Library Observe que a primeira Linha mostra o Library Path para Windos 32 bits... Marque toda a Linha e copie: 3.2 - Agora cole o conteúdo em um Editor (NotePad++), e modifique o texto isolando todos os diretórios do ACBr, Fortes Report, e outros que achar interessante... 3.3 - Mude a Plataforma selecionada, no combo box acima, para Android 32 3.4 - Vá ao final da Linha, e Cole o conteúdo, com os diretórios do ACBr (lembre-se de separar os diretórios com ; ) 3.5 - Repita o mesmo para Android 64 e Linux 64 4 - Solicite as permissões que o seu projeto precisará no Android A tela abaixo, é do Demo do ACBrMail para Android, que já disponível no SVN em: "\ACBr\Exemplos\ACBrTCP\ACBrMail\Android" Observe que marcamos a opção para ter acesso a internet, pois isso é necessário nessa aplicação De acordo com as novas políticas de segurança do Android, também será necessário, requisitar essas permissões em tempo de execução... Você pode ver como isso é feito, nos fontes do Demo do ACBrMail. Use a força, leia os fontes, e procure pelo método: function TACBrMailTestForm.PedirPermissoes: Boolean; 5 - Modifique o Deployment, para inserir as bibliotecas necessárias Vá em: Project -> Deployment, e adicione as Bibliotecas do OpenSSL, e substitua as Imagens que achar necessário Veja por exemplo, a tela do Deployment do Demo do ACBrMail Nota sobre as dependências externas do ACBr: OpenSSL e LibXML2 Após algum esforço, conseguimos compilar as bibliotecas do OpenSSL e a LibXML2, para Android em 32 e 64 Bits... e o binário delas já se encontram no SVN, na pasta: \ACBr\DLLs\Android\ Use as versões dinâmicas das bibliotecas, ou seja, os arquivos com extensão .SO Para 32 Bits use a biblioteca com prefixo "ARM" Para 64 Bits use e "AARCH64" Configure o "Remote Path", para ".\assets\internal\", pois é nesse local, que os fontes do ACBr, tentará encontrar as bibliotecas IMPORTANTE: Os arquivos da pasta remota: .\assets\internal\ poderão ser acessados de dentro da aplicação com: TPath.GetDocumentsPath (que na será traduzido para "$(ApplicationPath)\file") Porém, quem faz a copia dos arquivos da pasta de $(APK)\assets\internal\, para a pasta $(ApplicationPath)\file é a Unit System.StartUpCopy, que por padrão, é adicionada no inicio de Todo novo projeto FMX. Exemplo: program Project1; uses System.StartUpCopy, // <-- Olha ela aqui FMX.Forms, Se essa Unit não for adicionada, os arquivos que estão na pasta "assets\internal" do APK, não serão copiados para a pasta "files" de sua aplicação, após a mesma ser iniciada... e como consequencia, você não consegirá acessá-los.. A correção é bem simples.. basta adicionar a System.StartUpCopy, conforme demonstrado acima... Leia também: -
service Problema ao utilizar ACBr como Service Android via Delphi
um tópico no fórum postou moriggi ACBrDiversos
Boa tarde, estou com um problema usando o ACBr para android, estou criando um serviço remoto pelo delphi ACBr, sem o ACBrBase no projeto o service funciona, porém ao adicionar o ACBrBase ele não funciona ele da um erro de null pointer ao rodar o ACBr sem utilizar o service ele funciona normalmente pelo Firemonkey, porém gostaria apenas de um service ACBr em delphi e não uma aplicação inteira, alguem já passou por isso e sabe como usar o ACBr junto com services?? para utilizar o service estamos usando os arquivos (.so) gerados pelo delphi como bibliotecas nativas do android segui este tuto, porém foi possível solucionar o problema -
Emissão NFC-e Mobile - Offline
um tópico no fórum postou Luis Ricardo NFe/NFCe - Nota Fiscal Eletrônica
Boa tarde! Seguinte, estou desenvolvendo um sistema mobile para a emissão de NFC-e. O cenário é o seguinte, o meu cliente precisa da aplicação para realizar vendas fora da empresa, ou seja, ele carrega o caminhão e sai realizando vendas de porta em porta. É necessário que a emissão do NFC-e aconteça, porque é no estado do RN, mas dependendo do local onde ele estiver, não haverá conexão alguma com a internet, talvez uma conexão de 3g, mas nem é bom contar com isso. Até então, consegui resolver tudo pelo tablet, geração, emissão do cupom, tudo de forma offline. Entretanto, agora chegou a hora de colocar o certificado digital no qrcode. A pergunta, eu consigo realmente realizar a emissão de forma offline, ou é necessário de fato estar pareado com um computador? Pergunto porque existem certificados mobile, mas não sei exatamente como funciona. Obrigado. -
Fiz uma aplicacao em firemonkey, e estou usando o ACBRTED, o que ocorre é o seguinte: eu criei 2 label para mostrar a mensagem do operador e do cliente porem no evento ACBrTEFDExibeMsg eu recebo essa mensagem e atualizado o label para mostrar a mensagem recebida ocorre a mensagem é atribuida ao label, porem na tela não aparece a mensagem atualizada, fica mostrando uma mensagem que foi carregada no show do meu form Notei que no exemplo do ACBrTEFD feito em VCL, no evento restaurafocodaAplicacao tem o metodo application.bringtofront, no firemonkey eu coloquei nesse evento: self.bringtofront, não sei se tem algo a haver? Alguem tem alguma luz pra resolver isso? se alguem tiver algum exemplo em firemonkey pra me passar, eu ficarei grato
-
Boa tarde, Ofereço-me para desenvolvimento de aplicativos moveis em Delphi (firemonkey) . Integrações de aplicativos ao seu ERP. Apps como Força de Vendas, Comanda Eletrônica , Representantes Comerciais , App Gerencial , Prospecção de Clientes e muitos outros. Comunicação via servidor Datasnap ou HttpServer (Json/Rest). Contato : [email protected]
-
ACBr X VCL X FIREMONKEY
um tópico no fórum postou Daxxi Tecnologia Ltda. ME Dúvidas Gerais sobre o ACBr
Bom dia, procurei no bolg sobre o tema e não encontrei e como sou novo no desenvolvimento FireMonkey abri esta nova aba. Em nossa empresa, até então, os projetos eram todos baseados em VCL, no entanto estamos migrando alguns projetos para o FireMonkey, porém os componentes do ACBr estão dando erro de compilação por falta de uses ou sentenças não compatíveis entre as duas plataformas gráficas. Verifiquei que existe um arquivo (ACBr.inc) que vc escolhe no momento da compilação dos pacotes o uso de qual plataforma gráfica. Pergunto : Como setar o ACBr ou o projeto para que possamos usar uma plataforma gráfica ou outra (VCL ou FireMonkey) de acordo com o projeto ? -
Alguém possui fontes ou exemplo de consulta cnpj em firemonkey? Estou precisando muito disso, obrigado.
- 5 replies
-
- consulta cnpj
- firemonkey
- (e 1 mais)
-
App Firemonkey fechando do nada
um tópico no fórum postou Turbo Drive Object Pascal - Delphi & Lazarus
Bom dia Tenho um app no qual ele grava os dados diretamente no banco Mysql, usando a conexão com UniDAC. Depois de um certo tempo de uso, coisa de 10 ou 20 min, o app fecha sozinho. O celular não trava, apenas o app fecha do nada. Esse problema ocorre em vários celulares de marcas diferentes, mesmo em aparelhos com memória RAM de 2 GB em diante, e versões diferentes de Android, desde o 5 ao 7. O App tem apenas 4 forms, tamanho final ficou em 36 MB. Verifiquei o consumo de memória dos aparelhos, e o máximo consumido chegou a 86 MB. Alguém teria alguma dica do que poderia estar ocorrendo ? -
Erro ao compilar demo ACBrECF Firemonkey - Delphi Berlin
um tópico no fórum postou sempredrf Dúvidas Gerais sobre o ACBr
Bom dia, ao efetuar a compilação do demo ECFTeste para firemonkey no delphi berlin está dando erro na unit ACBrDevice ao efetuar acesso a function Printer function TACBrDevice.DeduzirTipoPorta(APorta: String): TACBrDeviceType; var UPorta: String; begin UPorta := UpperCase(APorta); if APorta = '*' then Result := dtRawPrinter // usará a impressora default else if (copy(UPorta, 1, 4) = 'TCP:') then Result := dtTCP else if (copy(UPorta, 1, 4) = 'RAW:') then Result := dtRawPrinter else if (RightStr(UPorta,4) = '.TXT') or (copy(UPorta, 1, 5) = 'FILE:') then Result := dtFile else if (copy(UPorta, 1, 3) = 'COM') or {$IFDEF LINUX}(pos('/dev/', APorta) = 1){$ELSE}(copy(APorta,1,4) = '\\.\'){$ENDIF} then Result := dtSerial else if (pos(UPorta,'USB|DLL') > 0) then Result := dtHook else if (Printer.Printers.IndexOf(APorta) >= 0) then Result := dtRawPrinter else begin if pos(PathDelim, APorta) > 0 then Result := dtFile else Result := dtRawPrinter; end; end; [dcc32 Error] ACBrDevice.pas(1011): E2029 '[' expected but '.' found [dcc32 Warning] ACBrDevice.pas(1011): W1023 Comparing signed and unsigned types - widened both operands [dcc32 Error] ACBrDevice.pas(1223): E2003 Undeclared identifier: 'PrinterIndex' Gostaria de saber se tem alguém passando por isso.. ou se existe algo que possa fazer pra evitar esse erro... Grato...- 7 replies
-
- acbrecf
- firemonkey
-
(e 1 mais)
Tags:
-
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
- 29 replies
-
- 1
-
- Firemonkey
- FMX
-
(e 2 mais)
Tags:
-
Bom, depois de muitas horas, consegui colocar para funcionar a função de procurar porta no Firemonkey. Não tive a oportunidade de testar todo o componente, mas pelo que pude verificar a única coisa que impedia ele de funcionar como deveria era o formulário de diálogo do ACBrECF. Então venho aqui trazer as modificações e suas justificativas. Observações Todas as alterações foram testadas em uma impressora DARUMA MACH 2. A versão do Delphi foi XE8 Trial, muito provável alguma coisa ou outra não vá funcionar em XE5-XE2 sem alguma alteração muito pequena.(talvez apenas tipos). Foi adicionado um IFDEF VER290(XE8) , cabe a alguém testar em versões anterior e verificar o funcionamento. Novas USES (Somente FMX) System.Character - Utilizada para conversão em variáveis do tipo CHAR. System.Types - Utilizada para utilização em run-time de variáveis do tipo TRectF em canvas do Firemonkey. System.UIConsts - Utilizada para conversão de variáveis do tipo cor do Firemonkey (TAlphaColor). Problemas Encontrados Não era possível exibir formulários em run-time no firemonkey, apresentava erro de resource, a solução foi utilizar o CreateNew: {$IFNDEF FMX} fsFormMsg := TForm.create( Application ) ; {$ELSE} fsFormMsg := TForm.CreateNew( Application ) ; {$ENDIF} A cor de fundo do formulário não era alterada: fsFormMsg.Fill.Kind := TBrushKind.Solid; As propriedades da fonte como também sua cor não era possível de serem alteradas (foi adicionado uma tarefa por vocês para futuro). Uma observação é que a propriedade "TagStr",é presente em todos os componentes Firemonkey. <b>ACBrECF.pas</b> - Adicionado nova propriedade para cor de fonte apenas para o firemonkey property FormMsgColorFont : TAlphaColor read fsFormMsgColorFont write fsFormMsgColorFont ; //Realiza composição das 3 informações em apenas 1 tag fsFormMsg.TagString := ECF.FormMsgFonte.Size.ToString + ';' + ECF.FormMsgFonte.Family + ';' + AlphaColorToString(ECF.FormMsgColorFont); <b>ACBrECFClass.pas</b> - Depois é desmontada para leitura das informações //Carregando informações da fonte, family e cor with TStringList.Create do try StrictDelimiter := True; Delimiter := ';'; DelimitedText := fsFormMsg.TagString; fsFormMsg.Canvas.Font.Size := Strings[0].ToSingle; fsFormMsg.Canvas.Font.Family := Strings[1]; fsFormMsg.Canvas.Fill.Kind := TBrushKind.None; fsFormMsg.Canvas.Fill.Color := StringToAlphaColor(Strings[2]); finally Free; end; A rotina de desenho não estava adequada para o Firemonkey. fsFormMsg.Width := Round(fsFormMsg.Canvas.TextWidth(Texto)) + 25; fsFormMsg.Height := Round(fsFormMsg.Canvas.TextHeight(Texto))+ 15; Application.ProcessMessages; //Se não adicionar essa linha, o firemonkey não faz a pintura o texto. fsFormMsg.Canvas.BeginScene; //Todo canvas no firemonkey é necessário este bloco de proteção. try fsFormMsg.Canvas.StrokeThickness := 1; //Espessura do pincel. fsFormMsg.Canvas.FillText(TRectF.Create(0, 0, fsFormMsg.Width, fsFormMsg.Height), Texto, True, 100, [], TTextAlign.Center, TTextAlign.Center); finally fsFormMsg.Canvas.EndScene; end; Por ultimo, e não menos importante, a rotina de pressionar a tecla para cancelar o dialogo não estava funcionando, o código informado não atende a situações diversas que o Firemonkey apresenta no OnKeyDown. O Firemonkey quando pressionado por uma tecla que não é dita como especial, a variável KeyChar é preenchida, porem se você utilizar uma tecla como F1 ou ENTER o KeyChar fica em branco, então o Key é preenchido. if (fsFormMsgTeclaParaFechar <> 0) and (fsFormMsgEstado <> fmsAbortado) then begin if (KeyChar <> #0) and (Integer(KeyChar.ToUpper) = fsFormMsgTeclaParaFechar) then fsFormMsgEstado := fmsAbortado else if (Key > 0) and (Key = fsFormMsgTeclaParaFechar) then fsFormMsgEstado := fmsAbortado else begin Key := 0; KeyChar := #0; end; end; ACBrECFClass.pas ACBrECF.pas
- 19 replies
-
- 1
-
- firemonkey
- data lider
- (e 2 mais)