
- •1. Компоненты, используемые при разработке Web-приложений
- •2. Статическая публикация
- •3. Компоненты генерации html-страниц
- •3.1. Компонент PageProducer
- •3.2. Компонент DataSetPageProducer
- •3.3. Компонент DataSetTableProducer
- •Var Align: thtmlAlign; var vAlign: thtmlvAlign; var CustomAttrs,
- •3.4. Компонент QueryTableProducer
- •3.5. Пример генератора html-страниц
- •Var ReplaceText; String); procedure PageProducerlHtmlTag(Sender: tObject; Tag: tTag;
- •Var ReplaceText: String); procedure DataSetTableProducerlFormatCell(Sender: tObject; CellRow,
- •Var Align: thtmlAlign; var vAlign: thtmlvAlign; var CustomAttrs, f
- •Var Align: thtmlAlign; var vAlign: thtmlvAlign; var CustomAttrs,
- •4. Динамическая публикация
- •4.1. Создание модуля cgi
- •II:integer;
- •Var I: integer;
- •Var I: integer;
- •Var I: integer;
- •4.2. Создание isapi-модуля расширения сервера
- •4.3. Обработка ввода пользователя в модуле isapi
- •5. Публикация графики
- •Interface
- •Var Align: thtmlAlign; var vAlign: thtmlvAlign; var CustomAttrs,
- •6. Использование интерфейса ado
3. Компоненты генерации html-страниц
Для эффективной работы с HTML-страницами в Delphi имеются специальные компоненты: PageProducer, DataSetPageProducer, DataSetTableProducer и QueryTableProducer.
3.1. Компонент PageProducer
Компонент PageProducer генерирует HTML-страницы на основе специального HTML-шаблона, связанного с этим компонентом. HTML-шаблон представляет собой последовательность HTML-команд и специальных тегов-транспарантов, имеющих следующий формат:
<#TagName Paraml=Valuel Param2=Value2 ...>
Содержимое шаблона может формироваться заранее (на этапе проектирования) или динамически — перед генерацией HTML-страницы.
Для доступа к шаблону используются свойства htmldoc типа TStrings или HTMLFile типа TFiieName. Свойства htmldoc и HTMLFile являются взаимоисключающими — при выборе одного из них другое свойство обнуляется.
При вызове метода content производится синтаксический анализ HTML-строк. При обработке подлежащих замене тегов возникает событие опнтмътад типа THTMLTagEvent. в обработчике которого производится замена всех тегов-транспарантов на необходимые текстовые значения. Кроме того, метод content возвращает указатель на буфер, в котором находится сформированный документ. Например,
Memol.Text := PageProducerI.Content;
СВОЙСТВО Dispatcher типа TCustomWebDispatcher компонента PageProducer СЛу-жит для связи с Web-сервером. Оно содержит ссылку на Web-модуль WebModuie или webDispatcher, в функции которых входит обслуживание текущего запроса. Особенности работы с этим свойством рассматриваются ниже.
3.2. Компонент DataSetPageProducer
Компонент DataSetPageProducer аналогичен предыдущему компоненту, но дополнительно содержит свойство DataSet типа TdataSet, в котором указывается используемый набор данных. При применении этого компонента можно в тегах-транспарантах HTML-шаблона (связанного с компонентом DataSetPageProducer через свойство htmldoc или HTMLFile) в качестве имени тега (TagName) указывать имена полей в записи БД. Тем самым обеспечивается отображение значений полей текущей записи в определяемом свойством DataSet наборе данных. Например:
Имя: <#name> <br>
Размер: <#size> <br>
Вес: <#weight> <br>
Место: <#area> <br>
Здесь name, size, weight, area — Имена полей в записи БД.
Следующий фрагмент кода формирует в редакторе Memol HTML-документ по данным первой записи из БД:
Tablel.First ;
Memol.Clear;
Memol.Text := DataSetPageProducerl.Content;
Оператор Tablel.First устанавливает указатель текущей записи на первую запись набора данных, оператор Memol.Clear очищает все строки редактора Memol, после чего он заполняется содержимым сформированного HTML-документа С ПОМОЩЬЮ метода Content объекта DataSetPageProducerl.
3.3. Компонент DataSetTableProducer
Компонент DataSetTableProducer позволяет выводить содержимое БД в табличном виде. Рассмотрим наиболее часто используемые свойства и методы этого компонента (рис. 16.3).
Рис. 16.3. Свойства компонента DataSetTableProducer
Свойство Header типа TStrings использует-ся для задания заголовочной части HTML-документа, а СВОЙСТВО Footer типа TStrings служит для задания строк, заканчивающих HTML-документ.
Свойство DataSet определяет набор данных, на основании которого формируется HTML-документ.
Свойство RowAttributes типа THTMLTabieRowAttributes позволяет отдельно форматировать строки таблицы, а свойство TableAttributes Типа THTMLTableAttributes служит для форматирования всей таблицы.
Метод Content компонента DataSetTableProducer, как и одноименный метод перечисленных выше компонентов, предназначен для генерации документа. Однако в отличие от предыдущих компонентов событие опнтмьтад в компоненте DataSetTabieProducer не генерируется. Кроме того, при форматировании ячейки таблицы возникает событие OnFormatCell типа THTMLFormatCellEvent, обработчик которого позволяет индивидуально форматировать каждую ячейку. Тип события описан следующим образом:
type THTMLFormatCellEvent =
procedure THTMLForm.DataSetTableProducerlFormatCell(Sender: TObject;
CellRow, CellColumn: Integer; var BgColor: THTMLBgColor;