QuickStart
Una página en Pascal, servida por HTTP
Construye la página, lee la propiedad HTML y escríbela en la respuesta. La primera pestaña es la página, la segunda es el servidor y la tercera es el programa de consola completo.
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 acepta un TsgcHTMLSiteLayout: slSidebarLeft, slSidebarRight, slTopNav, slTopNavSidebarLeft, slIconRail o slOffcanvas. El valor por defecto es slTopNavSidebarLeft, así que la línea anterior solo está para mostrar el cambio.
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;
Las units de Indy son condicionales porque una compilación con la biblioteca Indy personalizada las ve como sgcIdContext y sgcIdCustomHTTPServer, y una compilación con Indy estándar como IdContext y IdCustomHTTPServer. La demo incluida lleva exactamente ese condicional. Sirve cualquier servidor capaz de escribir una cadena. La demo incluida elige TsgcWSHTTPServer cuando hay una compilación Professional disponible y recurre a TIdHTTPServer en caso contrario, y por eso la demo tiene un condicional ahí y este extracto 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.
Una aplicación de consola, así que no hay formulario ni VCL que configurar. Es el programa sgcHTML más corto posible, y es lo que realmente es la demo incluida.