Esse artigo faz parte da revista Clube Delphi edição 39. Clique aqui para ler todos os artigos desta edição

img

Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML. 

Criando componentes IntraWeb

Segredos para estender e personalizar o IW

O framework (conjunto de componentes e classes) IntraWeb é extremamente rico, como mostramos em outros artigos sobre o assunto. Mesmo assim pode ser necessário estendê-lo para atender a requisitos específicos de suas aplicações. Neste artigo, veremos como criar um componente IntraWeb, apresentando uma visão geral do framework e da classe base TIWControl. A criação de componentes IntraWeb ainda é uma área pouco explorada, devido à pouquíssima documentação disponível, mas deve crescer rapidamente, considerando a grande atenção que o IW vem recebendo na comunidade Delphi.

O framework IntraWeb

O framework IntraWeb é composto de mais de 50 componentes, visuais e não-visuais. O diagrama da Figura 1 mostra a hierarquia dos componentes visuais IntraWeb.

A classe base para todos os componentes visuais IntraWeb é TIWControl. Essa classe é derivada da classe TControl da VCL e está declarada na unit IWControl. Veja, na Listagem 1, a declaração da classe TIWControl (por restrições de espaço, foram simplificadas algumas declarações de propriedades e omitidas algumas declarações menos importantes).

 

img

Figura 1. Hierarquia dos componentes visuais[g1]  do IntraWeb

 

Listagem 1. Declaração resumida da classe TIWControl

TIWControl = class(TControl, IIWControl)

protected

  ( Declarações dos Fields omitidas )

  procedure ColorChanged(var AMessage: TMessage); message CM_COLORCHANGED;

  procedure TextChanged(var AMessage: TMessage); message CM_TEXTCHANGED;

  procedure WMPaint(var AMessage: TWMPaint); message WM_PAINT;

  function CreatePaintHandler (const AClassName: string): TIWPaintHandler;

  procedure DoClick; virtual;

  procedure DoHTMLTag(ATag: TIWHTMLTag); virtual;

  procedure Draw3DBox; overload;

  procedure Draw3DBox(X1, Y1, X2, Y2: Integer); overload;

  procedure DrawArrow(ARect: TRect; ADirection: TArrowDirection);

  function DrawButton(const AClient: TRect; const ABevelWidth: Integer = 1;  

    const AIsDown: Boolean = False; const AIsFocused: Boolean = False): TRect;

  procedure DrawScrollBar(ARect: TRect);

  procedure DrawTextLines (ARect: TRect; AText: TStrings);

  procedure FontChanged(ASender: TObject);

  function HintEvents (const AHint: string): string;

  function MakeHTMLTag(ATag: TIWHTMLTag): string;

  procedure Paint; virtual;

  function SubmitHandler (const AParam: string = ''): string;

  function SubmitLink(const AHTML: string; const AParam: string = '';

    const AOnClick: boolean = false): string;

  procedure TextChangedNotification; virtual;

  procedure UpdateTabOrder(AValue: TTabOrder);

  function NeedsFormTag: Boolean;

  function WantsSubmitValidation: Boolean;

  procedure Submit (const AValue: string); virtual;

...

Quer ler esse conteúdo completo? Tenha acesso completo