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).
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;
...