<<
>>

Компонент TDataSetTableProducer

Компонент TDataSetTableProducer предназначен для вывода в окне веб-браузера ин­формации, содержащейся в базе данных. Информация представляется в таблич­ной форме. Это своего рода генератор табличных отчетов для публикации в Web.
Перечислим основные свойства компонента TDataSetTableProducer.

? property DataSet: TDataSet — набор данных, на основе которого будет формиро­ваться выводимая таблица.

? property Dispatcher: TCustomWebDispatcher — компонент-диспетчер, выполняющий обработку HTTP-запросов. Обычно значение этого свойства устанавливается автоматически — в нем указывается имя компонента TWebModule, на форме ко­торого располагается TDataSetTableProducer.

? property Caption: String — заголовок генерируемого HTML-документа.

? property Caption Alignment: THTMLCaptionAlignment — местоположение заголовка. Может принимать следующие значения:

■ саDefault — местоположение заголовка определяется веб-браузером;

■ саТор — заголовок располагается над HTML-таблицей;

■ caBottom — заголовок размещается под HTML-таблицей.

? property Header: TStrings — текст, располагаемый перед таблицей.

? property Footer: TStrings — текст, выводимый после таблицы.

? property Columns: THTMLTableColumns — поля, включаемые в формируемую табли­цу, а также атрибуты отображения полей в таблице. Для установки этого свой­ства используется специальный редактор, открывающийся при щелчке на кноп­ке с многоточием в поле ввода свойства Columns окна инспектора объектов или при двойном щелчке на значке компонента TDataSetTableProducer, размещенного на форме.

? property MaxRows: Integer — максимальное количество строк (записей), выводи­мых в таблице.

? property TableAttributes: THTMLTableAttributes — атрибуты отображения таблицы. Класс THTMLTableAttributes имеет следующие свойства:

■ property Align: THTMLAlign — способ выравнивания таблицы относительно окна браузера (доступные значения: haDefault — способ выравнивания определя­ется браузером, haLeft — выравнивание по левому краю, haRight — выравни­вание по правому краю, haCenter — выравнивание по центру);

■ property BgCoLor: ТНТМLBgColor — цвет фона таблицы (доступные значения: Aqua, Black, Blue, Fuchsia, Gray, Green, Lime, Maroon, Navy, Olive, Purple, Red, Silver, Teal, White, Yellow);

■ property Border: Integer — толщина линий в пикселах, разделяющих ячейки таблицы (если задано значение -1, то линии не отображаются);

■ property CellPadding: Integer — расстояние между ячейками таблицы в пиксе­лах (если задано значение -1, то расстояние определяется веб-браузером);

■ property CellSpacing: Integer — расстояние от текста до границы ячейки в пик­селах (если задано значение -1, то расстояние определяется веб-браузером);

■ property Width: Integer — ширина таблицы в процентах от ширины окна браузера.

? property RowAttributes: THTMLTableRowAttributes — атрибуты отображения строк в таблице. Класс THTMLTableRowAttributes имеет четыре свойства, два из кото­рых, Align и BgColor, полностью аналогичны соответствующим свойствам класса THTMLTableAttributes. Оставшиеся два свойства:

■ property VAlign: THTMLVAlign — вертикальное выравнивание текста в ячейке таблицы (доступные значения: haVDefault — выравнивание определяется браузером, haTop — выравнивание по верхней границе ячейки, haMiddle — выравнивание по центру ячейки, haBottom — выравнивание по нижней гра­нице ячейки);

■ property Custom: String — дополнительные атрибуты вывода строки. Рассмотрим пример вывода информации из таблицы базы данных в виде HTML- таблицы. Выведем данные из таблицы Физические лица базы данных sales.

1. Создайте новое веб-приложение.

2. Поместите на форму TWebModule два компонента: ТТаЫе и TDataSetTableProducer. По умолчанию им будут присвоены имена Tablel и DataSetTableProducerl.

3. Выполните подключение компонента Tablel к таблице Физические лица базы данных sales.

4. Установите свойство DataSet компонента DataSetTableProducerl равным Tablel.

5. Задайте свойству Caption компонента DataSetTableProducerl следующее значение:

Список сотрудников

6. Задайте свойству Header компонента DataSetTableProducerl следующее значение: Текст, размещаемый перед выводом НТМ-таблицы

7. Задайте свойству Footer компонента DataSetTableProducerl следующее значение: Текст. размещаемый после вывода НТМ-таблицы

8. Откройте окно редактора столбцов HTML-таблицы. Для этого выполните двой­ной щелчок на значке компонента DataSetTableProducerl либо щелкните на кнопке с многоточием в поле ввода свойства Columns этого компонента.

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

20.4). При указании полей таблицы базы данных, включаемых в HTML- таблицу, удобно вначале подключить все поля, а затем удалить лишние.

9. Для включения всех полей таблицы базы данных, связанной с компонентом DataSetTableProducerl, щелкните на кнопке Add All Fields на панели инструментов редактора столбцов. Затем оставьте только те поля, которые указаны на рис. 20.4. Измените значение свойства Border, сделав его равным 1 (в этом случае при выводе будут отображаться линии таблицы).

Рис. 20.4. Редактор столбцов компонента TDataSetTabieProducer

10. Откройте окно редактора действий компонента WebModule и создайте новое действие. Свойство Pathïnfo действия можно не задавать, остальные парамет­ры также можно оставить заданными по умолчанию. Установите следующий обработчик события OnAction для созданного действия:

procedure TWebModulе1.WebModu1е1WebActionItemlAct1 on(

Sender: TObject: Request: TWebRequest:

Response: TWebResponse; var Handled: Boolean): begin

Response.Content :=DatasetTableProducerl.Content : end:

11. Для получения информации из базы данных необходимо вначале открыть на­бор данных, а по завершении работы закрыть его. Эти операции удобно вы­полнять в обработчиках событий OnCreate и OnDestroy компонента TWebModule. В первом из них следует открыть набор данных Tablel, во втором — закрыть его:

procedure TWebModulel.WebModuleCreate(Sender: TObject): begin

Tablel.Open: end;

procedure TWebModulel.WebModuleDestroyCSender: TObject); begin

Tablel.Close: end:

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

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

Пример вывода HTML-таблицы

Результат выполнения разработанного сценария приведен на рис.

20.5.

Компонент TDatasetTableProducer может обрабатывать несколько событий, наиболь­ший интерес из которых представляют два.

type TCreateContentEvent = procedure (Sender: TObject; var Continue: Boolean) of object: property OnCreateContent: TCreateContentEvent:

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

THTMLFormatCel1 Event = procedure (Sender: TObject.

CellRow. CellColumn: Integer; var BgColor THTMLBgColor: var Align: THTMLAlign; var VAlign: THTMLVAlign; var CustomAttrs, Cel 1 Data: string) of object: property OnFormatCel1: THTMLFormatCel1 Event:

Вызывается перед формированием каждой ячейки HTML-таблицы. Параметр CellData содержит значение, которое будет помещено в ячейку. Данный пара­метр можно изменять в тексте процедуры-обработчика.

Путем обработки события OnFormatCell можно улучшить внешний вид получаемой таблицы. Например, задав для этого события обработчик следующего вида, мы получим таблицу, цвет фона строк которой чередуется: нечетные строки будут ото­бражаться на светло-сером фоне, четные — на белом (рис. 20.6):

procedure TWebModulel.OataSetTableProducerlFormatCel1(

Sender: TObject: CellRow. CellColumn: Integer: var BgColor: THTMLBgColor; var Align: THTMLAlign: var (/Align: THTMLVAlign; var CustomAttrs.

CellData: String); begin

if Odd(CellRow) then BgColor:='Silver' else BgColor:='': end:

Компонент TQueryTableProducer

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

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

На основе предыдущего CGI-приложения разработаем сценарий, выводящий спи­сок только тех сотрудников, которые проживают в городе, указанном пользователем.

1. Замените в предыдущем приложении компонент ТТаЫе компонентом TQuery, а компонент TDatasetTableProducer — компонентом TQueryTableProducer. Настрой­ка свойств компонента TQueryTableProducer выполняется точно так же, как и свойств компонента TDatasetTableProducer, за исключением того, что набор дан­ных подключается через свойство Query.

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

В свойстве Query компонента TQueryTableProducer можно ссылаться только на компо- нентТОиегу. С наборами данных TADOQuery и TIBQuery компонентТОиегуТаЫеРгобисег не взаимодействует.

2. Поскольку мы изменили компонент, генерирующий HTML-код, то следует внести изменения в обработчик события OnAction действия, заданного в TWebModule. Кро­ме того, необходимо внести изменения в обработчики событий OnCreate и On Destroy компонента TWebModule (так как мы используем другой компонент набора данных):

procedure TWebModul el.WebModulelWebActionltemlAction(

Sender: TObject; Request: TWebRequest:

Response: TWebResponse: var Handled: Boolean); begin

Response. Content: =' ' +

‘Пример использования TQueryTableProducer'+

''+QueryTableProducerl.Content: end;

procedure TWebModulel.WebModuleCreate(Sender: TObject): begin

Tablet.Open;

Query1.Open; end;

procedure TWebModulel.WebModuleDestroy(Sender: TObject); begin

Tablet.Close;

Query1.Close; end;

В свойстве SQL задайте следующий запрос:

SELECT *

FROM [Физические лица]

WHERE (Города;City)

3. Если теперь на HTML-форме, из которой производится вызов CGI-приложе­ния, разместить текстовое поле с именем City, то данные, введенные в это поле, будут передаваться в SQL-запрос. Соответственно, в таблицу будут включать­ся только те записи, в которых значение, содержащееся в поле Город, окажется равным значению, заданному пользователем в текстовом поле. Поэтому следу­ет изменить код HTML-формы, из которой выполняется вызов сценария, доба­вив элемент управления TEXT с именем CITY:

Пример вывода HTML-таблицы

ropOfl:&nbsp

Вид формы, из которой выполняется запуск сценария, приведен на рис. 20.7, а, а ре­зультат выполнения сценария — на рис. 20.7, 6.

а

б

Рис. 20.7. HTML-форма, использующая компонент TQueryTableProducer, и результат

выполнения приложения

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

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

  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. ПОДБЕРИТЕ КЛЮЧ К СЕБЕ. «ТРЕНИРОВКА С КЛЮЧОМ».