Cadastre-se Revistas DevMedia Cursos
 

Space de Thyago Thompson Veras de Oliveira
Busca Autor


Últimas 20 atualizações de Thyago Thompson Veras de Oliveira

Artigo - Criação de Componentes Delphi Win32 - 3/3

Criando Componentes com Eventos Programados – Parte III

Instalando o Componentes TMoveLabel

 

Para finalizar a “Trilogia”, vamos nos despedir mostrando a instalação do componente criado (TMoveLabel).

 

 

Dê um clique de direita em cima da sua Package (PackMyComponents.bpl), opção Install...

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
26/12/2010 23:56:00





Artigo - Criação de Componentes Delphi Win32 - 2/3

Criando Componentes com Eventos Programados – Parte II

Criando o Componente TMoveLabel

 

Nesta segunda parte, construiremos nosso próprio componente com a funcionalidade de poder ser movido em Run-Time.

 

1º Passo:

                Precisamos criar uma nova “Package” ou abrir uma já existente, porque no RAD2007 nós não podemos mais instalar um componente a partir de um simples arquivo .pas, esse arquivo precisa está contido é um pacote (package). Siga as etapas mostradas na(s) figura(s) abaixo:

 (File > New > Package - Delphi for Win32)


O nome sugerido pelo Delphi para sua Package será Package1, (claro que, como bons programadores que somos) iremos mudar para um nome mais amigável, por exemplo, PackMyComponents. Salve a nova Package.

 

2º Passo:

 

Herdaremos nosso componente do TLabel nativo do Delphi e o chamaremos de TMoveLabel (Poderíamos criar tais funcionalidades para praticamente todos os componentes da VCL que sejam visuais).

 

            Como vimos na Introdução, os eventos manipulados para tais funcionalidades são: OnMouseMove, OnMouseUp e OnMouseDown, então, criaremos três métodos que os representarão e “setaremos”,  no Construtor do novo componente fazemos um “link” para que o nosso novo componente receba nos seus eventos o código necessário para atingir as funcionalidades desejadas, ou seja, quando o componente for colocado na tela, seja estaticamente ou em tempo de execução, tais funcionalidades já estarão encapsuladas nele. Difícil? Você vai ver que não.

 

Vamos lá...

 

Com o Projeto da nossa Package (PackMyComponents) aberto, crie um Novo componente:

 

(Menu Component > New VCL Component)

 


 


 

Escolha o componente que deseja estender a herança (No nosso exemplo, TLabel). Clique em NEXT.

 


 

Em “Class Name”, defina o nome da Classe do seu novo componente, neste exemplo chamaremos de TMoveLabel.

 

Na opção “Palette Page”, indique em qual Paleta de componentes este nosso componente será instalado, por padrão, o Delphi indica a Samples (mais poderia ser Standart, Additional ou qualquer outra), porem vamos criar uma nova Pagina onde ficará todos os componentes que nós criarmos. Vamos pedir que o Delphi crie uma pagina chamada MyComponents (este nome fica a cargo do programador, o nome MyComponents é só uma sugestão e será usado para este exemplo).

 

Na opção “Unit Name”, indique onde será salva esta unit de criação do componente, escolha um diretório a sua escolha e chame a Unit de MoveLabel.pas.

 

Clique em NEXT

 


 

Neste formulário indique se vamos criar essa Unit desvinculada da Package ou não. Marcando a opção “Add Unit to PackMyComponents.dproj project”, você além de esta criando a Unit de criação do componente, está automaticamente vinculando-a a Package existente. Essa é a melhor opção para o exemplo. Clique em Finish.

 


 

Se nós instalarmos o componente neste momento, ele será de funcionamento idêntico ao TLabel.

 

Agora vem o “1º Pulo do gato...”

 

Como os Eventos OnMouseMove, OnMouseDown e OnMouseUp são os responsáveis pela nova funcionalidade do nosso componente, então, criaremos 03 métodos que os representaram, chamaremos de MouseMove, MouseDown e MouseUp respectivamente e no Constructor associaremos nossos métodos, aos eventos “oficiais” do Componente. Veja...

Criando os Métodos

 

Como vamos atribuir os métodos aos respectivos eventos do componente, precisamos criá-los com os mesmo parâmetro.

 

A assinatura dos métodos serão na seção Public.

 

    procedure MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

    procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

    procedure MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

 

Sem esquecer o constructor do nosso componente

 

    constructor create(AOWner: TComponent); override;

 

Deixando a Unit com o seguinte código:

 

unit MoveLabel;

 

interface

 

uses

  SysUtils, Classes, Controls, StdCtrls, Windows;

 

type

  TMoveLabel = class(TLabel)

  private

    { Private declarations }

  protected

    { Protected declarations }

  public

    { Public declarations }

    procedure MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

    procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

    procedure MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

 

    constructor create(AOWner: TComponent); override;

 

    var

      Capturing: Boolean;

      MouseDownSpot: TPoint;

 

  published

    { Published declarations }

  end;

 

procedure Register;

 

implementation

 

procedure Register;

begin

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
26/12/2010 23:45:00





Artigo - Criação de Componentes Delphi Win32 - 1/3

Criando Componentes com Eventos Programados – Parte I

Contexto Geral

Na Internet encontramos diversos artigos (muito bacanas, diga-se de passagem) que mostram como mover um componente em Run-Time, usando os Eventos OnMouseMove, OnMouseDown e OnMouseUp.

Neste Artigo (“Criando Componentes com Eventos Programados”), vamos criar nosso próprio componente que já possuíram tais funcionalidades, ou seja, o nosso componente já virá com os eventos (citados acima) programados. Portanto, quando instalarmos não precisará construir nenhuma linha de código para que ele tenha tal comportamento.

Para esse artigo será utilizado CodeGear RAD Studio 2007 – Delphi Win32, mais funcionaria em qualquer versão do Delphi, com diferença apenas na Instalação.

“Bom, acho que é hora de pôr a mão na massa”.

Vamos começar fazendo o modelo antigo...

(Se você quiser “Dinamizar” algo, deve conhecer primeiro o seu funcionamento “Burocrático”.)

 

                O que faríamos se largássemos um componente na tela e quiséssemos atribuir tais funcionalidades? Veja como é fácil.

 

 

Temos um Formulário com um Label (THYAGO THOMPSON) sendo executado e sabemos que em modo de projeto, podemos posicionar esse Label em qualquer lugar a nossa escolha dentro do repositório que o mesmo está contido (Form, Panel, GroupBox, etc).

Imagine fazer isso com a aplicação em funcionamento. Por padrão isso não pode ser feito, a não ser que antes de gerar nosso executável, programemos tais funcionalidades no nosso componente.

 

Então, é a nossa hora...

 

Vamos criar um novo Projeto Win32 (File > New > VCL Forms Application – Delphi for Win32), como mostra a figura abaixo.

 


 

Largue dentro do formulário, 02 Componentes Label (Tool Palette Standard) e chame-os de lblDinamico e lblEstatico respectivamente. Como mostra a figura abaixo.

 

 

 

Selecione o 1º Label (lblDinamico), e programe os eventos OnMouseMove, OnMouseUp e OnMouseDown da seguinte forma:

 

var

  Form1: TForm1;

 

  MouseDownSpot: TPoint;  {Variável usada para armazenar a posição atual do Componente (X (Left) e Y (Top)}

  Capturar: boolean; {Variável que indica

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
26/12/2010 23:17:00





 
Foto não disponivel

Desenvolvedor Delphi há 12 anos, Analista da Neurotech, Instrutor dos Cursos de Delphi Developer da TWM Tecnologia. Win32 e .NET
Arquivo de atualizações
 2010

Estatísticas do Autor:
Número de posts: 3
Características dos posts deste autor:
Conteúdo:
Utilidade:
4 0
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
Todos os Direitos Reservados a DevMedia Group