Главная » Delphi » Специальные компоненты TAdapterPageProducer

0

Большая  часть  работы по отображению HTML  в настоящей главе  осуществлялась компонентом TAdapterPageProducer и компонентами, встроенными в него.  Безус ловно, в реальном приложении стандартных страниц HTML,  использовавшихся до сих пор,  будет явно  недостаточно. WebSnap  позволяет пользователям создавать свои собственные компоненты, которые можно  будет затем подключать в TAdapterPage- Producer. Это позволит не только  разнообразить страницы HTML  но и решить кон кретные задачи.

должны  быть  производными от  класса  TWebContainedComponent и  реализовать интерфейс IWebContent. По скольку этим  условиям  должны  удовлетворять все компоненты, имеет  смысл  исполь зовать абстрактный класс, как показано в листинге 23.6.

Листинг 23.6. Абстрактный класс, производный от TWebContainedComponent

type

Tddg6BaseWebSnapComponent = class(TWebContainedComponent, IWebContent)

protected

{ IWebContent }

function Content(Options: TWebContentOptions;

ParentLayout: TLayout): string;

function GetHTML: string; virtual; abstract;

end;Этот класс реализован следующим образом:

function Tddg6BaseWebSnapComponent.Content(Options: TWebContentOptions; ParentLayout: TLayout): string;

var

Intf: ILayoutWebContent;

begin

if Supports(ParentLayout, ILayoutWebContent, Intf) then

Result := Intf.LayoutField(GetHTML, nil)

else

Result := GetHTML;

end;

Абстрактный  класс   реализует  функцию   Content только   потому,   что   функция GetHTML объявлена абстрактной. Функция  Content в основном выясняет, является ли содержащий компонент LayoutGroup. Если  это  так,  то  функция  Content помещает свое содержимое внутрь  компонента LayoutGroup. В противном случае она просто возвращает содержимое GetHTML. Следовательно, производным компонентам доста точно  лишь   реализовать  функцию   GetHTML,  возвращающую  соответствующий  код HTML, и можно их регистрировать для работы в составе TAdapterPageProducer.Код на прилагаемом CD реализует два компонента, которые позволяют добавить содержимое HTML  в TAdapterPageProducer в виде  строки или  файла. Код компо нента  Tddg6HTMLCode представлен в листинге 23.7.

Листинг 23.7. Компонент Tddg6HTMLCode

Tddg6HTMLCode = class(Tddg6BaseWebSnapComponent)

private

FHTML: TStrings;

procedure SetHTML(const Value: TStrings);

protected

function GetHTML: string; override;

public

constructor Create(AOwner: TComponent); override;

destructor Destroy; override;

published

property HTML: TStrings read FHTML write SetHTML;

end;

constructor Tddg6HTMLCode.Create(AOwner: TComponent);

begin

inherited;

FHTML := TStringList.Create;

end;

destructor Tddg6HTMLCode.Destroy;

begin

FHTML.Free;

inherited;

end;

function Tddg6HTMLCode.GetHTML: string;

begin

Result := FHTML.Text;

end;

procedure Tddg6HTMLCode.SetHTML(const Value: TStrings);

begin

FHTML.Assign(Value);

end;Это очень  простой класс. Он всего лишь обеспечивает публикацию свойства типа TString, который будет принимать любой  код HTML,  а затем помещать его в компо нент  TAdapterPageProducer в исходном состоянии. Функция  GetHTML просто воз вращает код  HTML  в виде  строки. Можно  создать  компоненты, способные возвра щать любой  код HTML,  включая  изображения, ссылки,  файлы и другое содержимое. Для этого все производные компоненты должны  содержать переопределенный метод GetHTML(). Обратите внимание на необходимость регистрации функции  в модуле, реализующем компонент. При  создании  компонентов  удостоверьтесь,  что  они заре гистрированы в данном  модуле, как в примере на прилагаемом CD. Использовать эти компоненты очень  просто — достаточно установить их в пакет  времени разработки и они появятся в Web дизайнере компонента TAdapterPageProducer (рис. 23.18).

Резюме

Рис. 23.18. Компоненты TadapterPageProducer

в окне Web дизайнера

Это был краткий обзор  возможностей WebSnap  и весьма  поверхностное перечис ление  того,  на что  он способен. Внимательно изучите  все демонстрационные прило жения в каталоге <Delphi>\Demos\WebSnap. Многие   из  них  позволят расширить функциональные возможности стандартных компонентов WebSnap.

Вполне  очевидно, что  WebSnap  —  это  очень  мощная  технология, но  она  требует определенных усилий для изучения. Но если уделить ей достаточно времени и сил, то очень  скоро  они  окупятся многократно, позволив легко  и просто создавать мощные дистанционно управляемые базы данных и динамические Web сайты.

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

По теме:

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