Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webinterface, HTML Inhalt dynamisch erzeugen (https://www.delphipraxis.net/117354-webinterface-html-inhalt-dynamisch-erzeugen.html)

guidok 16. Jul 2008 14:22


Webinterface, HTML Inhalt dynamisch erzeugen
 
Ich bin mal wieder bei meinem geliebten Thema (Intra-)Webinterface und nein, ich möchte Intraweb nicht verwenden.

Ein Stück Software das ich gerade erstelle soll mit einem kleinen Webinterface aufwarten können. Ich dachte nun daran idHTTPServer einzusetzen, um das Interface autark von zusätzlich installierter Software betreiben zu können. Da ich in diesem Thema relativ neu unterwegs bin, bin ich derzeit erst mal froh einen kleinen Testserver zu haben, der mir ein HTML Dokument (index.html) mit einem Bildchen drauf liefert. Das ist schon was, aber nur die halbe (wahrscheinlich nur 1/30) Miete. Es sollen ja Daten (Tabellen, etc) dargestellt, ggf. auch Inhalte zum Herunterladen angeboten werden, d.h. ich werde die Seiten dynamisch erzeugen müssen. Gibt es für solche Dinge nützliche (Software-)Helfer, die diese Aufgabe erleichtern oder muss ich die HTML-Strings von Hand basteln?

Ich schätze ich werde mich auf jeden Fall mal intesiv mit HTML beschäftigen müssen :cry:

Würde mich über Anregungen von euch freuen!

Danke!

mkinzler 16. Jul 2008 15:07

Re: Webinterface, HTML Inhalt dynamisch erzeugen
 
Schau dir mal http://g-framework.org/ an

guidok 17. Jul 2008 12:40

Re: Webinterface, HTML Inhalt dynamisch erzeugen
 
Ich denke ich werde es jetzt auf die folgende Weise versuchen:

In den normalen HTML Quelltext werden definierte Seitenvariablen eingefügt, deren Inhalt anschließend dynamisch ausgetauscht wird.

z.B. im HTML Text
Delphi-Quellcode:
<div id="Seite">
  <h1> </h1>
und in Delphi
Delphi-Quellcode:
const pvTitle       = '';
      pvHeader      = '';
      pvNavigation  = '';
      pvFooter      = '';

procedure HTMLHeader(const AHeader: String; var HTML: TStrings);
begin
  HTML.Text := StringReplace(HTML.Text,pvHeader,AHeader,[rfIgnoreCase]);
end;
Ich denke, damit komme ich schon recht weit.

nahpets 17. Jul 2008 13:11

Re: Webinterface, HTML Inhalt dynamisch erzeugen
 
Hallo,

zum dynamischen Generieren von HTML-Seiten bietet sich TPageProducer an.
Dem kannst Du ein HTML-Template unterschieben, in Form einer Datei.

Mit einem TDataSetTableProducer kannst Du die Ergebnisse einer SQL-Abfrage (TQuery) oder einer Tabelle (TTable) bzw. allen Nachkommen von TDataSet aufbereiten lassen.

Beispiel für eine HTML-Datei:

Delphi-Quellcode:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="expires" content="0">
<meta name="robots" content="index">
<meta name="robots" content="follow">
<title>Das ist der Seitentitel</title>
<link rel="stylesheet" type="text/css" href="/stylesheets/neutral.css">
</head>
<body>
<div id="navigation">
<h1 class="center">EDV-Spezialadressen</h1>
<h2 class="center">Übersicht über Firmen einer Branche</h2><hr />
<#CONTENT>
<hr />
</div>
</body>
</html>
Beispiel für den Quelltext in Delphi, der den Inhalt in die Datei einfügt:

Delphi-Quellcode:
// Aufbau der Indexseite
// mit ersetzen der ggfls. im Template enthaltenen Platzhalter.
procedure Twm.ppIndexHTMLTag(Sender: TObject; Tag: TTag; const TagString: String; TagParams: TStrings; var ReplaceText: String);
begin
  // An die Stelle dieses Platzhalters kommt der Inhalt der Tabelle tbSQL
  // entsprechend den Auswahlkriterien.
  If (AnsiCompareText(TagString,'CONTENT') = 0) Then Begin
    tbSQL.Filter := 'EXCELREPORT=2';
    tbSQL.Filtered := true;
    tbSQL.Open;
    ReplaceText := dstpSQL.Content;
    tbSQL.Close;
    tbSQL.Filter := '';
    tbSQL.Filtered := false;
  End Else Begin
    // ... hier können beliebige weitere Ersetzungen stattfinden
  End;
end;
Zur Laufzeit wird von der Komponente nun an der Stelle <#CONTENT> der HTML-Seite der dynamische Inhalt eingefügt.
Der dynamische Inhalt ergibt sich in diesem Beispiel aus der Ergebnismenge der Tabellenkomponente tbSQL, die durch einen Filter eingeschränkt wird. Die Aufbereitung des Inhaltes wird von der Komponente dstpSQL (TDataSetTableProducer) durchgeführt.

Das Ganze geht mit verblüffend wenig Quelltext und ist, wenn man es ausreizt, hochflexibel.
Im HTML-Text kannst Du jeden beliebigen Inhalt durch Tags der Form <#TAGNAME> über die Ereignisroutine eines TPageProducer ersetzen lassen.

Nutze hier die Möglichkeiten, die Dir Delphi bietet. Das Bauen eigener Ersetzungsroutinen würde das vorhandenen bestenfalls nachbilden. Warum das Fahrrad nochmal erfinden, Delphi bietet die hier schon ein sehr leistungsfähiges Gefährt an.

Stephan

guidok 17. Jul 2008 13:19

Re: Webinterface, HTML Inhalt dynamisch erzeugen
 
Danke Stephan,

das ist genau was ich gesucht habe. Ich werde mich da mal etwas einarbeiten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz