Ir para conteúdo
  • Cadastre-se

dev botao

[DICA] Uso simultâneo de VCL e FMX na ACBr


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

Recommended Posts

Atenção para XE2+

Bom, essa semana estamos com necessidade de utilização de dois projetos em ambos ambientes VCL e FMX, enfrentamos alguns problemas de compilação das Unit ACBR, e principalmente versões geradas incorretas porque a SCOPE estava invertida no momento da compilação, então vou adicionar algumas informações para registro e pesquisa de usuários.

Projeto 1 - VCL

Projeto 2 - FMX

Problema 1 - A ACBr.INC é unificada dentro da pasta de fontes do componente ACBrCupom, sempre quando necessário compilar um projeto de cada framework era necessário a troca.

Solução - Excluído o arquivo, e adicionado na pasta dos projetos, cada um com sua definação VCL ou FMX.

------------------------

Problema 2 - Mesmo adicionado essas definições, existe o conflito de Units, eu posso ter "Dialog" para VCL (VCL.Dialog) como também para FMX (FMX.Dialog). Em quanto essa dúvida não for respondida não é possível compilar o projeto, para não ter que alterar todas as units do projeto, é necessário ir em Tools -> Options -> Delphi Options -> Libary e então preencher o campo "Unit scope names:" com o valor padrão, seja ele VCL ou FMX, assim é possível saber de qual dialogo será compilado. Isso gera problemas como compilar units VCL dentro do Firemonkey (sim é isso é possível) e trazer problemas futuros para o projeto, principalmente de você trabalhar como OSX que é o nosso caso, nos enfrentamos fechamento de janelas inexplicáveis por esse motivo.

Solução - Deixar o campo em branco, e definir a Unit scope names no projeto, basta ir em "Project > Options > Delphi Compiler > Unit Scope Names" e então clicar em "..." e adicionar. (Lembrando que isso é armazenado por configuração, o use seja você precisa configurar tanto em Debug como Release).

 

 www.datalider.com.br - [email protected] - Macgayver Armini

 

Link para o comentário
Compartilhar em outros sites

Fiz os ajustes necessários para solucionar isso, nos fontes que você me enviou, pois estava fora do padrão criado por mim para não atingir nada em VCL.

Todas os ajustes que fiz para FMX, sempre viso todas as plataformas suportadas pelo ACBr, e sempre as plataformas já existentes dão prioridade ao que quer que seja novo, dessa forma verá que para VCL, não precisa fazer nada sempre irá funcionar com os ajustes feitos por mim.

Somente para Firemonkey, terá que em Project->Options->Conditional defines e adicionar a sigla "FMX", isso é o suficiente para a compilação ser feita em Firemonkey.

Compare o que enviei e veja como deve ser feito.

  • Curtir 2

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Acho que o Demo do ACBrECF (ECFTeste) para FireMonkey já está no SVN

Somente para Firemonkey, terá que em Project->Options->Conditional defines e adicionar a sigla "FMX", isso é o suficiente para a compilação ser feita em Firemonkey.

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

FireMonkey é ObjectPascal... então provavelmente 95% é igual...

O ACBr é composto em sua maioria por componentes não visuais... então não há muito o que mudar...

Você é um dos pioneiros... Teste, notifique os resultados e ajude na compatibilização...

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

tem como disponibilizar o projeto acbr (firemonkey) para mim, ou ja esta no projeto normal e adcionar somente Project->Options->Conditional defines e adicionar a sigla "FMX" para compilar

Pois to migrando tudo para ele pois tenho alguns clientes que nos solicitou versoes mac osx

 

Não, projetos seus VCL, NÃO basta adicionar a Conditional FMX e compilar e pronto.

Projeto Firemonkey devem ser criados do zero (ou converter prj VCL) e ao adicionar os componentes do ACBr esse projeto Firemonkey deve ter na conditional a sigla "FMX", para que os fontes ACBr sejam compilados para essa plataforma.

  • Curtir 1

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Fiz os ajustes necessários para solucionar isso, nos fontes que você me enviou, pois estava fora do padrão criado por mim para não atingir nada em VCL.

Todas os ajustes que fiz para FMX, sempre viso todas as plataformas suportadas pelo ACBr, e sempre as plataformas já existentes dão prioridade ao que quer que seja novo, dessa forma verá que para VCL, não precisa fazer nada sempre irá funcionar com os ajustes feitos por mim.

Somente para Firemonkey, terá que em Project->Options->Conditional defines e adicionar a sigla "FMX", isso é o suficiente para a compilação ser feita em Firemonkey.

Compare o que enviei e veja como deve ser feito.

Só confirmando, então basicamente quando definindo o conjunto completo, em vez de esperar a compatibilização por parte a IDE já toma a decisão correta?

Versão Correta (Sua Implementação)

  {$IFNDEF NOGUI}
        {$IF DEFINED(VisualCLX)}
          ,QDialogs
        {$ELSEIF DEFINED(FMX)}
          ,FMX.Dialogs, System.UITypes
        {$ELSE}
          ,Dialogs
       {$IFEND}
     {$ENDIF};

Versão Indecisa

,Dialogs

{$IFDEF FMX}
System.UITypes //Sem adicionar o dialog para o FMX, o código fica sem saber quando é vcl ou fmx
{$ENDIF}

Editado por Data Lider

 www.datalider.com.br - [email protected] - Macgayver Armini

 

Link para o comentário
Compartilhar em outros sites

Exato.

Mas lembre-se não estou dizendo que isso irá resolver o problema reportado por você de fechamento inesperado do form, pois se não resolver o problema pode ser outro.

Editado por Isaque Pinheiro
  • Curtir 1

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Exato.

Mas lembre-se não estou dizendo que isso irá resolver o problema reportado por você de fechamento inesperado do form, pois se não resolver o problema pode ser outro.

Obrigado pelo esclarecimento. Esse fechamento, como disse no nosso caso, é porque a versão estava levando algumas units VCL, mas o exemplo não foi o caso da ACBr, e sim uma unit que veio de outro projeto, ai nossa unit scope era em Tools Options, ai acabou acontecendo isso.

Bom ficou tudo claro, acho que da até para fechar o tópico.

Editado por Data Lider
  • Curtir 1

 www.datalider.com.br - [email protected] - Macgayver Armini

 

Link para o comentário
Compartilhar em outros sites

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