QuickStart
Eine Seite in Pascal, über HTTP ausgeliefert
Baue die Seite, lies die Eigenschaft HTML, schreibe sie in die Antwort. Der erste Tab zeigt die Seite, der zweite den Server, der dritte das gesamte Konsolenprogramm.
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 nimmt ein TsgcHTMLSiteLayout entgegen: slSidebarLeft, slSidebarRight, slTopNav, slTopNavSidebarLeft, slIconRail oder slOffcanvas. Der Standardwert ist slTopNavSidebarLeft, die obige Zeile dient also nur dazu, den Wechsel zu zeigen.
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;
Die Indy-Units sind bedingt eingebunden, weil ein Build mit der benutzerdefinierten Indy-Bibliothek sie als sgcIdContext und sgcIdCustomHTTPServer sieht und ein Build mit dem Standard-Indy als IdContext und IdCustomHTTPServer. Die mitgelieferte Demo enthält genau diese Bedingung. Jeder Server, der einen String schreiben kann, genügt. Die mitgelieferte Demo wählt TsgcWSHTTPServer, wenn ein Professional-Build verfügbar ist, und greift sonst auf TIdHTTPServer zurück, weshalb die Demo dort eine Bedingung enthält und dieser Auszug nicht.
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.
Eine Konsolenanwendung, also ohne Formular und ohne VCL-Einrichtung. Das ist das kürzestmögliche sgcHTML-Programm, und genau das ist die mitgelieferte Demo tatsächlich.