QuickStart
Uma página em Pascal, servida por HTTP
Monte a página, leia a propriedade HTML, grave-a na resposta. A primeira aba é a página, a segunda é o servidor, a terceira é o programa de console 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 recebe um TsgcHTMLSiteLayout: slSidebarLeft, slSidebarRight, slTopNav, slTopNavSidebarLeft, slIconRail ou slOffcanvas. O padrão é slTopNavSidebarLeft, então a linha acima só está ali para mostrar a troca.
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;
As units do Indy são condicionais porque uma compilação com a biblioteca Indy personalizada as enxerga como sgcIdContext e sgcIdCustomHTTPServer, e uma compilação com o Indy padrão como IdContext e IdCustomHTTPServer. O demo que acompanha o pacote traz exatamente essa condicional. Qualquer servidor que consiga gravar uma string serve. O demo escolhe TsgcWSHTTPServer quando há uma compilação Professional disponível e recorre a TIdHTTPServer caso contrário, e é por isso que o demo tem uma condicional ali e este trecho não.
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.
Um aplicativo de console, então não há formulário nem VCL para configurar. Esse é o menor programa sgcHTML possível, e é o que o demo que acompanha o pacote realmente é.