Sua aplicação desktop Delphi.
Agora no Linux.
Com o FMXLinux instalado, os controles FireMonkey do sgcUI rodam em aplicações desktop reais no Linux64. Os mesmos formulários e o mesmo código que você entrega no Windows e no macOS, com o mesmo visual.
- Delphi
- FireMonkey
- FMXLinux
- Linux64
- Ubuntu 22.04 ou superior
O Linux sempre foi a plataforma mais difícil para quem desenvolve aplicações desktop em Delphi. O compilador gera código para Linux64, mas uma aplicação visual precisa do FireMonkey, e o FireMonkey no Linux precisa do add-on FMXLinux. Até agora o sgcUI oferecia o Linux64 apenas para as partes não visuais: modelos de dados, importação e exportação e renderização sem interface para PNG e SVG.
Isso muda hoje. Com o FMXLinux instalado na IDE, os controles FireMonkey do sgcUI compilam e rodam no Linux64: a grade de dados, os gráficos, os medidores, os dashboards, o planejador, os mapas, os diagramas e o restante da suíte. Todas as capturas de tela deste artigo foram feitas no Ubuntu, a partir dos mesmos projetos de demonstração que rodam no Windows e no macOS.
O sgcUI no Linux64 em um minuto, gravado a partir das demos reais rodando no Ubuntu. Também no YouTube.
Aplicações completas, não apenas controles
A melhor maneira de avaliar uma suíte de UI é olhar para aplicações completas. As demos Suite do sgcUI são exatamente isso: cada uma combina uma dúzia de produtos em um único programa, com navegação, dados ao vivo e várias páginas. Todas elas agora rodam no Linux64, sem nenhuma alteração.
Uma mesa de trading
A demo Markets é alimentada por um simulador que envia cerca de 1.000 atualizações por segundo. A grade de watchlist pisca em vermelho e verde conforme os preços se movem, o gráfico de candlestick traz bandas de Bollinger, médias móveis, volume e painéis de RSI, e um treemap de setores mostra para onde o mercado está indo.
Uma sala de controle de fábrica
A demo Factory é uma HMI para uma linha de engarrafamento. Ela mostra cartões de OEE, um contador de garrafas de sete segmentos, o fluxo de processo da linha com conectores animados, um painel de anunciadores, medidores radiais e lineares e uma tendência ao vivo de doze sensores com limites de alarme.
Fleet, ERP e Project Portfolio
A demo Fleet acompanha 48 veículos em um mapa da Espanha e de Portugal, com rotas, paradas, uma grade de veículos e uma lista de alertas. A demo ERP abre com um dashboard de cartões de KPI, gráficos, um medidor e um mapa de clientes, e segue com páginas de clientes, planejamento, relatórios e análises. A demo Portfolio programa 12 projetos e 520 tarefas em um gráfico de Gantt com o caminho crítico.
O que o sgcUI traz para o desktop Linux
O sgcUI é uma suíte de produtos de UI nativos que compartilham um único núcleo, um único motor de temas e uma única forma de trabalhar. No Linux64, os controles FireMonkey de toda a suíte estão disponíveis:
- sgcGrid: a grade de dados para feeds ao vivo, datasets e tabelas grandes, com ordenação, agrupamento, resumos, linha de filtro, painel de busca e exportação para Excel.
- sgcCharts: vinte e um tipos de série para gráficos de negócios e fluxos ao vivo, de linhas e barras a candlesticks, treemaps e funis.
- sgcGauges: quatorze instrumentos para metas, máquinas e salas de controle.
- sgcDashboard: blocos e cartões de KPI que transformam números em uma tela.
- sgcPlanner: agenda, Gantt e Kanban em um único modelo de dados.
- sgcPivotGrid: tabelas e gráficos dinâmicos com lista de campos.
- sgcMaps: mapas nativos com marcadores, rotas e blocos offline.
- sgcDiagram: um editor de diagramas e layouts que desenham os seus dados.
- sgcNavigation, sgcToolbar, sgcEditors e sgcWizard: a barra lateral, abas, barras de ferramentas, barras de status, controles de entrada e formulários de várias etapas que sustentam uma aplicação.
- sgcSpreadsheet, sgcRichEdit, sgcReports, sgcPDF e sgcChat: planilhas, texto rico, relatórios, documentos PDF e chat dentro da sua aplicação.
A grade merece uma imagem só para ela. Esta é a demo FilterAndFind com 100.000 linhas no Ubuntu, com botões de filtro nos cabeçalhos, uma linha de filtro e a caixa “Ask the grid”. A roda do mouse rola a grade com suavidade e Ctrl+End salta direto para a linha 100.000.
O que você precisa
- Delphi 13, Enterprise ou Architect, que incluem o compilador Linux64.
- O add-on FMXLinux, instalado pelo GetIt. Ele está disponível para clientes Enterprise e Architect com assinatura ativa.
- Uma edição do sgcUI com código-fonte. As units FireMonkey são compiladas para Linux64 junto com o seu projeto.
- Uma máquina Linux, real ou virtual, com PAServer para compilar e depurar a partir da IDE. As aplicações exigem glibc 2.34 ou superior, ou seja, Ubuntu 22.04 ou superior, com GTK3.
O sgcUI no Linux64 foi testado com Delphi 13 e FMXLinux 1.84 no Ubuntu 22.04 e no Ubuntu 24.04.
Crie sua primeira aplicação Linux64
- Instale o FMXLinux pelo GetIt e reinicie a IDE.
- Inicie o PAServer na máquina Linux, crie um perfil de conexão na IDE e importe o SDK do Linux, como em qualquer projeto Delphi Linux64.
- Adicione a pasta
Sourcedo sgcUI ao library path do Linux 64-bit (Tools, Options, Language, Delphi, Library), para que o compilador encontre as units do sgcUI para essa plataforma. - Abra ou crie uma aplicação FireMonkey, adicione a plataforma de destino Linux 64-bit na janela Projects e selecione-a.
- Solte os controles do sgcUI no formulário e execute. A IDE compila o projeto, faz o deploy pelo PAServer e o inicia no desktop Linux.
Não há código específico de Linux para escrever. Este é o código-fonte completo do quick start Hello Grid, um formulário com um TsgcFMXGrid cujas três colunas são definidas no designer:
uses
System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.Forms,
// sgc
sgcGrid_Data, sgcGrid_FMX;
procedure TfrmHelloGrid.FormCreate(Sender: TObject);
begin
{ BeginUpdate / EndUpdate repaint the grid once, after the last row }
Grid.Data.BeginUpdate;
try
{ AppendRow(Key, [City, Country, Population]) }
Grid.Data.AppendRow('Madrid', ['Madrid', 'Spain', 3416771]);
Grid.Data.AppendRow('Paris', ['Paris', 'France', 2102650]);
Grid.Data.AppendRow('Berlin', ['Berlin', 'Germany', 3755251]);
Grid.Data.AppendRow('Rome', ['Rome', 'Italy', 2749031]);
finally
Grid.Data.EndUpdate;
end;
end;
Um gráfico funciona da mesma forma. Um controle TsgcFMXChart desenha um componente TsgcChart, e cada série também é um componente, aqui um TsgcChartSeries_Line. O único código adiciona os pontos:
uses
// sgc
sgcCharts_Chart, sgcCharts_Series, sgcCharts_FMX;
const
CS_VISITS: array [0 .. 6] of Integer = (420, 515, 480, 610, 590, 380, 350);
procedure TfrmHelloChart.FormCreate(Sender: TObject);
var
i: Integer;
begin
{ X is the day, Y the visitors. The chart repaints by itself }
for i := Low(CS_VISITS) to High(CS_VISITS) do
serVisits.AddXY(i + 1, CS_VISITS[i]);
end;
Selecione Windows, macOS ou Linux 64-bit na janela Projects e os mesmos dois formulários rodam em cada uma dessas plataformas.
De um formulário a uma aplicação avançada
As demos Suite acima são construídas com as mesmas peças, e o código-fonte delas acompanha o sgcUI. Estas são as ideias que tornam uma aplicação Linux64 grande fácil de manter:
- Comece por uma demo Suite. ERP, Factory, Fleet, Markets e Portfolio são aplicações completas, com navegação, páginas, temas e um simulador de dados. Escolha a mais próxima do seu projeto e troque o simulador pelos seus dados.
- Projete no designer de formulários. As telas das demos ficam nos arquivos
.fmx, não no código, então o que você vê na IDE no Windows é o que roda no Linux. - Mantenha os dados nos modelos. Todo controle do sgcUI desenha um modelo neutro em relação ao framework: os dados da grade, o gráfico, os dados do planejador, o documento do diagrama. Seu código de negócio conversa com o modelo, então não depende da plataforma nem do framework de UI.
- Agrupe suas atualizações. Em telas ao vivo, envolva rajadas de alterações em
BeginUpdateeEndUpdate, para que o controle seja desenhado uma vez por rajada e não uma vez por valor. - Use um único tema para tudo. Os controles seguem o tema claro ou escuro da aplicação, então uma tela escura de sala de controle como a da demo Factory não exige estilo por controle.
- Renderize também no servidor. Os mesmos modelos renderizam grades, gráficos, medidores e dashboards para PNG e SVG sem janela. Um serviço Linux64 pode gerar as imagens para relatórios, e-mails e endpoints web, e essa parte não precisa de nenhum add-on.
- Teste na distribuição em que você vai implantar. Fontes e gerenciadores de janelas variam entre desktops Linux, então confira as telas finais no sistema de destino.
Experimente agora: 274 demos compiladas para Linux64
Você não precisa de Delphi, de FMXLinux nem de licença para ver o sgcUI rodando no Linux. As demos FireMonkey de todos os produtos, 274 programas no total, estão compiladas para Linux64 e reunidas em um único arquivo:
Baixar sgcUI_bin_linux64.tar.xz
tar -xJf sgcUI_bin_linux64.tar.xz
./run.sh # choose a demo from the list
./run.sh Charts # only the demos of one product
# or start one demo directly
cd Grid/FilterAndFind
GDK_BACKEND=x11 ./FilterAndFindFMX
As demos rodam no Ubuntu 22.04 ou superior e em outras distribuições com glibc 2.34 ou superior e GTK3, em um display X11 ou XWayland. As demos com mapas online também precisam de libcurl e de conexão com a Internet. O README.txt do arquivo traz os detalhes.
Uma base de código, todos os desktops
Windows, macOS e agora Linux64, com os mesmos formulários FireMonkey e os mesmos controles sgcUI. Baixe as demos compiladas e veja-as rodando no seu próprio desktop Linux.
Dúvidas ou comentários? Entre em contato, você receberá a resposta de quem escreveu o código.
