Компонент 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: 
Вид формы, из которой выполняется запуск сценария, приведен на рис. 20.7, а, а результат выполнения сценария — на рис. 20.7, 6.
а
б
Рис. 20.7. HTML-форма, использующая компонент TQueryTableProducer, и результат
выполнения приложения
Еще по теме Компонент TDataSetTableProducer:
- Функциональные компоненты правового сознания.
- § 3.1. Основные структурные компоненты организации
- Участие образных компонентов в мышлении следователя
- Основные компоненты.
- 54. Основные компоненты социального контроля
- Дополнительные компоненты (общие).
- Дополнительные компоненты (специальные)
- Дополнительные компоненты общие.
- Дополнительные компоненты (общие).
- Дополнительные компоненты (специальные)
- Модуляционные компоненты психологии личности
- Модуляционные компоненты психологии личности
- Кроме содержания, преступное действие имеет внутреннюю структуру, главными компонентами которой являются:
- Цель как компонент преступного действия
- 3. 3. ЭМОЦИОНАЛЬНЫЕ КОМПОНЕНТЫ ТЕРАПЕВТИЧЕСКОГО КЛИМАТА. СОЗДАНИЕ ОБОЮДНОГО ДОВЕРИЯ
- 4.2. Научная эрудиция, ценностные ориентации как компоненты педагогической культуры
- Алистэр Коуберн. Люди как нелинейные и наиболее важные компоненты в создании программного обеспечения, 1999
- Риторические вопросы не содержат необходимого вопросительного компонента и тем самым вызывают у собеседника пассивную реакцию.
- 3. 2. ТЕРАПЕВТИЧЕСКИЙ КЛИМАТ. ФИЗИЧЕСКИЕ КОМПОНЕНТЫ ТЕРАПЕВТИЧЕСКОГО КЛИМАТА
- ПОДБЕРИТЕ КЛЮЧ К СЕБЕ. «ТРЕНИРОВКА С КЛЮЧОМ».