Tu aplicación de escritorio Delphi.
Ahora en Linux.
Con FMXLinux instalado, los controles FireMonkey de sgcUI funcionan en aplicaciones de escritorio reales en Linux64. Los mismos formularios y el mismo código que distribuyes en Windows y macOS, con el mismo aspecto.
- Delphi
- FireMonkey
- FMXLinux
- Linux64
- Ubuntu 22.04 o posterior
Linux siempre ha sido la plataforma difícil para los desarrolladores de escritorio con Delphi. El compilador genera código para Linux64, pero una aplicación visual necesita FireMonkey, y FireMonkey en Linux necesita el complemento FMXLinux. Hasta ahora sgcUI ofrecía Linux64 solo para las partes no visuales: modelos de datos, importación y exportación, y renderizado sin interfaz a PNG y SVG.
Eso cambia hoy. Con FMXLinux instalado en el IDE, los controles FireMonkey de sgcUI se compilan y se ejecutan en Linux64: el grid de datos, los gráficos, los indicadores, los paneles, el planificador, los mapas, los diagramas y el resto de la suite. Todas las capturas de este artículo se tomaron en Ubuntu, a partir de los mismos proyectos de demo que se ejecutan en Windows y macOS.
sgcUI en Linux64 en un minuto, grabado con las demos reales ejecutándose en Ubuntu. También en YouTube.
Aplicaciones completas, no solo controles
La mejor manera de juzgar una suite de UI es ver aplicaciones completas. Las demos de la Suite sgcUI son justo eso: cada una combina una docena de productos en un solo programa con navegación, datos en vivo y varias páginas. Todas funcionan ahora en Linux64, sin cambios.
Una mesa de trading
La demo Markets se alimenta de un simulador que envía unas 1.000 actualizaciones por segundo. El grid de la lista de seguimiento parpadea en rojo y verde según se mueven los precios, el gráfico de velas incluye bandas de Bollinger, medias móviles, volumen y paneles de RSI, y un treemap de sectores muestra hacia dónde va el mercado.
Una sala de control de fábrica
La demo Factory es un HMI para una planta embotelladora. Muestra tarjetas de OEE, un contador de botellas de siete segmentos, el flujo de proceso de la línea con conectores animados, un panel de anunciadores, indicadores radiales y lineales y una tendencia en vivo de doce sensores con límites de alarma.
Flotas, ERP y cartera de proyectos
La demo Fleet sigue 48 vehículos en un mapa de España y Portugal, con rutas, paradas, un grid de vehículos y una lista de alertas. La demo ERP se abre con un panel de tarjetas KPI, gráficos, un indicador y un mapa de clientes, y continúa con páginas de clientes, planificación, informes y analítica. La demo Portfolio planifica 12 proyectos y 520 tareas en un diagrama de Gantt con la ruta crítica.
Lo que sgcUI aporta al escritorio Linux
sgcUI es una suite de productos de UI nativos que comparten un núcleo, un motor de temas y una forma de trabajar. En Linux64 están disponibles los controles FireMonkey de toda la suite:
- sgcGrid: el grid de datos para flujos en vivo, conjuntos de datos y tablas grandes, con ordenación, agrupación, resúmenes, filas de filtro, un panel de búsqueda y exportación a Excel.
- sgcCharts: veintiún tipos de series para gráficos de negocio y flujos en vivo, desde líneas y barras hasta velas, treemaps y embudos.
- sgcGauges: catorce instrumentos para objetivos, máquinas y salas de control.
- sgcDashboard: mosaicos y tarjetas KPI que convierten números en una pantalla.
- sgcPlanner: agenda, Gantt y Kanban sobre un mismo modelo de datos.
- sgcPivotGrid: tablas dinámicas y gráficos dinámicos con una lista de campos.
- sgcMaps: mapas nativos con marcadores, rutas y teselas sin conexión.
- sgcDiagram: un editor de diagramas y disposiciones que dibujan tus datos.
- sgcNavigation, sgcToolbar, sgcEditors y sgcWizard: la barra lateral, las pestañas, las barras de herramientas, las barras de estado, los controles de entrada y los formularios de varios pasos que dan cohesión a una aplicación.
- sgcSpreadsheet, sgcRichEdit, sgcReports, sgcPDF y sgcChat: hojas de cálculo, texto enriquecido, informes, documentos PDF y chat dentro de tu aplicación.
El grid merece su propia imagen. Esta es la demo FilterAndFind con 100.000 filas en Ubuntu, con botones de filtro en las cabeceras, una fila de filtro y el cuadro “Ask the grid”. La rueda del ratón lo desplaza con fluidez y Ctrl+Fin salta directamente a la fila 100.000.
Qué necesitas
- Delphi 13, Enterprise o Architect, que incluyen el compilador de Linux64.
- El complemento FMXLinux, instalado desde GetIt. Está disponible para los clientes de Enterprise y Architect con una suscripción activa.
- Una edición de sgcUI con código fuente. Las unidades FireMonkey se compilan para Linux64 junto con tu proyecto.
- Una máquina Linux, real o virtual, con PAServer para compilar y depurar desde el IDE. Las aplicaciones necesitan glibc 2.34 o posterior, es decir, Ubuntu 22.04 o posterior, con GTK3.
sgcUI en Linux64 se ha probado con Delphi 13 y FMXLinux 1.84 en Ubuntu 22.04 y Ubuntu 24.04.
Crea tu primera aplicación para Linux64
- Instala FMXLinux desde GetIt y reinicia el IDE.
- Inicia PAServer en la máquina Linux, crea un perfil de conexión en el IDE e importa el SDK de Linux, como en cualquier proyecto Delphi para Linux64.
- Añade la carpeta
Sourcede sgcUI a la ruta de biblioteca de Linux de 64 bits (Herramientas, Opciones, Lenguaje, Delphi, Biblioteca), para que el compilador encuentre las unidades de sgcUI para esa plataforma. - Abre o crea una aplicación FireMonkey, añade la plataforma de destino Linux de 64 bits en la ventana Proyectos y selecciónala.
- Coloca los controles de sgcUI en el formulario y ejecuta. El IDE compila el proyecto, lo despliega mediante PAServer y lo inicia en el escritorio Linux.
No hay que escribir código específico de Linux. Este es el código fuente completo del inicio rápido Hello Grid, un formulario con un TsgcFMXGrid cuyas tres columnas se definen en el diseñador:
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;
Un gráfico funciona igual. Un control TsgcFMXChart pinta un componente TsgcChart, y cada serie también es un componente, aquí un TsgcChartSeries_Line. El único código añade los puntos:
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;
Selecciona Windows, macOS o Linux de 64 bits en la ventana Proyectos y los mismos dos formularios se ejecutan en cada una de ellas.
De un formulario a una aplicación avanzada
Las demos de la Suite anteriores están construidas con las mismas piezas, y su código fuente se incluye con sgcUI. Estas son las ideas que hacen manejable una aplicación grande para Linux64:
- Parte de una demo de la Suite. ERP, Factory, Fleet, Markets y Portfolio son aplicaciones completas con navegación, páginas, temas y un simulador de datos. Elige la más cercana a tu proyecto y sustituye el simulador por tus datos.
- Diseña en el diseñador de formularios. Las pantallas de las demos viven en los archivos
.fmx, no en el código, así que lo que ves en el IDE en Windows es lo que se ejecuta en Linux. - Mantén los datos en los modelos. Cada control de sgcUI pinta un modelo independiente del framework: los datos del grid, el gráfico, los datos del planificador, el documento del diagrama. Tu código de negocio habla con el modelo, así que no depende de la plataforma ni del framework de UI.
- Agrupa tus actualizaciones. En las pantallas en vivo, envuelve las ráfagas de cambios en
BeginUpdateyEndUpdate, para que el control se pinte una vez por ráfaga y no una vez por valor. - Usa un único tema para todo. Los controles siguen el tema claro u oscuro de la aplicación, de modo que una pantalla oscura de sala de control como la de la demo Factory no necesita estilos por control.
- Renderiza también en el servidor. Los mismos modelos renderizan grids, gráficos, indicadores y paneles a PNG y SVG sin ventana. Un servicio Linux64 puede generar las imágenes para informes, correos electrónicos y endpoints web, y esta parte no necesita ningún complemento.
- Prueba en la distribución donde despliegas. Las fuentes y los gestores de ventanas cambian entre escritorios Linux, así que revisa las pantallas finales en el sistema de destino.
Pruébalo ahora: 274 demos compiladas para Linux64
No necesitas Delphi, FMXLinux ni una licencia para ver sgcUI funcionando en Linux. Las demos FireMonkey de cada producto, 274 programas en total, están compiladas para Linux64 y empaquetadas en un único archivo:
Descarga 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
Las demos funcionan en Ubuntu 22.04 o posterior y en otras distribuciones con glibc 2.34 o posterior y GTK3, sobre una pantalla X11 o XWayland. Las demos con mapas en línea necesitan además libcurl y conexión a Internet. El archivo README.txt del paquete tiene los detalles.
Una base de código, todos los escritorios
Windows, macOS y ahora Linux64, con los mismos formularios FireMonkey y los mismos controles de sgcUI. Descarga las demos compiladas y compruébalo en tu propio escritorio Linux.
¿Tienes preguntas o comentarios? Ponte en contacto, recibirás respuesta de las personas que escribieron el código.
