Главная » Delphi » Компонент LocateFileServices

0

Разработка Web приложений с помощью WebSnap  обычно требует  координации различных ресурсов. HTML,  серверные сценарии, код Delphi, информация базы дан ных  и графика —  все  они  должны  быть  увязаны  в единое приложение. Чаще  всего большая  часть  этих  ресурсов встроена в файл  HTML.  WebSnap  позволяет обеспечить поддержку  HTML независимо от реализации динамических Web страниц. Это означа ет, что файлы HTML  можно  редактировать независимо от бинарного файла  Web приложения. Но по умолчанию файлы HTML  должны  находиться в том же самом ка талоге, что  и  бинарный файл.  Указанное не  всегда  удобно  и  не  всегда  возможно. Обычно файлы HTML стараются  разместить  отдельно  от бинарного  кода.  Либо  ре сурсы  HTML,  применяемые  в  приложении,  могут  принадлежать  другому  приложе

нию, например базе данных.

WebSnap  дает  возможность получить HTML  из любого  необходимого источника. Компонент LocateFileService позволяет получать  HTML  из любого  места  распо ложения, включая  файлы и потоки (фактически из любого  объекта, производного от класса TStream). Возможность доступа к HTML из экземпляров классов  производных от TStream означает, что существует возможность получить HTML из любого источ

1

ника, который можно загрузить в объект класса TStream.

Например, HTML можно создать динамически из потока файла  .RES, встроенного

в  бинарный файл  приложения. Простое  демонстрационное приложение поможет

понять, как это можно сделать. Естественно, для этого необходима страница HTML. С помощью любого  текстового редактора (или  вашего  любимого редактора HTML), вы берите файл  wmLogin.html в качестве шаблона  и сохраните его в каталоге создавае мого демонстрационного приложения как embed.html. Затем  добавьте в файл  какой нибудь текст,  чтобы  его можно  было  узнать  при  загрузке  (например уведомление об успешной  загрузке встроенного файла  .RES).

Затем, безусловно, необходимо внедрить данный код HTML в создаваемое прило

жение. В Delphi  это  можно  сделать  с помощью файлов ресурсов .RC, автоматически подключаемых в состав  приложения. Использовав Notepad (Блокнот) или любой  дру гой   текстовый  редактор,  создайте  текстовый  файл.   Сохраните  его   под   именем HTML.RC в том же самом каталоге, где находятся исходные файлы демонстрационно го приложения, и добавьте его в проект. Затем добавьте в этот файл следующий текст:

#define HTML 23     // Идентификатор ресурса HTML EMBEDDEDHTML HTML embed.html

При  подключении в проект, Delphi  скомпилирует файл  RC в файл  RES и включит его в состав приложения.

Когда текст HTML окажется в составе  приложения, создайте новую страницу с гене ратором класса  TPageProducer и назовите ее Embedded. Сохраните файл  как wmEm- bedded, перейдите к странице Home и выберите компонент LocateFileServices. Пе рейдите на вкладку Events инспектора объектов и дважды  щелкните на событии On- FindStream. В результате будет создан обработчик события, похожий на этот:

procedure THome.LocateFileServiceFindStream(ASender: TObject; AComponent: TComponent; const AFileName: String;

var AFoundStream: TStream; var AOwned, AHandled: Boolean);

begin end;

Основными параметрами здесь являются AFileName и AFoundStream. Именно их

используют для доступа к HTML, расположенного во встроенных ресурсах. Заполни

те обработчик события следующим кодом:

procedure THome.LocateFileServiceFindStream(ASender: TObject; AComponent: TComponent; const AFileName: String;

var AFoundStream: TStream; var AOwned, AHandled: Boolean);

1 Короче говоря, все, что только можно загрузить, можно использовать в составе HTML.  — Прим. ред.begin

// разыскать файл Embedded

if Pos(‘EMBEDDED’, UpperCase(AFileName)) > 0 then begin

AFoundStream := TResourceStream.Create(hInstance,

‘EMBEDDED’, ‘HTML’);

AHandled := True;           // далее можно не искать

end;

end;

Параметр AFileName содержит имя  файла  HTML  (без  пути),  который Delphi  бу дет использовать по умолчанию. Его можно  использовать для того,  чтобы  указать имя, если ресурс  расположен в файле. При  передаче в обработчик события параметр AFoundStream будет содержать значение nil, что  позволяет создать  новый поток, используя эту переменную. В данном  случае переменной AFoundStream присваивает ся результат выполнения метода  Create объекта TResourceStream, который захва тывает HTML из ресурсов исполняемой программы. Установка параметра AHandled в состояние True гарантирует прекращение методом  LocateFileServices дальней шего поиска  содержимого HTML.

Запустите приложение и убедитесь, что код HTML страницы Embedded обнаружен и отображен.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии