Je Delphi-desktopapplicatie.
Nu op Linux.
Met FMXLinux geïnstalleerd draaien de sgcUI FireMonkey-besturingselementen in echte desktopapplicaties op Linux64. Dezelfde formulieren en dezelfde code die je op Windows en macOS uitlevert, met dezelfde uitstraling.
- Delphi
- FireMonkey
- FMXLinux
- Linux64
- Ubuntu 22.04 of nieuwer
Linux was voor Delphi-desktopontwikkelaars altijd het lastige platform. De compiler ondersteunt Linux64, maar een visuele applicatie heeft FireMonkey nodig, en FireMonkey op Linux heeft de FMXLinux add-on nodig. Tot nu toe bood sgcUI Linux64 alleen aan voor de niet-visuele onderdelen: datamodellen, import en export, en headless rendering naar PNG en SVG.
Dat verandert vandaag. Met FMXLinux geïnstalleerd in de IDE compileren en draaien de sgcUI FireMonkey-besturingselementen op Linux64: de datagrid, de grafieken, de metingen, de dashboards, de planner, de kaarten, de diagrammen en de rest van de suite. Elke schermafbeelding in dit artikel is gemaakt op Ubuntu, uit dezelfde demoprojecten die op Windows en macOS draaien.
sgcUI op Linux64 in één minuut, opgenomen met de echte demo's op Ubuntu. Ook op YouTube.
Complete applicaties, niet alleen besturingselementen
De beste manier om een UI-suite te beoordelen is naar complete applicaties kijken. De sgcUI Suite-demo's zijn precies dat: elke demo combineert een dozijn producten in één programma met navigatie, live data en meerdere pagina's. Ze draaien nu allemaal ongewijzigd op Linux64.
Een tradingdesk
De Markets-demo wordt gevoed door een simulator die ongeveer 1.000 updates per seconde verstuurt. De watchlist-grid flitst rood en groen als de koersen bewegen, de candlestick-grafiek toont Bollinger-banden, voortschrijdende gemiddelden, volume en RSI-vensters, en een sector-treemap laat zien waar de markt naartoe gaat.
Een controlekamer voor een fabriek
De Factory-demo is een HMI voor een bottelarij. Hij toont OEE-kaarten, een flessenteller met zeven segmenten, de procesflow van de lijn met geanimeerde verbindingen, een alarmpaneel, radiale en lineaire metingen en een live trend van twaalf sensoren met alarmgrenzen.
Fleet, ERP en Project Portfolio
De Fleet-demo volgt 48 voertuigen op een kaart van Spanje en Portugal, met routes, stops, een voertuiggrid en een lijst met meldingen. De ERP-demo opent met een dashboard met KPI-kaarten, grafieken, een meting en een klantenkaart, en gaat verder met pagina's voor klanten, planning, rapporten en analyses. De Portfolio-demo plant 12 projecten en 520 taken in een Gantt-diagram met het kritieke pad.
Wat sgcUI naar het Linux-bureaublad brengt
sgcUI is een suite van native UI-producten die één kern, één thema-engine en één manier van werken delen. Op Linux64 zijn de FireMonkey-besturingselementen van de hele suite beschikbaar:
- sgcGrid: de datagrid voor live feeds, datasets en grote tabellen, met sorteren, groeperen, samenvattingen, filterrijen, een zoekpaneel en Excel-export.
- sgcCharts: eenentwintig seriestypen voor zakelijke grafieken en live streams, van lijnen en balken tot candlesticks, treemaps en trechters.
- sgcGauges: veertien instrumenten voor doelen, machines en controlekamers.
- sgcDashboard: tegels en KPI-kaarten die cijfers omzetten in een scherm.
- sgcPlanner: planner, Gantt en Kanban op één datamodel.
- sgcPivotGrid: draaitabellen en draaigrafieken met een veldenlijst.
- sgcMaps: native kaarten met markeringen, routes en offline tegels.
- sgcDiagram: een diagrameditor en lay-outs die je data tekenen.
- sgcNavigation, sgcToolbar, sgcEditors en sgcWizard: de zijbalk, tabbladen, werkbalken, statusbalken, invoerelementen en formulieren met meerdere stappen die een applicatie bij elkaar houden.
- sgcSpreadsheet, sgcRichEdit, sgcReports, sgcPDF en sgcChat: spreadsheets, opgemaakte tekst, rapporten, PDF-documenten en chat binnen je applicatie.
De grid verdient een eigen afbeelding. Dit is de FilterAndFind-demo met 100.000 rijen op Ubuntu, met filterknoppen in de koppen, een filterrij en het vak “Vraag het aan de grid”. Het muiswiel scrolt soepel en Ctrl+End springt direct naar rij 100.000.
Wat je nodig hebt
- Delphi 13, Enterprise of Architect, die de Linux64-compiler bevatten.
- De FMXLinux add-on, te installeren via GetIt. Hij is beschikbaar voor Enterprise- en Architect-klanten met een actief abonnement.
- Een sgcUI-editie met broncode. De FireMonkey-units worden samen met je project voor Linux64 gecompileerd.
- Een Linux-machine, fysiek of virtueel, met PAServer om vanuit de IDE te bouwen en te debuggen. De applicaties hebben glibc 2.34 of nieuwer nodig, dus Ubuntu 22.04 of nieuwer, met GTK3.
sgcUI op Linux64 is getest met Delphi 13 en FMXLinux 1.84 op Ubuntu 22.04 en Ubuntu 24.04.
Bouw je eerste Linux64-applicatie
- Installeer FMXLinux via GetIt en herstart de IDE.
- Start PAServer op de Linux-machine, maak een verbindingsprofiel in de IDE en importeer de Linux SDK, zoals bij elk Delphi Linux64-project.
- Voeg de sgcUI-map
Sourcetoe aan het bibliotheekpad voor Linux 64-bit (Tools, Options, Language, Delphi, Library), zodat de compiler de sgcUI-units voor dat platform vindt. - Open of maak een FireMonkey-applicatie, voeg het doelplatform Linux 64-bit toe in het venster Projects en selecteer het.
- Plaats de sgcUI-besturingselementen op het formulier en voer uit. De IDE compileert het project, deployt het via PAServer en start het op het Linux-bureaublad.
Er is geen Linux-specifieke code te schrijven. Dit is de volledige broncode van de Hello Grid-quickstart, een formulier met één TsgcFMXGrid waarvan de drie kolommen in de designer zijn gedefinieerd:
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;
Een grafiek werkt op dezelfde manier. Een TsgcFMXChart-besturingselement tekent een TsgcChart-component, en elke serie is ook een component, hier een TsgcChartSeries_Line. De enige code voegt de punten toe:
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;
Selecteer Windows, macOS of Linux 64-bit in het venster Projects en dezelfde twee formulieren draaien op elk van die platforms.
Van een formulier naar een geavanceerde applicatie
De Suite-demo's hierboven zijn met dezelfde onderdelen gebouwd en hun broncode wordt met sgcUI meegeleverd. Dit zijn de ideeën die een grote Linux64-applicatie beheersbaar maken:
- Begin met een Suite-demo. ERP, Factory, Fleet, Markets en Portfolio zijn complete applicaties met navigatie, pagina's, thema's en een datasimulator. Kies de demo die het dichtst bij je project ligt en vervang de simulator door je eigen data.
- Ontwerp in de formulierdesigner. De demoschermen staan in de
.fmx-bestanden, niet in code, dus wat je in de IDE op Windows ziet, is wat op Linux draait. - Houd de data in de modellen. Elk sgcUI-besturingselement tekent een frameworkneutraal model: de griddata, de grafiek, de plannerdata, het diagramdocument. Je bedrijfslogica praat met het model en is dus niet afhankelijk van het platform of van het UI-framework.
- Bundel je updates. Voor live schermen zet je reeksen wijzigingen tussen
BeginUpdateenEndUpdate, zodat het besturingselement één keer per reeks tekent en niet één keer per waarde. - Gebruik één thema voor alles. De besturingselementen volgen het lichte of donkere thema van de applicatie, dus een donker controlekamerscherm zoals de Factory-demo heeft geen opmaak per besturingselement nodig.
- Render ook op de server. Dezelfde modellen renderen grids, grafieken, metingen en dashboards naar PNG en SVG zonder venster. Een Linux64-service kan de afbeeldingen maken voor rapporten, e-mails en webendpoints, en dit onderdeel heeft geen add-on nodig.
- Test op de distributie waarop je uitlevert. Lettertypen en vensterbeheerders verschillen tussen Linux-bureaubladen, dus controleer de definitieve schermen op het doelsysteem.
Probeer het nu: 274 gecompileerde Linux64-demo's
Je hebt geen Delphi, FMXLinux of licentie nodig om sgcUI op Linux te zien draaien. De FireMonkey-demo's van elk product, in totaal 274 programma's, zijn voor Linux64 gecompileerd en in één archief verpakt:
Download 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
De demo's draaien op Ubuntu 22.04 of nieuwer en op andere distributies met glibc 2.34 of nieuwer en GTK3, op een X11- of XWayland-scherm. De demo's met online kaarten hebben ook libcurl en een internetverbinding nodig. De README.txt in het archief bevat de details.
Eén codebase, elk bureaublad
Windows, macOS en nu Linux64, met dezelfde FireMonkey-formulieren en dezelfde sgcUI-besturingselementen. Download de gecompileerde demo's en zie ze draaien op je eigen Linux-bureaublad.
Vragen of feedback? Neem contact op, je krijgt antwoord van de mensen die de code hebben geschreven.
