QuickStart
Een pagina in Pascal, geserveerd via HTTP
Bouw de pagina, lees de eigenschap HTML, schrijf die naar de respons. Het eerste tabblad is de pagina, het tweede is de server, het derde is het hele consoleprogramma.
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 accepteert een TsgcHTMLSiteLayout: slSidebarLeft, slSidebarRight, slTopNav, slTopNavSidebarLeft, slIconRail of slOffcanvas. De standaardwaarde is slTopNavSidebarLeft, dus de regel hierboven staat er alleen om het omschakelen te laten zien.
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;
De Indy-units zijn voorwaardelijk omdat een build met de aangepaste Indy-bibliotheek ze ziet als sgcIdContext en sgcIdCustomHTTPServer, en een build met standaard Indy als IdContext en IdCustomHTTPServer. De meegeleverde demo bevat precies die voorwaarde. Elke server die een string kan schrijven volstaat. De meegeleverde demo kiest TsgcWSHTTPServer als een Professional-build beschikbaar is en valt anders terug op TIdHTTPServer. Daarom heeft de demo daar een voorwaarde en dit fragment niet.
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.
Een consoletoepassing, dus er is geen formulier en geen VCL om in te stellen. Dat is het kortst mogelijke sgcHTML-programma en het is wat de meegeleverde demo in werkelijkheid is.