Precisa de um freelancer, códigos-fonte e exemplos completos?
Bem-vindo(a) ao meu site. Além de realizar alguns serviços como freelancer eu tenho alguns códigos-fonte e exemplos completos de Java, Delphi, PHP, Python, C/C++, Hibernate, JPA, Spring, JSP, Servlets, Ruby, Ruby On Rails e muitas outras linguagens e frameworks. Veja como falar comigo clicando aqui.
 
Arquivo de Códigos - Página Inicial
Códigos-fonte
» Códigos-fonte e exemplos completos
Linguagens
» ActionScript
» Adobe AIR
» Adobe Flex
» AJAX
» C
» C#
» C++
» CSS
» Delphi
» DHTML - Dynamic HTML
» HTML/XHTML
» Java
» JavaFX
» JavaScript
» Java Servlets
» JSP - Java Server Pages
» Perl
» PHP
» PHP-GTK
» Python
» Ruby
» Tcl/Tk
» VB.NET
Bancos de Dados
» IBM DB2
» MySQL
Frameworks
» CodeIgniter
» jQuery
» JSF - Java Server Faces
» Qt
» Ruby On Rails
» Struts
» Struts 2
» wxWidgets
» Zend Framework
Container/Servidor
» Apache Tomcat
» Apache Web Server
Ferramentas
» Apache Ant
» iTextSharp (iText#)
Referências
» CSS1 e CSS2
» JavaScript
Serviços On-Line
» Qual é meu IP?
» Tabela Cores HTML I
» Tabela Cores HTML II
» Lista de Mime Types
» Códigos Teclas Virtuais
Usuários On-Line
Visitantes: 207
PHP
O que há de novo no PHP 5?
40 dicas e truques sobre como trabalhar com datas e horas em PHP
60 dicas e truques sobre como trabalhar com strings e caracteres em PHP
PHP e a Orientação a Objetos - POO (Curso Completo)

DHTML
Curso completo de DHTML para iniciantes

CSS
Como definir uma imagem de fundo fixa na página
Definindo uma imagem de fundo para botões HTML
Você está aqui: Inicio -> Tutoriais -> Delphi
TControl, TComponent, TWinControl: Qual a diferença?
1 - Introdução

É comum durante a programação em Delphi, encontrarmos referências aos termos TControl, TComponent, entre outros. Se você não é o tipo de programador que se dedica a escrever componentes, tais termos podem parecer totalmente sem importância.

No entanto, existe situações em que devemos ter, no mínimo, uma idéia vaga do que eles significam. Um exemplo, são os trechos de códigos que exigem cast (conversão) de um tipo para outro. Vejamos o trecho de código a seguir:

procedure TForm1.Button1Click(Sender: TObject);
var
  controle: TComponent;
begin
  controle := Edit1; // Edit1 é atribuido a um TComponent
  (controle as TEdit).Text := 'Olá'; // De volta ao TEdit
  // controle.Text := 'Olá'; // não funciona
end;


Temos uma variável controle do tipo TComponent. A linha:

controle := Edit1;

atribui a esta variável um TEdit. Esta atribuição é válida, já que TEdit descende de TComponente, como veremos mais adiante. Veja agora a linha:

(controle as TEdit).Text := 'Olá';

Aqui o uso do operador as é obrigatório por uma razão simples: um TEdit é um TComponent, mas um TComponent não é um TEdit. Assim, o cast é nossa forma de informar ao compilador que estamos certos de que a variável controle armazena uma referência a um TEdit, e que a conversão pode ser feita sem riscos. Veja agora a última linha:

// controle.Text := 'Olá';

Este linha não compilará, visto que um TComponent não possui as propriedades e métodos da classe TEdit. TEdit, como veremos no gráfico a seguir, descende de TWinControl.

2 - A hierarquia VCL

Um TEdit descende de TWinControl, mas, um TLabel descende de TGraphicControl. Porque? Vejamos o gráfico da hierarquia VCL:


Este gráfico nos mostra que tudo em Delphi descende de TObject. Vamos ver se é verdade. Execute o trecho de código a seguir:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Edit1 is TObject then
    ShowMessage('Passou no teste');
end;


Ao executar o código você perceberá que o teste resulta verdadeiro. Agora, respondendo a pergunta do tópico: Um TEdit descende de TCustomControl, que por sua vez descende de TWinControl. Todos os componentes que aceitam entrada do usuário ou que servem como encapsuladores para componentes visuais do Windows descendem de TWinControl. TLabel, por sua vez, descende de TGraphicControl por não receber entrada do usuário e ser considerado um controle de peso leve.

3 - TCustomEdit

Dissemos que um TEdit descende de TWinControl. Porém, é importante conhecer a classe que faz o elo entre TEdit e TWinControl. Esta classe é chamada de TCustomEdit e serve como base para todos os componentes do tipo texto e serve como ponto inicial para a criação de um TEdit personalizado, ou seja, você pode facilmente estendê-la ou simplesmente redefinir muitos de seus métodos e propriedades.

4 - Conclusão

Entender a hierarquia VCL é importante não somente para tirar o máximo proveito dos componentes que o Delphi oferece, como também escrever códigos mais compactos e robustos. E, ainda que não seja o seu objetivo, escrever componentes personalizados pode ser um passatempo muito interessante. Você também deveria tentar.
 
 
Arquivo de Códigos - Página Inicial
Veja dicas, truques e anotações de Apache Ant
Veja dicas, truques e anotações de outras linguagens
VB.NET - O que você precisa saber sobre arquivos e fluxos (streams)
Ruby - Entendendo o laço until da linguagem Ruby
CodeIgniter - O que são e como usar models em aplicações CodeIgniter
C# (CSharp) - Como verificar se uma CheckBox está marcada ou desmarcada
C# (CSharp) - Verificar se uma substring está contida no final de uma string
C - Funções em C: Os mistérios da passagem por valor e passagem por referência
C++ - Como declarar um vector de strings, inserir alguns nomes e percorrê-los usando um iterador
Java - Provocar quebras de linhas em arquivos para leitura sob o Windows
Java - Definir a cor de fundo para um JTextArea
PHP - Como obter o dia da semana na forma abreviada e em português

       

http://www.arquivodecodigos.net
:: Arquivo de Códigos - Softwares e Consultoria em Programação ::
Todo o conteúdo deste site, quando não devidamente observado, pertence a seus idealizadores e não
poderá ser usado para outras finalidades senão estudo e aprimoramento de técnicas de programação.
Certifique-se de ler as notas legais antes de proceder com o acesso e leitura do
conteúdo disponibilizado nestas páginas.

Fale Conosco: (62) 3261-7018 / (62) 8185-0734

Desenvolvedor Responsável: Osmar J. Silva

Página Inicial Contatos Pesquisar Mapa do Site