<<
>>

Компонент TPageProducer

Компонент TPageProducer — это простейший компонент для генерации HTML-до­кумента на основе некоторого заданного шаблона. Шаблон задается с помощью следующих свойств:

? property HTMLDoc: TStrings — содержит код шаблона HTML-документа;

? property HTMLFile: TFileName — задает имя файла, в котором содержится шаблон HTML-документа.

Указанные свойства являются взаимоисключающими, поэтому можно задать толь­ко одно из них.

Компонент TPageProducer обрабатывает документ с помощью метода Content:

function Content: string: override:

Этот метод выполняет обработку шаблона и возвращает результат обработки в виде HTML-документа.

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

Когда при обработке шаблона TPageProducer встречается с такими тегами, возни­кает событие OnHTMLTag (единственное событие TPageProducer). В обработчике этого события можно определить, какой тег обрабатывается и чем его следует заменить.

Обработчик события OnHTMLTag имеет следующий формат: type

TTag - (tgCustom. tgLink, tglmage, tgTable. tglmageMap. tgObject, tgEmbed):

THTMLTagEvent - procedure (Sender: TObject: Tag: TTag: const TagString: string: TagParams: TStrings: var ReplaceText: string) of object;

Здесь параметр Tag определяет тип тега и может принимать одно из семи значений, в зависимости от имени тега:

? tgLink — тег LINK (гипертекстовая ссылка);

? tglmage — тег IMAGE (изображение);

? tgTable — тег TABLE (таблица);

? tglmageMap — тег IMAGEMAP (изображение с областями срабатывания);

? tgObject — тег OBJECT (объект ActiveX);

? tgEmbed — тег EMBED (встраиваемая библиотека);

? tgCustom — тег, определяемый пользователем (имя этого тега не совпадает ни с одним из предопределенных).

Имя тега содержится в аргументе TagString. Параметры тега передаются через ар­гумент TagParams в виде строк вида имя=значение. Через аргумент ReplaceText воз­вращается строка, на которую должен быть заменен обрабатываемый тег. Модифицируем предыдущий пример, используя компонент TPageProducer. В отве­те дополнительно выведем информацию об IP-адресе клиента, пославшем запрос, а также отобразим имя, которое ввел пользователь. Для этого потребуется внести в проект некоторые изменения.

1. Поместите на форму компонента TWebModule компонент TPageProducer.

2. В свойстве HTMLDoc компонента TPageProducer задайте следующий шаблон:

Результат проверки

Адрес:

Имя:

3. В разделе private описания класса TWebModulel задайте две строковые перемен­ные: ResultStr и LoginStr.

4. Измените обработчик события OnAction и задайте обработчик события On HTMLTag так, как показано в приведенном ниже коде:

unit test_unit: i nterface uses

Windows. Messages. SysUtils. Classes. HTTPApp; type

TWebModulel = class(TWebModule)

PageProducerl: TPageProducer: procedure WebModulelWebActionItemlAction(

Sender: TObject: Request: TWebRequest:

Response: TWebResponse: var Handled: Boolean): procedure PageProducerlHTMLTag(Sender: TObject:

Tag: TTag; const Tagstring:

String: TagParams: TStrings: var ReplaceText: String): private

{ Private declarations }

ResultStr: string:

LoginStr: string: public

{ Public declarations } end:

var

WebModulel: TWebModulel; implementation {$R *.DFM)

procedure TWebModulel.WebModulelWebActionItemlAction( Sender: TObject; Request: TWebRequest:

Response: TWebResponse: var Handled: Boolean); const

login: String =■ 'test'; password: String = '123': var

validate: Boolean; begin

validate:»false: if Request.Method“'GET' then begin

LoginStr: “Request. QueryF i el ds. Va 1 ues ['. 1 ogi n' ]; validate:=(LoginStr=login) and (Request.QueryFi elds.Values['password']=password):

end:

if Request.Method“'POST' then begin

Logi nStr:“Request.ContentFi elds.Values['1ogi n']; validate:=(LoginStr=login) and (Request .ContentFi el ds.

Val ues[' password' >password):

end:

if validate

then ResultStr:='HMs/naponb введены правильно' else ResultStr:=’HMB/naponb введены неверно';

Response.Content:=PageProducerl.Content: end;

procedure TWebModulel.PageProducerlHTMLTag(

Sender: TObject; Tag; TTag; const TagString: String;

TagParams: TStrings; var ReplaceText: String); begi n

if TagString='RESULT' then ReplaceText:=ResultStr: if TagString='HOST' then ReplaceText:=(Sender as TCustomContentProducer).Di spatcher.Request.RemoteHost: if TagString='NAME' then ReplaceText:=LoginStr: end;

end.

Чтобы протестировать полученное приложение, нет необходимости вносить из­менения в код HTML-документа, из которого производится вызов сценария.

ПРИМЕЧАНИЕ------------------------------------------------------------------------------

Приведенный пример достаточно прост, поэтому с'его помощью трудно оцёнить до­стоинства компонента TPageProducer. Тем не менее, он дает представление об осо­бенностях использования этого компонента и интерпретации управляющих тегов.

<< | >>
Источник: Избачков Ю. С., Петров В. Н.. Информационные системы. 2006

Еще по теме Компонент TPageProducer:

  1. Функциональные компоненты правового сознания.
  2. § 3.1. Основные структурные компоненты организации
  3. Участие образных компонентов в мышлении следователя
  4. Основные компоненты.
  5. 54. Основные компоненты социального контроля
  6. Дополнительные компоненты (общие).
  7. Дополнительные компоненты (специальные)
  8. Дополнительные компоненты общие.
  9. Дополнительные компоненты (общие).
  10. Дополнительные компоненты (специальные)
  11. Модуляционные компоненты психологии личности
  12. Модуляционные компоненты психологии личности
  13. Кроме содержания, преступное действие имеет внутреннюю структуру, главными компонентами которой являются:
  14. Цель как компонент преступного действия
  15. 3. 3. ЭМОЦИОНАЛЬНЫЕ КОМПОНЕНТЫ ТЕРАПЕВТИЧЕСКОГО КЛИМАТА. СОЗДАНИЕ ОБОЮДНОГО ДОВЕРИЯ
  16. 4.2. Научная эрудиция, ценностные ориентации как компоненты педагогической культуры
  17. Алистэр Коуберн. Люди как нелинейные и наиболее важные компоненты в создании программного обеспечения, 1999
  18. Риторические вопросы не содержат необходимого вопросительного компонента и тем самым вызывают у собеседника пассивную реакцию.
  19. 3. 2. ТЕРАПЕВТИЧЕСКИЙ КЛИМАТ. ФИЗИЧЕСКИЕ КОМПОНЕНТЫ ТЕРАПЕВТИЧЕСКОГО КЛИМАТА
  20. ПОДБЕРИТЕ КЛЮЧ К СЕБЕ. «ТРЕНИРОВКА С КЛЮЧОМ».