Okay .... mal schauen
Du erstellst 2 Webseiten zweckmäßigerweise im Programmpfad oder so.
Die erste ist das Stylesheet. Da kannst du entweder CSS oder XSLT verwenden. Da ich mich mit XHTML+CSS besser auskenne als mit
XML+XSLT werde ich das ganze mit XHTML+CSS beschreiben.
In dem Stylesheet definierst du das Aussehen, für die Funktionalität ist es erstmal unwichtig. (Können wir nachher noch dran feilen)
Die zweite ist die eigentliche Seite, die muss ein Javascript beinhalten.
XML-Code:
<evtl. Doctype und
xml decl.>
<
html ....>
<head>
<title>Blablabla</title>
<script type="text/javascript">
int lastrefresh = 0;
function data()
{
daten = sende_request('http://meinserver/time=' + lastrefresh);
werte_ergebnis_aus(daten);
in_tabelle_einfügen(daten);
}
document.setintervall(data(), 3000);
// alle 3 Sekunden Daten holen
</script>
</head>
<body>
<table>
<tr>
<td>Spalte eins</td>
<td>Spalte zwei</td>
</tr>
</table>
</body>
</
html>
Die Javascript-Funktion holt die Daten ab, und fügt sie in die Tabelle auf der Seite ein.
Jetzt dein Delphi Programm:
(Beim IdHTTPServer gibts ein Event, das aufgerufen wird, wenn ne Anfrage reinkommt. Mangels Delphi jetzt nur Pseudocode
)
Delphi-Quellcode:
procedure Das_Event_das_aufgerufen_wird (Requested_Site: String)
begin
if Requested_Site == Main_Page then
Result = Die_Datei_von_dder_Festplatte_öffnen;
else if Requested_Site == Stylesheet
Result = Stylesheet_von_der_Festplatte_öffnen;
else // Daten
begin
integer zeit = extracttime(Requested_Site);
String daten = ListviewDatenSeit(zeit);
Result = daten.AsXML();
end;
end;
Oder, um es nochmal zu erklären:
Du gibtst in deinem Delphi-Programm entweder die Seite zurück, oder den Stylesheet, oder die Daten. Die entscheidung kannst du in Abhängigkeit des angeforderten Dateinamens treffen.
Die Seite wiederum fordert die Daten an.
Das Programm muss daraufhin alle Daten raussuchen, die seid dem letzten Refresh verändert wurden. Diese werden dann
XML-kodiert zuerückgesendet.
Das Script kann dann die
XML-Daten verarbeiten und in die Tabelle einfügen.