QuickStart
Una pagina in Pascal, servita via HTTP
Costruisci la pagina, leggi la proprietà HTML, scrivila nella risposta. La prima scheda è la pagina, la seconda è il server, la terza è l'intero programma console.
uses
SysUtils, Classes,
sgcHTML_Component_Site;
class function TsgcSiteDemoPages.BuildPage: string;
var
oSite: TsgcHTMLComponent_Site;
begin
oSite := TsgcHTMLComponent_Site.Create(nil);
try
oSite.Title := 'sgcHTML Site Layouts';
oSite.Layout := slSidebarLeft;
oSite.AddMenu('Dashboard', '/');
oSite.AddMenu('Customers', '/?page=customers');
oSite.AddSection('Welcome', '<p>Served from Delphi.</p>');
Result := oSite.HTML;
finally
oSite.Free;
end;
end;
Layout accetta un TsgcHTMLSiteLayout: slSidebarLeft, slSidebarRight, slTopNav, slTopNavSidebarLeft, slIconRail oppure slOffcanvas. Il valore predefinito è slTopNavSidebarLeft, quindi la riga qui sopra serve solo a mostrare come si cambia.
uses
SysUtils, Classes,
sgcWebSocket_Server,
sgcIdContext, sgcIdCustomHTTPServer;
IdContext, IdCustomHTTPServer;
constructor TsgcSiteDemoServer.Create;
begin
inherited Create;
FPort := 8092;
FHTTP := TsgcWSHTTPServer.Create(nil);
FHTTP.Port := FPort;
FHTTP.OnCommandGet := HandleCommandGet;
end;
procedure TsgcSiteDemoServer.Start;
begin
FHTTP.Active := True;
end;
procedure TsgcSiteDemoServer.SendHTML(AResponseInfo: TIdHTTPResponseInfo;
const aHTML: string);
begin
AResponseInfo.ResponseNo := 200;
AResponseInfo.ContentType := 'text/html; charset=utf-8';
AResponseInfo.ContentText := aHTML;
end;
Le unit Indy sono condizionali perché una build con la libreria Indy personalizzata le vede come sgcIdContext e sgcIdCustomHTTPServer, mentre una build su Indy standard come IdContext e IdCustomHTTPServer. La demo inclusa contiene esattamente quella condizione. Va bene qualsiasi server in grado di scrivere una stringa. La demo inclusa sceglie TsgcWSHTTPServer quando è disponibile una build Professional e ripiega su TIdHTTPServer in caso contrario, ed è per questo che la demo ha lì una condizione e questo estratto no.
program sgcSiteDemoServer;
uses
SysUtils,
sgcSiteDemo_Server in 'sgcSiteDemo_Server.pas',
sgcSiteDemo_Pages in 'sgcSiteDemo_Pages.pas';
var
oServer: TsgcSiteDemoServer;
begin
oServer := TsgcSiteDemoServer.Create;
try
oServer.Start;
WriteLn('sgcHTML Site Layouts Demo - http://localhost:' +
IntToStr(oServer.Port));
WriteLn('Press Enter to stop.');
ReadLn;
oServer.Stop;
finally
oServer.Free;
end;
end.
Un'applicazione console, quindi nessun form e nessuna VCL da configurare. È il programma sgcHTML più breve possibile, ed è ciò che è davvero la demo inclusa.