ERP
Customers, products, providers and invoicing, with dashboard charts, role-based admin and passkey sign-in.
Open the live demo →Build complete, modern web UIs straight from Delphi, C++ Builder and .NET. sgcHTML is a server-side component framework with 110 ready-made widgets: charts, grids, forms, dashboards, chat and more. Many bind straight to a TDataSet, render to Bootstrap 5 markup and stay interactive through htmx. You write Object Pascal or C#, sgcHTML writes the HTML, CSS and JavaScript.
Customers, products, providers and invoicing, with dashboard charts, role-based admin and passkey sign-in. A 7.7 MB Delphi executable, no DLLs beside it, serving a complete web ERP off SQLite.
A full ERP from one exe
From navigation chrome to data grids, charts, forms, overlays and AI chat: the full Bootstrap 5 vocabulary as native components. Each links to its own page with Delphi, C++ Builder and .NET examples.
NavBar, Sidebar, Breadcrumb, Tabs, Pagination, Toolbar, TreeView, Stepper, Dropdown, ButtonGroup, ListGroup, DashboardLayout, Splitter.
View components →Grid, DataTable, TreeGrid, PivotTable, Calendar, Scheduler, Timeline, ActivityFeed, KanbanBoard, Gantt: sortable, filterable, exportable, dataset-bound.
View components →Chart (Chart.js), CandlestickChart, Gauge, Heatmap, Sparkline, TreeMap, Diagram (SVG flow), Map (Leaflet), QRCode, Barcode: data-driven visuals from your own datasets.
View components →Form, Edit, Memo, CheckBox, RadioGroup, Select, MultiSelect, InputGroup, AutoComplete, DatePicker, TimePicker, ColorPicker, Slider, FileUpload, RichEditor, Rating, SignaturePad, Transfer.
View components →Panel, StatCard, Accordion, Carousel, Image, Avatar, Video, Badge, PDFViewer: cards, media and KPI tiles for dashboards.
View components →Modal, Offcanvas, Popover, Toast, Snackbar, Notification, Spinner, Placeholder, ContextMenu, ProgressBar, JobProgress, LogViewer: dialogs and status surfaces.
View components →ChatBox, Chat (WhatsApp-style), AIChat with provider selector, token streaming and RAG source citations, Presence for live online status.
View components →Login, SocialLogin (OAuth), OAuthCallback, WebAuthnLogin (passkeys), UserManagement, RolesPermissions: ready-made sign-in flows and admin screens.
View components →Gauge, LinearGauge, LED, LEDBar, SegmentDisplay, Odometer, AnalogClock, Compass, VUMeter, Knob, ToggleSwitch, PushButton, NumericStepper, StripChart, Oscilloscope, Annunciator, SCADAPanel. Control room panels kept live by the server, with MQTT binding.
View components →EngineServer, HTMXEngine, PageBuilder, TemplateBootstrap, ThemeController, ThemeBuilder, HTMXFragment, HTMXRouter: the non-visual pieces that serve pages and keep them live.
View components →sgcHTML turns your existing Delphi, C++ Builder or .NET back end into a web application server. Every component is a native class that emits Bootstrap 5 HTML; htmx keeps the page interactive and live without a single line of hand-written JavaScript.
Every widget is a class: TsgcHTMLComponent_Chart, TsgcHTMLComponent_Grid, TsgcHTMLComponent_Form and 86 more. Set its properties, then read its HTML property to get clean, Bootstrap 5 markup ready to serve.
Drop a TsgcHTMLEngine_Server (or wire the HTML to an existing TsgcWebSocketHTTPServer). Requests arrive in your OnCommandGet handler; you answer with a page built from components. No external web stack.
sgcHTML is not tied to the sgcWebSockets server. Serve the same component-built pages from any Embarcadero WebBroker application via TsgcHTMX_Engine_Server_WebBroker, or from a DataSnap server with live WebSocket push on the same port as your REST endpoints.
Add a TsgcHTMX_Engine_Server and clicks, form posts and live updates round-trip to your Pascal/C# event handlers. The server swaps HTML fragments in place. The SPA feel, none of the JavaScript build chain.
Because htmx runs over the sgcWebSockets server, you can push live HTML to every connected browser. Dashboards, monitors and chat windows update the instant your data changes, server-driven, no polling. Where a proxy blocks WebSockets, the same page can receive its updates over server-sent events instead.
TsgcHTMLTemplate_Bootstrap wraps your content in a complete responsive document; TsgcHTMLThemeController and TsgcHTMLThemeBuilder provide light/dark themes and a shared stylesheet. Bootstrap 5.3 and htmx ship embedded: no CDN at runtime.
Grid, DataTable, Chart, Select, TreeView, Scheduler, Timeline and Form bind straight to a TDataSet via LoadFromDataSet / DataSource. Point a component at a query and it renders the rows.
sgcHTML ships built-in UI text (buttons, labels, validation messages) in 17 languages: English, Spanish, French, German, Portuguese, Italian, Dutch, Swedish, Norwegian, Polish, Czech, Turkish, Russian, Chinese, Japanese, Korean and Arabic. Pick one with sgcHTMLSetLanguage and components render in the visitor's language with correct native scripts, including CJK, Cyrillic and Arabic. Right-to-left languages such as Arabic and Hebrew flip the whole page automatically: it renders with dir="rtl", loads Bootstrap's RTL stylesheet and mirrors the sidebar, grid, steppers, chat and the other components, with no code changes.
Every component routes its dynamic text, attributes, inline JavaScript and URLs through automatic HTML, attribute, JavaScript and URL encoding plus URL sanitization (sgcHTMLEncode, sgcHTMLAttrEncode, sgcJSEncode, sgcHTMLSanitizeURL), so user data cannot break out of its context and inject script. XSS and injection protection is on without extra work.
Arabic and Hebrew flip the whole page right-to-left automatically: dir="rtl", Bootstrap's RTL stylesheet and mirrored components, with no code changes.
One page in English, Arabic and Hebrew. Pick Arabic or Hebrew and the whole layout turns right-to-left, from the sidebar to the grid. No code changes, only the language.
Built-in UI text (buttons, labels, validation messages) in English, Spanish, French, German, Portuguese, Italian, Dutch, Swedish, Norwegian, Polish, Czech, Turkish, Russian, Chinese, Japanese, Korean and Arabic. Pick one with sgcHTMLSetLanguage.
The Gantt planner, Chart.js series, gauges, sparklines, tree maps and heat maps are all produced from your Pascal or C# code. You set the data, sgcHTML emits the markup and the client-side wiring.
Users pick dimensions, measures and an aggregation, and the cross-tab is rebuilt from a TFDQuery. There is no REST layer in between, the page reads the database directly in-process.
Every component renders responsive Bootstrap 5 markup, so the warehouse terminal layout is the same component library at a phone width, not a separate mobile codebase.
Every addition is off until you use it, so a page that does not use one renders exactly as before. The full list is in the feature matrix.
An MCP tool answers with a page instead of text, built from the same components you use for any web page and rendered by ChatGPT, Claude and VS Code. Needs the Enterprise or All-Access edition, or the sgcAI pack. See MCPApp.
Describe a page or hand the designer a screenshot, and it builds the page out of your own components. It answers from a schema built from your registry, so it cannot name a class you did not offer, and nothing is applied until you accept it. It needs the AI units of the Enterprise or All-Access edition, or the sgcAI pack. Read the guide.
The list, search, paging, form, delete and write path of one table as a single component, over a dataset or over your own SQL. An IDE wizard creates it. See CRUD.
A question in plain language becomes filters, sorts, groupings and highlights, validated against your own columns before anything is applied. It works with no API key through a built-in parser, and with seven providers when the AI units are in your edition. See AIAssistant.
Server-sent events for networks that block WebSockets, Web Push for a browser that is not running, a notification inbox and a preferences table. Web Push needs the Enterprise or All-Access edition. See WebPush.
Cookie sessions, CSRF tokens, login throttling and route protection by role. Path parameters and method filters on routes, single page navigation from the page template, and helpers to test the markup you produce. See Auth.
If you build ASP.NET Core MVC or Razor Pages applications the Telerik or DevExpress way, sgcHTML now speaks the same language. Tag Helpers such as <sgc-grid>, <sgc-form>, <sgc-dialog> and <sgc-chart>, and their fluent twins under Html.Sgc(), render server side Bootstrap 5 HTML and talk to your controllers over htmx. There is no JavaScript framework to learn and no JSON data source to write. The Razor layer ships in the esegece.sgcHTML.AspNetCore NuGet package, the Community edition included.
<sgc-grid> pages, sorts, filters (text and range), searches and exports to XLSX and PDF on the server. The controller answers with this.SgcGrid(request, query), and EF Core turns every click into parameterised SQL. push-url keeps the page, sort and filters in the address bar, so reload and the back button work.
<sgc-textbox>, <sgc-select>, <sgc-datepicker>, <sgc-checkbox> and <sgc-autocomplete> bind to your model with asp-for and show the ModelState errors under each input. <sgc-form hx="true"> posts over htmx, and this.SgcRedirect(url) navigates after a valid save.
Any element with sgc-dialog="name" loads its URL into an <sgc-dialog>. After a valid post, this.SgcCloseDialog("edit-order", refresh: "orders") closes the dialog and reloads the grid, the popup editing pattern with no script of your own.
<sgc-chart> renders static data, polls an action with refresh-every="5s", or goes live="true": a background service calls hub.BroadcastChartAsync(...) and every open browser redraws over the sgcHTML WebSocket. Telerik and DevExpress charts need SignalR plumbing for server push, sgcHTML has it built in.
@* Views/Orders/Index.cshtml, page 1 renders inline from the model *@
@model IQueryable<OrderRow>
<sgc-grid name="orders" key="Id" items="Model"
asp-action="Read" asp-export-action="Export" export="xlsx,pdf"
page-size="15" sortable="true" filterable="true"
searchable="true" push-url="true">
<sgc-column field="Reference" searchable="true" />
<sgc-column field="Customer" searchable="true" />
<sgc-column field="OrderDate" title="Date" format="{0:yyyy-MM-dd}" filter="range" />
<sgc-column field="Total" format="{0:N2}" align="right" filter="range" />
<sgc-column field="Paid" />
</sgc-grid>
// Program.cs
builder.Services.AddControllersWithViews();
builder.Services.AddSgcHtml(o => o.ServeRootPage = false); // the MVC app owns "/"
builder.Services.AddSgcHtmlRazor(); // SgcDataRequest binder, grid state, /sgcHTML.css
// ...
app.UseWebSockets(); // before UseSgcHtml, needed by live charts
app.UseSgcHtml();
app.MapDefaultControllerRoute();
// Controllers/OrdersController.cs
public class OrdersController : Controller
{
private readonly ShopDb FDb;
public OrdersController(ShopDb db) { FDb = db; }
// An IQueryable projection: EF Core turns paging, sort and filters into SQL.
private IQueryable<OrderRow> Rows() =>
FDb.Orders.AsNoTracking().Select(o => new OrderRow
{
Id = o.Id, Reference = o.Reference, Customer = o.Customer.Name,
OrderDate = o.OrderDate, Total = o.Total, Paid = o.Paid
});
public IActionResult Index() => View(Rows());
// Every page, sort, filter and search click of the grid lands here.
public IActionResult Read(SgcDataRequest request) => this.SgcGrid(request, Rows());
// The toolbar export links: the filtered and sorted rows as XLSX or PDF.
public IActionResult Export(SgcDataRequest request) =>
this.SgcGridExport(request, Rows(), "orders");
}
@* The same grid with the fluent builder, the twin of Html.Kendo().Grid<T>() *@
@(Html.Sgc().Grid<OrderRow>("orders")
.Key(o => o.Id)
.Columns(c =>
{
c.Bound(o => o.Reference).Searchable();
c.Bound(o => o.Customer).Searchable();
c.Bound(o => o.OrderDate).Title("Date").Format("{0:yyyy-MM-dd}").Filter(SgcGridFilterKind.Range);
c.Bound(o => o.Total).Format("{0:N2}").Align("right").Filter(SgcGridFilterKind.Range);
c.Bound(o => o.Paid);
})
.Items(Model)
.Read("Read")
.Export(SgcExportFormat.Xlsx, SgcExportFormat.Pdf)
.ExportAction("Export")
.Pageable(15)
.Sortable().Filterable().Searchable().PushUrl())
@* _Layout.cshtml: live="ws" opens the WebSocket that live charts listen to *@
<sgc-scripts live="ws" />
@* The view *@
<sgc-chart name="live-orders" type="line" height="260" live="true">
<sgc-series name="Orders / s" data="new double[] { 0 }" color="#dc3545" />
</sgc-chart>
// builder.Services.AddHostedService<LiveSalesFeed>();
public sealed class LiveSalesFeed : BackgroundService
{
private readonly ISgcHtmlHub FHub;
private readonly Queue<string> FLabels = new Queue<string>();
private readonly Queue<double> FValues = new Queue<double>();
public LiveSalesFeed(ISgcHtmlHub hub) { FHub = hub; }
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var oRandom = new Random();
while (!stoppingToken.IsCancellationRequested)
{
await Task.Delay(1000, stoppingToken);
FLabels.Enqueue(DateTime.Now.ToString("HH:mm:ss"));
FValues.Enqueue(oRandom.Next(0, 20));
if (FValues.Count > 20) { FLabels.Dequeue(); FValues.Dequeue(); }
// One WebSocket message redraws the chart in every open browser.
await FHub.BroadcastChartAsync("live-orders", FLabels.ToArray(),
new SgcChartSeries("Orders / s", FValues.ToArray(), "#dc3545"));
}
}
}
Coming from Telerik UI for ASP.NET Core or DevExpress? [DataSourceRequest] becomes SgcDataRequest, ToDataSourceResult becomes this.SgcGrid(request, query) (or query.ToSgcDataResult(request) for the data only), and Html.Kendo().TextBoxFor(m => m.X) becomes Html.Sgc().TextBoxFor(m => m.X). The runnable MVC demo, 22.RazorMvc, is the Telerik orders sample written with sgcHTML over EF Core.
Start an HTTP server, attach the htmx engine, and answer requests with a page built from components. The same API in Delphi, C++ Builder and .NET.
uses
sgcWebSocket_Server, sgcHTMX_Engine_Server,
sgcHTML_Template_Bootstrap, sgcHTML_Component_Chart;
// 1. Start a server and attach the htmx engine
FServer := TsgcWSHTTPServer.Create(nil);
FServer.Port := 8080;
FServer.OnCommandGet := HandleGet;
FHTMX := TsgcHTMX_Engine_Server.Create(nil);
FHTMX.Server := FServer; // realtime htmx over WebSocket
FServer.Active := True;
// 2. Build the page from components
function TForm1.BuildDashboard: string;
var
oChart: TsgcHTMLComponent_Chart;
oPage: TsgcHTMLTemplate_Bootstrap;
begin
oChart := TsgcHTMLComponent_Chart.Create(nil);
oPage := TsgcHTMLTemplate_Bootstrap.Create(nil);
try
oChart.ChartType := ctBar;
oChart.AddLabel('Q1'); oChart.AddLabel('Q2'); oChart.AddLabel('Q3');
oChart.AddDataset('Revenue', [1200, 1900, 1500],
'#7C3AED', 'rgba(124,58,237,.25)', True);
oPage.Title := 'Dashboard';
oPage.BodyContent := oChart.HTML; // component -> HTML
Result := oPage.GetHTML; // full Bootstrap document
finally
oPage.Free;
oChart.Free;
end;
end;
// includes: sgcWebSocket_Server.hpp, sgcHTMX_Engine_Server.hpp,
// sgcHTML_Template_Bootstrap.hpp, sgcHTML_Component_Chart.hpp
// 1. Start a server and attach the htmx engine
FServer = new TsgcWSHTTPServer(this);
FServer->Port = 8080;
FServer->OnCommandGet = HandleGet;
FHTMX = new TsgcHTMX_Engine_Server(this);
FHTMX->Server = FServer; // realtime htmx over WebSocket
FServer->Active = true;
// 2. Build the page from components
String __fastcall TForm1::BuildDashboard()
{
TsgcHTMLComponent_Chart *oChart = new TsgcHTMLComponent_Chart(NULL);
TsgcHTMLTemplate_Bootstrap *oPage = new TsgcHTMLTemplate_Bootstrap(NULL);
try
{
oChart->ChartType = ctBar;
oChart->AddLabel("Q1"); oChart->AddLabel("Q2"); oChart->AddLabel("Q3");
oChart->AddDataset("Revenue", OPENARRAY(double, (1200, 1900, 1500)),
"#7C3AED", "rgba(124,58,237,.25)", true);
oPage->Title = "Dashboard";
oPage->BodyContent = oChart->HTML; // component -> HTML
return oPage->GetHTML(); // full Bootstrap document
}
__finally
{
delete oPage;
delete oChart;
}
}
using esegece.sgcWebSockets;
// 1. Start a server and attach the htmx engine
var server = new TsgcWebSocketHTTPServer();
server.Port = 8080;
server.OnCommandGet += HandleGet;
var htmx = new TsgcHTMX_Engine_Server();
htmx.Server = server; // realtime htmx over WebSocket
server.Active = true;
// 2. Build the page from components
string BuildDashboard()
{
var chart = new TsgcHTMLComponent_Chart();
chart.ChartType = TsgcHTMLChartType.ctBar;
chart.AddLabel("Q1"); chart.AddLabel("Q2"); chart.AddLabel("Q3");
chart.AddDataset("Revenue", new double[] { 1200, 1900, 1500 },
"#7C3AED", "rgba(124,58,237,.25)", true);
var page = new TsgcHTMLTemplate_Bootstrap();
page.Title = "Dashboard";
page.BodyContent = chart.HTML; // component -> HTML
return page.GetHTML(); // full Bootstrap document
}
Build a complete web UI from Delphi with server-side components, Bootstrap 5 markup and htmx, with no JavaScript build step.
Reach for ready-made components when you want a widget in one line, or drop to the node layer when you need full control over the markup.
The 110 TsgcHTMLComponent_* widgets. Configure properties, optionally bind a dataset, read HTML. Many also expose a static Build(...) helper for one-line inline use.
Primitives like TsgcHTMLContainer (with a Void flag for self-closing tags), TsgcHTMLCard, TsgcHTMLForm, TsgcHTMLField, TsgcHTMLButton and TsgcHTMLTable compose into any layout, then render with TsgcHTMLTemplate_Bootstrap. The node set also includes Bootstrap building blocks such as TsgcHTMLModal, TsgcHTMLOffcanvas, TsgcHTMLAccordion, TsgcHTMLCarousel, TsgcHTMLToast, TsgcHTMLProgress, TsgcHTMLSpinner, TsgcHTMLListGroupNode, TsgcHTMLInputGroup, TsgcHTMLButtonGroupNode, TsgcHTMLRadio, TsgcHTMLBreadcrumb, TsgcHTMLNavbarNode and TsgcHTMLImage.
TsgcHTMLPageBuilder with its design-time editor lets you assemble pages in the IDE, while TsgcHTMLThemeController manages light/dark theming across the whole app.
| Target | Details |
|---|---|
| Delphi 7 to 13 | Delphi 7, 2007, 2009, 2010, XE through XE8, 10 Seattle through 10.4 Sydney, 11 Alexandria, 12 Athens and 13 Florence. Windows, macOS and Linux are all supported. |
| C++ Builder | C++ Builder (matching versions) |
| .NET | .NET 8, .NET 9, .NET 10, .NET Standard 2.0, on Windows, Linux and macOS hosts, with ASP.NET Core Razor Tag Helpers. |
| Hosting | The sgcWebSockets HTTP server, any WebBroker application, a DataSnap server or ASP.NET Core. |
| Browser | Bootstrap 5 and htmx assets embedded. No CDN required at runtime. |
sgcHTML is a server-side library: the phone receives HTML over the network, so Android and iOS are not build targets.
Every screen below is a Delphi application serving its own HTML through sgcHTML. No JavaScript build step, no separate front-end project. Sign in with the credentials already filled in on each login page.
Customers, products, providers and invoicing, with dashboard charts, role-based admin and passkey sign-in.
Open the live demo →
Dashboards, a report catalogue, an ad-hoc pivot builder and an explore view over 27,000 order lines, queried in-process.
Open the live demo →
A touch till with categories, promotions, parked sales, shift handling and a live customer display.
Open the live demo →
Inbound, outbound, stock on hand, movements and cycle counts, plus a handheld terminal layout for scanners.
Open the live demo →
A dispatch board, Gantt planner and live technician map for scheduling engineers and jobs.
Open the live demo →
Search-as-you-type, inline add and edit, and delete, all swapped in as htmx fragments with no page reload.
Open the live demo →
Server metrics pushed over WebSocket into out-of-band htmx fragments, updating KPI cards and charts in real time.
Open the live demo →
One page in English, Arabic and Hebrew. Pick Arabic or Hebrew and the whole layout turns right-to-left, from the sidebar to the grid. No code changes, only the language.
Open the live demo →
A self-service area where customers see their own orders, profile and support tickets behind a login.
Open the live demo →
A public marketing site, pricing page and signup flow in front of a per-tenant isolated control plane.
Open the live demo →A data grid, a pivot table and a form driven by plain language: filters, sorts and groupings over 26,000 order lines, an AI column assistant and smart paste. Runs without an API key.
Open the live demo →A storefront built entirely from sgcHTML components, with a floating chat assistant whose answers are grounded in the product catalog. The online version needs no LLM API key.
Open the live demo →A Delphi application rendered inside ChatGPT, Claude or VS Code: MCP tools return sgcHTML pages that the host displays, and their buttons keep working there.
Open the live demo →A control room for a simulated boiler loop: gauges, displays, operator controls, strip charts and an oscilloscope kept live by the server, with no polling.
Open the live demo →A cooling water plant mimic with tanks, valves, pumps and animated flow, plus gauges, a strip chart and alarms, all driven by MQTT. Online it runs a simulated plant.
Open the live demo →Every clip is a screen recording of one of these applications actually running, narrated and captioned. Nothing downloads until you press play.
A tour of the 110 components, from grids and charts to Kanban boards and signature pads.
Sorting, filtering, paging, inline edit, selection and dataset binding, all driven from Pascal.
How a fragment swap replaces a page reload, and what that looks like in your Delphi code.
Server metrics pushed into out-of-band fragments, updating cards and charts as they change.
The point-of-sale demo reading the database in-process, with no JSON API in the middle.
Dashboards, a pivot builder and an explore view over 27,000 order lines.
The warehouse demo, counting up the component library it leans on screen by screen.
The same application on a desktop board and a phone, staying in sync.
One binary, one database, strict per-tenant separation, demonstrated rather than asserted.
Self-service orders, profile and support tickets behind a login.
Search-as-you-type, inline add and edit, and delete, swapped in as htmx fragments.
Registration, ticket threads and status changes, all server-rendered.
A shop assistant answering from the product catalogue rather than inventing an answer.
Navigation, sidebars and page composition built from the Site component.
Adding sgcHTML output to an existing Delphi WebBroker application.
Serving a modern front end from a service layer you already have.
All licenses include full source code, 1 year of updates, and 70% renewal discount.
Includes sgcWebSockets Core
1 Year Updates
.NET Framework, .NET Core and .NET 5+ (NuGet)
1 Year Updates
We build your web application for you.
Three one-time packages
With sgcCustomization HTML you describe the application you need and the eSeGeCe team builds it for you with the sgcHTML + sgcWebSockets components.
sgcHTML is a standalone component pack. The price above already includes the sgcWebSockets Core runtime it is built on, so there is nothing else to add to your order.
Already have a web application built with IntraWeb, uniGUI, TMS WEB Core, Elevate Web Builder or D2Bridge? Step-by-step guides walk you through moving it to sgcHTML, with a concept mapping for each framework. There is also a migration assistance form if you want our team to help plan or do the move.
Open the Migration Guides →Serve the same component-built pages from any Embarcadero WebBroker application, or from a DataSnap server with live WebSocket push on the same port as your REST endpoints.
WebBroker & DataSnap hosting →With sgcCustomization HTML you describe the application you need and the eSeGeCe team builds it for you with the sgcHTML + sgcWebSockets components. Three one-time packages from €149, and you receive a complete project you can compile, extend and restyle with your licensed components.
Discover sgcCustomization HTML →sgcHTML is bundled inside the sgcWebSockets All-Access trial. One installer, both products.
Trial version works for a limited time on a single workstation. Includes all sgcHTML components.
Download the trial →No. The library emits Bootstrap 5 markup and htmx attributes, and htmx is what makes a button post back and swap part of the page without a reload. You describe the interaction in Pascal and the attributes are generated for you. You can still add your own script when you want to, through CustomHead and BodyEndHTML.
You write it to an HTTP response yourself. HTML is a plain string property, so any server will do. The shipped demo uses TsgcWSHTTPServer on a Professional build and falls back to TIdHTTPServer otherwise, sets ResponseNo := 200 and ContentType := 'text/html; charset=utf-8', and assigns the string to ContentText.
TsgcHTMLComponent_Site, from the unit sgcHTML_Component_Site.pas. It renders a complete page shell, so you get navigation, a sidebar, a theme and a content area without assembling them yourself. Build it, call AddMenu and AddContent or AddSection, then read the HTML property. The shipped Site demo does exactly that.
When you build the page as nodes, yes, because the node writes the text and escapes it. The risk appears when you bypass the nodes and concatenate markup yourself, for example through AddContent with a string you built from user input. Prefer the node units for anything that carries user data.
No, and that is deliberate. SGC_HTML is defined on line 885 inside {$IFNDEF ANDROID} at line 883 and {$IFNDEF IOS} at line 884, so on those targets every sgcHTML unit compiles to an empty unit. It is a server-side library: the phone receives HTML over the network, which is why the mobile target does not need the renderer. Windows, macOS and Linux are all supported.
The download ships more than fifteen runtime demos under Demos\60.HTML\01.RunTime, including an ERP dashboard, a helpdesk, a point of sale, a warehouse, a reports app and a field service app. The gallery has a short video of each.
Start an HTTP server, attach the htmx engine, and answer requests with a page built from components.
Quick Start →The Getting Started guide: design a page on a VCL form, run Delphi code from Surface actions, and follow the six QuickStart demos.
Getting Started guide (PDF) →Pair sgcHTML with our other Delphi, C++ Builder and .NET component libraries.
Enterprise WebSocket, HTTP/2, MQTT, AMQP, WebRTC and AI/LLM components. Add realtime messaging and the full networking stack to your sgcHTML application.
Learn more →QUIC and HTTP/3 client and server components for Delphi, C++ Builder and .NET. Serve sgcHTML's rendered UI over HTTP/3 for lower-latency page loads on lossy networks.
Learn more →Full WebRTC media engine for Delphi and C++ Builder: audio/video calls, data channels and screen share. An add-on for sgcWebSockets Enterprise.
Learn more →Enterprise digital signatures: XAdES, PAdES, CAdES and ASiC with 10 key providers and 21 EU country profiles.
Learn more →OpenAPI 3.0 parser and SDK generator. Turn any OpenAPI spec into a strongly-typed Delphi client in seconds.
Learn more →Native Windows Hello, fingerprint and Windows Biometric Framework components for Delphi and C++ Builder.
Learn more →Updated Indy TCP/IP components with modern TLS, IPv6 and HTTP/2 support for Delphi 7 through 13.
Learn more →15 AI, LLM and MCP components for Delphi and C++ Builder. One chat component reaches OpenAI, Anthropic, Gemini, DeepSeek, Ollama, Grok and Mistral. Standalone, the sgcWebSockets Core runtime is bundled in.
Learn more →MQTT 3.1.1 and 5.0, AMQP 0.9.1, AMQP 1.0, Apache Kafka and STOMP client components for Delphi and C++ Builder. Standalone, the sgcWebSockets Core runtime is bundled in.
Learn more →General-purpose cryptography library for Delphi and C++ Builder: symmetric and asymmetric ciphers, hashing and post-quantum algorithms. Ships free from sgcWebSockets Standard up.
Learn more →WhatsApp Business Cloud API and Telegram TDLib clients. Standalone, the sgcWebSockets Core runtime is included.
Learn more →