WOL
Home Download Documentação A Fazer... Links Pascal Começar

Objetos Básicos da WOLGUI

TWOLRoot

Objeto básico e portanto com poucas propriedades, eventos e métodos. TWOLRoot é mais primitivo dos objetos WOL. Arquivo fonte: WOLGUI00.PP.

Código fonte: WOLGUI00.PP.
Propriedades Descrição
Name:String Deve conter o nome do objeto.
Tag:TWOLLongint Usado para conter qualquer valor desse tipo.
RefCount:TWOLSmallInt Só leitura. Contém a quantidade de referências feitas a um mesmo objeto.
Owner:TWOLRoot Apenas de leitura. Contém o pai ou dono do objeto que é apontado na criação.
 
Métodos e Descrição
procedure _AddRef(Ref:TWOLSmallInt);
Usado para adicionar Ref referências ao objeto. Antes de destruir o objeto, a WOL verifica se o número de referências é zero. Se não for, ocorre um decremento no número de referências do objeto, mas ele permanece ativo.
procedure Assign(Source:TWOLRoot); virtual;
Usado para copiar valores de um objeto para outro. Os endereços dos objetos são mantidos distintos, bem como propriedades como nome, dono, tag, etc.
constructor Create(AOwner:TWOLRoot); virtual;
Usado para criar o objeto. Nas versões do FPC anteriores à 2.0.0, apenas esse método deve ser utilizado. O Owner ou dono ou pai, deve ser um objeto TWOLRoot ou nil.
constructor Create; virtual; (Apenas em FPC 2.0.0 ou maior)
Usado para criar um objeto sem Owner (pai). É o mesmo que chamar Create(nil). Não deve ser usado em versões do FPC anteriores à 2.0.0.
destructor Destroy; override;
Usado para destruir o objeto da memória, ressalvando-se o contador de referência visto acima.
* Esse objeto pode ser substituído por TComponent da FCL definindo-se WOLROOTISCOMPONENT no include WOLGUI.INC.

TWOLBase

É o objeto base para aqueles que necessitam de propriedades, métodos e eventos básicos para terem uma funcionalidade mas sem serem visíveis. É responsável por alocação de recursos do sistema para funcionar. É descendente de TWOLRoot. Código fonte: WOLGUI01.PP.

Propriedades  
Left:TWOLInteger Usada para indicar a posição do lado esquerdo do objeto visual.
Top:TWOLInteger Usada para indicar a posição do lado superior do objeto visual.
Width:TWOLInteger Usada para indicar a largura do objeto visual.
Height:TWOLInteger Usada para indicar a altura do objeto visual.
Parent:TWOLVisualControl Usada para atribução do objeto pai do objeto visual.
PopupMenu:TWOLPopupMenu Usada para associar um menu popup para o objeto.
Caption:String Usada para atribuir um título que apareça no objeto.
Color:TWOLColor Usada para atribuir uma cor ao objeto.
Hint:String Usada para atribuir uma dica ao objeto. As dicas são ligadas ou desligadas dependendo da presença do texto nessa propriedade.
Enabled:Boolean Usada para habilitar ou não o objeto visual. Um objeto visual desabilitado não recebe mensagens.
Visible:Boolean Usada para tornar visível ou não um objeto visual.
Cursor:TWOLCursor Usada para indicar um ponteiro de mouse para o objeto visual.
TextAlign:TWOLJustifySet Usada para indicar a forma de justificação do texto de um objeto.
WindowRect:TWOLRect Usada para atribuir ou recuperar o valor do retângulo da janela do objeto visual.
ClientRect:TWOLRect Usada para recuperar o retângulo da área cliente do objeto visual. Esse valor depende da GUI e só ela pode modificar.
State:TWOLState Usada para recuperar ou modificar o estado do objeto.
Style:TWOLGUIStyles Usada para recuperar ou atribuir um estilo para o objeto. O estilo determina aparência e comportamento de objetos visuais.
Changed:Boolean Usada para recuperar o valor de alguma mudança que o objeto tenha sofrido. Se for lida, volta a ter o valor False até que uma nova modificação seja feita no objeto.
Loaded:Boolean Usada para indicar o estado de carregado e pronto para rodar do objeto.
Params:TWOLParams Usada para recuperar e atribuir os valores de criação do objeto. TWOLParams guarda uma série de valores, como posição, altura, largura, cor, etc.
ParamRect:TWOLRect Usada para recuperar o valor da dimensão do objeto contido nos valores de criação.
wolClass:TWOLClassType Usada para recuperar o tipo da classe do objeto visual.
 
Métodos Públicos
constructor Create(AOwner:TWOLRoot); override;
Usado para criar o objeto.
destructor Destroy; override;
Usado para destruir o objeto da memória.
procedure AddStyle(Estilo:TWOLGUIStyles);
Usado para adicionar um estilo ao objeto. O estilo determina um ou mais tipo de comportamento de objetos visuais
procedure DelStyle(Estilo:TWOLGUIStyles);
Usado para excluir um estilo do objeto.
function ExistsStyle(Estilo:TWOLGUIStyle):Boolean;
Usada para verificar se um estilo está presente ou não no objeto.
function isHandleZero:Boolean;
Usada para verificar se o número do manipulador (Handle) é zero. Um objeto visual recebe um número que o representa.
procedure Change; virtual;
Usado para modificar a propriedade Changed. Essa propriedade, quando lida, volta a ser False
procedure Load; virtual;
Usado para indicar o carregamento em memória e a prontidão do objeto para ser executado.
procedure Click; virtual;
Usado para simular um click em um objeto que suporte a ação do mouse.
function DefaultProc(var Message:TWOLMessage):TWOLLongint; virtual;
Usada para processamento padrão da GUI quando não houver processamento da WOL para mensagem no objeto.
function SendMessage(var Msg:TWOLMessage):TWOLSmallInt; virtual; abstract;
Usada para enviar uma mensagem diretamente à GUI.
function PostMessage(Msg:Cardinal; WParam:Cardinal; LParam:Cardinal):Cardinal; virtual; abstract;
Usada para postar uma mensagem diretamente à GUI (em geral, a função posta a mensagem retorna, ao invés de ficar esperando resposta, como a sendmessage).
procedure AllocResources; virtual;
Usado para alocar recursos da GUI (memória) para as diversas peças do objeto durante a criação.
procedure FreeResources; virtual;
Usado para liberar os recursos alocados na criação pelas diversas partes do objeto.
function WndPaint(var Message:TWOLMessage):Boolean; virtual; abstract;
Usada para processar mensagens de pintura de objetos visuais. Mas recebe outras mensagens.
function WndKeyboard(var Message:TWOLMessage):Boolean; virtual; abstract;
Usada para processar mensagens de teclado. No entanto recebe outras mensagens.
function WndMouse(var Message:TWOLMessage):Boolean; virtual; abstract;
Usada para processar mensagens de mouse. No entanto recebe outras mensagens.
function WndNotify(var Message:TWOLMessage):Boolean; virtual; abstract;
Usada para processar mensagens de notificação da GUI. No entanto recebe outras mensagens.
function WndCommand(var Message:TWOLMessage):Boolean; virtual; abstract;
Usada para processar mensagens de comando da GUI. No entanto outras mensagens.
function WndProc(var Message:TWOLMessage):Boolean; virtual; abstract;
Usanda para processar mensagens diversas da GUI. Esta é a função principal de processamento de mensagens. Antes de processar a mensagem, a função chama as outras funções Wnd*. Se uma dessas funções retorna True, o restante das funções não será processada.
function WndText(var Message:TWOLMessage):Boolean; virtual; abstract;
Usada para processar mensagens de texto. No entanto, outras mensagens são recebidas pela função.
function GetWOLText:PChar; virtual;
Usada para se recuperar o texto de uma janela na forma de PChar. Isso principalmente para textos longos, como os contidos em memorandos.
procedure SetWOLText(Value:PChar); virtual;
Usado para apontar o texto de uma janela igual ao valor contido em Value. Útil em objetos com textos longos, como memorandos.
 
Eventos Públicos
OnDesigner:TDesignerFunction
Usado para processar mensagens do objeto quando este está sendo criado pelo WOLDesigner. Ao ser criado pelo editor, automaticamente o procedimento é associado ao objeto.
OnCreate:TWOLEvent
Evento disparado quando o objeto é criado.
OnDestroy:TWOLEvent
Evento disparado quando o objeto é destruído.
OnClick:TWOLEvent
Evento disparado quando o objeto visual é clicado.
OnDblClick:TWOLMouseEvent
Evento disparado quando ocorre um duplo click sobre o objeto visual.
OnMouseDown:TWOLMouseEvent
Evento disparado quando um botão do mouse é baixado sobre o objeto visual.
OnMouseMove:TWOLMouseEvent
Evento disparado quando o mouse é movido sobre um objeto visual.
OnMouseUp:TWOLMouseEvent
Evento disparado quando o botão do mouse é levantado sobre o objeto.

TWOLVisualControl

É o objeto mais próximo da GUI em uso. Por si só não é visível, mas apresenta todas as características de um objeto visível de forma a facilitar a derivação e apresentar qualquer objeto que se possa ver na janela. Todos os objetos de janela devem ser derivados diretamente desse. É descendente de TWOLBase. Código fonte: WOLGUI01.PP.

Propriedades Descrição
Controls[Index:Integer]:TWOLBase Recupera o objeto de índice index, baseado na ordem de criação.
Focused:Boolean Indica se o objeto de janela tem o foco de teclado ou não.
Brush:TWOLBrush Indica um objeto brush associado ao objeto de janela.
Font:TWOLFont Indica o objeto font associado ao objeto de janela.
Canvas:TWOLCanvas Indica um objeto canvas associado ao objeto de janela.
Ctrl3D:Boolean Indica se o objeto de janela tem ou não aparência 3D.
Handle:TWOLHandle Indica o número do handle do objeto de janela.
ControlCount:Integer Indica a quantidade objetos de janela contidos no objeto corrente.
TabOrder:TWOLInteger Indica a ordem de tabulação do objeto de janela. Se não há ordem, o valor é -1. Essa propriedade só tem efeito em objetos que possam receber o foco do teclado.
TabStop:Boolean Indica que o objeto de janela é um ponto de parada da tabulação. Se objeto não pode receber o foco do teclado, esse valor será False.
Color:TWOLColor Indica o valor da cor de um objeto de janela. A cor é sempre no formato RGB.
Border:TWOLBorderSet Indica o tipo de bordo que o objeto de janela deve ter.
WindowAlign:TWOLWinAlign Indica o tipo de alinhamento que o objeto de janela deve ter.
 
Métodos Públicos
procedure Repaint; virtual;
Usado para forçar o redesenho de um objeto de janela.
function IsPaintMsg(const Message:TWOLMessage):Boolean; virtual;
Usada para se verificar se a mensagem passada é de pintura do objeto de janela.
procedure UpdateBounds; virtual;
Usada para atualizar os valores do retângulo de dimensão do objeto de janela.
function IsControlMouseMsg(var Message:TWOLMessage):Boolean;
Usada para verificar se a mensagem passada se dirige a um determinado objeto de janela.
procedure RemoveControl(Ctrl:TWOLBase); virtual;
Usado para remover um objeto de janela da lista de filhos do seu pai ou dono.
procedure InsertControl(Position:TWOLSmallInt; Ctrl:TWOLBase); virtual;
Usado para inserir um objeto de janela na lista do seu objeto pai ou dono.
function FindTabControl(Ctrl:TWOLVisualControl; aTabOrder:TWOLInteger; GoNext:Boolean):TWOLVisualControl;
Usada para procurar um determinado controle na ordem de tabulação. Se não for encontrado, retorna nil.
function SelectTabControl(Ctrl:TWOLVisualControl; GoNext:Boolean):Boolean;
Usada para selecionar um objeto visual seguinte ou anterior ao atual com relação à tabulação.
procedure AlignChildren(theRect:TWOLRect); virtual;
Usada para alinhar os filhos do objeto visual pela sua área cliente ou pela área determinada por theRect. A distribuição de cada objeto é determinada pela propriedade WindowAlign.
function Broadcast(var Message):Boolean; virtual;
Usada para enviar uma mensagem a todos os objetos visuais filhos. Se um deles processar a mensagem, o retorno será True.
procedure CreateGUIParams(var aParams:TWOLParams; const wClass:TWOLClassType); virtual;
Usado para se comunicar com o kernel da GUI e recuperar os estilos nativos para uma classe. Esses estilos irão determinar o comportamento e o visual do objeto de janela.
procedure CreateWnd(var aParams:TWOLParams); virtual;
Usado para interagir com o kernel para criar efetivamente a janela com os recursos da GUI.
procedure DestroyWnd; virtual;
Usado para destruir a janela do objeto visual. Não destrói o objeto da memória.
procedure RecreateWnd; virtual;
Usado para recriar a janela do objeto visual. Muitas vezes, a mudança de um estilo requer a recriação da janela para refletir o novo comportamento e/ou visual.
function DefaultProc(var Message:TWOLMessage):TWOLLongint; override;
Retorna o valor padrão do procedimento de janela no Windows. Noutras GUIs, geralmente não tem equivalente.
procedure SetFocus; virtual;
Usado para dar a atenção do teclado ao objeto de janela. Nem todos os objetos de janela podem manipular o teclado.
function FindControl(aHandle:TWOLHandle):TWOLVisualControl; virtual;
Usada para encontrar um objeto de janela a partir de seu número de manipulador ou handle.
function FindControlByName(aName:String):TWOLVisualControl; virtual;
Usada para encontrar um objeto de janela a partir do seu nome.
procedure ScrollBy(DeltaX, DeltaY:TWOLSmallInt);
Usada para rolar em qualquer direção a posição de um objeto de janela. Números negativos indicam para cima e para a esquerda.
function SendMessage(var Msg:TWOLMessage):TWOLSmallInt; override;
Envia uma mensagem para o Windows com execução imediata. Em outras GUIs não tem equivalente.
function PostMessage(Msg:TWOLCardinal; WParam:TWOLCardinal; LParam:TWOLCardinal):TWOLCardinal; override;
Semelhante a anterior mas com execução posterior aos processamentos correntes. Não é imediata.
procedure ReleaseMouse; virtual;
Usado para liberar o mouse quando ele é capturado por um objeto de janela.
procedure CaptureMouse; virtual;
Usado para que um objeto de janela capture o cursor do mouse. Um objeto que tem o mouse capturado recebe mensagens do mouse com exclusividade.
procedure Refresh; virtual;
Usado para repintar o objeto de janela.
procedure HandleNeeded; virtual;
Usado para criar um handle para o objeto de janela. Esse procedimento verifica se o objeto tem handle diferente de zero. Caso não tenha, ele chama CreateWnd.
procedure Hide; virtual;
Usado para esconder ou tornar invisível um objeto de janela. Um objeto de janela escondido não recebe mensagens.
procedure Show; virtual;
Usado para mostrar ou tornar visível um objeto de janela.
procedure Redraw; virtual;
Usado para redesenhar um objeto de janela e seus filhos.
procedure DrawDesignFocus; virtual;
Usado em tempo de projeto para desenhar o retângulo de foco do objeto de janela que está sendo manipulado correntemente.
function ClientToScreen(Point:TWOLPoint):TWOLPoint;
Usada para converter um ponto do objeto de janela em coordenadas de tela.
function ScreenToClient(Point:TWOLPoint):TWOLPoint;
Usada para converter um ponto da tela em coordenadas do objeto de janela.
function PointInBounds(Point:TWOLPoint):Boolean; virtual;
Usada para verificar se um ponto está contido na área do objeto de janela.
procedure BringToFront;
Usado para trazer o objeto de janela para frente de todos os outros.
procedure SendToBack;
Usado para enviar o objeto de janela para trás de todos os outros.
procedure OrderByTopLeft;
Usado para ordenar a criação e tabulação dos objetos baseado nas suas posições.
function GetParentForm:TWOLForm;
Usada para recuperar o formulário ou janela na qual está o objeto visual, mesmo não sendo seu dono direto.
function isUniqueName(const S:String):Boolean;
Usada para verificar se o nome de um objeto visual é o único em uma janela.
 
Eventos Públicos
OnHide :TWOLEvent
Evento disparado quando o objeto de janela é escondido.
OnShow :TWOLEvent
Evento disparado quando o objeto de janela é tornado visível.
OnEnter :TWOLEvent
Evento disparado quando o objeto de janela recebe o foco do teclado.
OnExit :TWOLEvent
Evento disparado quando o objeto de janela perde o foco do teclado.
OnResize :TWOLEvent
Evento disparado quando o objeto de janela tem as dimensões modificadas.
OnKeyPress:TWOLKeyEvent
Evento disparado quando o teclado é acionado para o objeto de janela com o foco.
OnCtlColor:TWOLMsgEvent
Evento disparado quando um objeto de janela necessita ser pintado. Essa pintura difere da do Paint, já que apenas a cor pode ser alterada.
OnPaint :TWOLMsgEvent
Evento disparado quando o objeto de janela necessita se pintado. Nesse caso pode-se desenhar qualquer coisa no objeto.
OnPaintBkG:TWOLMsgEvent
Evento disparado quando o fundo do objeto de janela necessita ser desenhado.
OnPaintBrd:TWOLMsgEvent
Evento disparado quando o bordo do objeto de janela necessita ser pintado. Nem toda GUI permite o bordo seja pintado.

TWOLSysDialog

Objeto descendente de TWOLRoot e representa o mais básico dos objetos de diálogo do sistema em uso. Toda caixa de diálogo gerada pelo sistema deve derivar desse objeto. Arquivo fonte: WOLGUI10.PP.

Propriedades do TWOLSysDialog

Propriedade Descrição
Handle Informa o Handle (manipulador numérico) que representa o recurso associado à caixa de diálogo do sistema. Propriedade do tipo TWOLHandle.

Métodos e Eventos Públicos

function Execute:Boolean; virtual; abstract;
Função abstrata que o deve ser implementada no descendente e retorna verdadeiro ou falso conforme a ação do usuário final.
OnClose:TWOLEvent
Evento acionado quando a caixa de diálogo for fechada pelo usuário final.
OnShow :TWOLEvent
Evento acionado quando a caixa de diálogo for mostrada ao usuário final.

Observações (Modelo de Derivação)

Para desenvolver um objeto, deve-se derivá-lo do TWOLRoot. Um modelo de derivação está na biblioteca com o nome de WOLTPL.PP. O acréscimo de uma classe de objetos que não exista na biblioteca implica na criação da identificação da classe na WOLGUI00.PP.

{$I WOLGUI.INC}
unit wolTeste;

interface
uses wolGUI00,
     wolGUI01,
     wolGUI02,
     wolGUI05,
     wolGUI12,
     wolGUI31;

type
   {TWOLTemplate}
   TWOLSpinButton = Class(TWOLEdit)
   private
     FUpDown:TWOLUpDown;
   protected
   public
     constructor Create(AOwner:TWOLRoot); override;
     destructor Destroy; override;
     procedure CreateWnd(var aParams:TWOLParams); override;
     procedure RecreateWnd; override;
     procedure AllocResources; override;
     procedure FreeResources; override;
     procedure SetSize(x, y, w, h:TWOLSmallInt); override;
     function WndProc(var Message:TWOLMessage):Boolean; override;
   end;

implementation

constructor TWOLSpinButton.Create(AOwner:TWOLRoot);
begin
  inherited Create(AOwner);
end;

destructor TWOLSpinButton.Destroy;
begin
  inherited Destroy;
end;

procedure TWOLSpinButton.CreateWnd(var aParams:TWOLParams);
begin
  inherited CreateWnd(aParams);
  FUpDown:=TWOLUpDown.Create(Parent);
  FUpDown.Left:=Left+Width-1;
  FUpDown.Top :=Top;
  FUpDown.Height:=Height;
  if not isHandleZero then FUpDown.HandleNeeded;
  FUpDown.BringToFront;
  FUpDown.Associate:=Self;
  FUpDown.IsAssocInt:=True;
end;

procedure TWOLSpinButton.RecreateWnd;
begin
  FUpDown.DestroyWnd;
  //Window is destroyed by inheritence (TWOLEdit). We need destroy FUpDown.
  inherited RecreateWnd;
end;

procedure TWOLSpinButton.AllocResources;
begin
  inherited AllocResources;
  Width:=40;
  Height:=22;
  //If you need alloc resources, do it here.
end;

procedure TWOLSpinButton.FreeResources;
begin
  inherited FreeResources;
  //If you has allocated resources, free it here.
end;

function TWOLSpinButton.WndProc(var Message:TWOLMessage):Boolean;
begin
  Result:=inherited WndProc(Message);
  //If you need change some message behaviour, do it here.
end;

procedure TWOLSpinButton.SetSize(x, y, w, h:TWOLSmallInt);
begin
  inherited SetSize(x, y, w, h);
  if not assigned(FUpDown) then Exit;
  FUpDown.Left:=x + w - 1;
  FUpDown.Top:=y;
  FUpDown.Height:=h;
end;

end.