Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2014-01 КНЯЗЕВА_Эл_бизнес / Электронный бизнес_Князева.doc
Скачиваний:
50
Добавлен:
20.02.2016
Размер:
1.24 Mб
Скачать

КомпонентTPageProducer

Для упрощения формирования ответа в формате HTML в DELPHI создан целый ряд компонентов, расположенных на вкладке Internet.

TPageProducer - простейший компонент для генерации HTML-страницы. Страница может быть загружена одним из двух взаимоисключающих способов:

  • может быть создана в текстовом редакторе, который открывается щелчком по построителю в свойстве HTMLDoc: TStrings;

  • может быть сформирована из готового HTML-файла, адрес которого указывается в свойстве HTMLFile: TFileName.

В большинстве случаев необходимо динамически генерировать только некоторый фрагмент HTML-кода. Остальная часть страницы (заголовки, сопроводительная информация) остаются неизменными. Для того чтобы можно было контролировать только активное содержимое, используются шаблоны, с помощью которых можно осуществить подстановку различных значений (параметров) в текст HTML. Шаблон HTML представляет собой обычный файл HTML, в котором используются теги-шаблоны («прозрачные» теги), которые помечаются знаком #. При нахождении этого тега в составе Web-страницы активизируется событие OnHTMLTag компонента TPageProducer для замены строк шаблона. Через параметр ReplaceText возвращается строка, на которую должен быть эаменен обрабатываемый тег.

Если обработчик этого события не указан, или он не вернул конечные значения, то в результирующем потоке «прозрачные» теги будут проигнорированы, и пользователю будет передано сообщение без них.

Пример определения текущей даты и текущего времени:

  1. Разместить компонент PageProducer1 внутри контейнера WebModul1. Нажать на построитель в свойстве HTMLDoc и в открывшемся окне прописать следующий код:

<html>

<script>

function t()

{alert("Сегодня: <#td>. Время входа на страницу: <#tm>")}

</script>

<input type=button value="Сегодня..." onClick=t()>

</html>

  1. В обработчике события OnHTMLTag компонента PageProducer1 создать следующую процедуру:

if tagstring='tm' then

ReplaceText:=Timetostr(Now);

if tagstring='td' then

ReplaceText:=Datetostr(date);

  1. Создать новое действие модуля для показа страницы, формируемой компонентом PageProducer1, которое выполняется по умолчанию.

      1. Компоненты для работы с базами данных

Для генерации HTML-страниц на основе информации, извлекаемой из баз данных, предназначены следующие компоненты:

  • TDataSetPageProducer;

  • TDataSetTableProducer;

  • TQueryTableProducer.

TDataSetPageProducer

Данный компонент имеет единственное отличие от компонента TPageProducer – связь с набором данных осуществляется с помощью свойства DataSet. Набор данных формируется стандартными компонентами для работы с базами данных: TTable, TQuery, TADOTable, TADOQuery и т.д.

HTML-код, созданный в свойстве HTMLDoc для публикации таблицы Country из базы данных DELPHI с псевдонимом DBDEMOS, может иметь вид:

<html>

<table border=1>

<tr><th>Название</th><th>Столица</th><th>Континент</th></tr>

<tr><td><#Name></td><td><#Capital></td><td><#Continent></td></tr>

</table>

</html>

При обработке шаблона теги, имена которых совпадают с именами полей набора данных, заменяются значениями этих полей из текущей записи.

Фрагмент обработчика события OnHTMLTag для простого вывода данных может выглядеть следующим образом:

if TagString='Name' then

replaceText:=DataSetPageProducer1.DataSet.FieldByName(TagString).AsString;

Название поля в наборе данных Name совпадает с обозначением «прозрачного» тега.

Для публикации всего набора данных необходимо организовать последовательный перебор записей.

TDataSetTableProducer

Неудобства работы с компонентом TDataSetPageProducer устранены в компоненте TdataSetTableProducer. Этот компонент является своего рода генератором табличных отчетов для публикации на web-странице.

Основные свойства компонента:

  • Dataset: TDataSet – указывается набор данных (Table, Query, ADOTable, ADOQuery и т.п.);

  • Header: TString – текст перед таблицей;

  • Footer: TString - текст после таблицы;

  • MaxRows: Integer – максимальное число записей для вывода на экран.

Пример публикации информации из таблицы Country базы данных DBDEMOS, поставляемой с DELPHI:

  1. Разместить компоненты DataSetTableProducer1 и Table1 внутри контейнера WebModul1. Установить свойство DataSet компонента DataSetTableProducer1 равным Table1.

  2. Выполнить подключение компонента Table1 к таблице Country.db и временно активизировать её для просмотра данных.

  3. Двойным щелчком по компоненту DataSetTableProducer1 открыть окно редактора столбцов HTML-таблицы. Отформатировать таблицу, изменяя соответствующие свойства (border, caption, bgcolor и т. д.). Установить значение false свойства Active компонента Table1.

  4. Создать действие модуля для показа страницы, сформированной компонентом DataSetTableProducer1, выполняющееся по умолчанию. Обработчик события OnAction для созданного действия:

Table1.Open;

Response.Content:=DataSetTableProducer1.Content;

Table1.Close;

  1. Откомпилировать приложение и проверить его работу на сервере.

TQueryTableProducer

Данный компонент имеет только одно существенное отличие от компонента TDataSetTableProducer: он может связываться только с набором данных TQuery и позволяет настраивать параметры заданного SQL-запроса в соответствии со строкой параметров, полученной с помощью HTTP-запроса, т.е. пользователь может задавать критерии выборки данных.

Пример вывода информации из таблицы Country.db базы данных DBDEMOS в соответствии с заданным в текстовом поле критерием:

  1. Разместить компоненты QueryTableProducer1 и Query1 внутри контейнера WebModul1 и связать их, задав свойство Query компонента QueryTableProducer1.

  2. Выполнить подключение компонента Query1 к базе данных DBDEMOS. В свойстве SQL сформировать параметрический запрос:

SELECT * FROM Country WHERE Continent=:cnt

  1. Создать действие модуля для показа страницы, сформированной компонентом QueryTableProducer1, выполняющееся по умолчанию. Обработчик события OnAction для созданного действия:

Query1.Open;

Response.Content:=QueryTableProducer1.Content;

Query1.Close;

  1. Сохранить проект, откомпилировать приложение и разместить исполняемый файл на сервере.

  2. Для вызова CGI-приложения создать HTML-страницу следующего содержания:

<html>

<form method=post action= “/cgi-bin/название_файла.exe”>

Континент: &nbsp<select name= “cnt”>

<option>North America</option>

<option>South America</option>

</select>

<input type=submit value= “Показать”>

</form>

<html>

  1. Разместить HTML-файл в каталоге WWW сервера и проверить работу CGI-приложения.