Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 16.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.35 Mб
Скачать

5. Публикация графики

Рассмотрим применение стандартных средств Delphi для динамической публи­кации графической информации из БД на следующем примере.

Разрабатываемый модуль реализуем в виде ISAPI-библиотеки, использующей таблицу из файла animals.dbf. Для запуска данного приложения нужно создать ISAPI-модуль, как описано выше, для которого потребуются 2 объекта WebActionitem. Свойствам Pathinfo этих объектов действия устанавливаются значения text и image, кроме того, подготавливаются обработчики для события OnAction. В модуле необходимо также разместить объекты DataSetTableProducer и Table.

В примере предварительно созданы три HTML-файла, текст которых приводит­ся ниже. Управляющий файл proton.html содержит следующий код:

<HTML>

<HEAD>

<TITLE> Демонстрация работы с графикой </TITLE>

</HEAD>

<FRAMESET COLS="70%,30%">

<FRAME SRC="main.html" .name=main>

<FRAME SRC="image.html" name=image>

</FRAMESET>

</HTML>

Совместное отображение графики и текста в HTML-документе удобно реализо-■вать с помощью фреймов. Тег <feameset cols="7Q%,30%"> задает набор фреймов. Параметр cols используется для разбивки рабочей области браузера на две ко­лонки шириной 70 и 30%, соответственно.

Тег <frame SRC="main.html" name=main> определяет параметры фрейма: параметр src задает отображаемый в фрейме файл, а параметр name служит для доступа к созданным в этом фрейме объектам.

Файл первого фрейма (с именем main.html) содержит следующий код:

<HTML>

<BODY>

<script>

location="http://igin/scripts/isag.dll/tezt"

</script>

</BODY>

</HTML>

В теге <script> для передачи упра&тения модулю расширения isag.dll использу­ется СВОЙСТВО location объекта windows.

Файл второго фрейма (с именем image.html) содержит код:

<HTML>

<HEAD>

<Т1ТЬЕ>Демонстрация работы с графикой</Т1ТЪЕ>

</HEAD>

<body>

<script>

location="http://igin/scripts/isag.dll/image?O"

</script>

</BODY>

</HTML>

Исходный текст программы isag (табличное отображение отчета из БД) содер­жит следующий код:

unit isag;

Interface

uses

Windows, Messages, SysUtils, Classes, HTTPApp, DBWeb, Db, DBTables; type

TWebModulel = class(TWebModule) Table1: TTable;

DataSetTableProducerl: TDataSetTableProducer;

procedure DataSetTableProducerlFormatCell(Sender: TObject; CellRow, CellColumn: Integer; var BgColor: THTMLBgColor; var Align: THTMLAlign; var VAlign: THTMLVAlign; var CustornAttrs, CellData: String); procedure WebModuleAfterDispatch(Sender: TObject; Request: TWebRequest;

Response: TWebResponse; var Handled: Boolean);

procedure WebModuleBeforeDispatch(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

procedure WebModulelWebActionltemlAction(Sender: TObject; Request:

TWebRequest; Response: TWebResponse; var Handled: Boolean); procedure WebModulelWebActionItem2Action(Sender: TObject; Request:

TWebRequest; Response: TWebResponse; var Handled: Boolean); private

ScriptName: string; end;

var

WebModulel: TWebModulel;

implementation f$R *.DEM)

uses

Graphics, Jpeg, ExtCtrls,dbctrls;

// Обработчик события OnFormatCell

// Параметр Target указывает на соседний фрейм

procedure TWebModulel.DataSetTableProducerlFormatCell(Sender: TObject;

CellRow, CellColumn: Integer; var BgColor: THTMLBgColor;