Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 12 de Junho de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
72 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Tipos Enumerados em Delphi
Publicado por rboaro : Segunda, Janeiro 21, 2013 - 07:55 GMT-3 (654 leituras)
Comentários 3 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Diego Garcia Basicamente os Enumerations são tipos enumerados que pode ser utilizado como uma lista organizada de itens onde é definido um range e os valores destes range serão acessados por um nome de valor e não por um numero. Um exemplo bem comum em nosso dia a dia é o Boolean, um tipo enumerado com duas possibilidades (True ou False). Para facilitar a compreensão, vamos fazer um exemplo simples, vamos fazer uma rotina que verifica se um dia da semana é fim de semana ou não.
type
TDiasSemana = (Domingo, Segunda, Terca, Quarta, Quinta, Sexta, Sabado);

Apesar de internamente este tipo enumerado possuir um índice para cara item, a ideia é que com essa declaração temos um tipo que pode receber os valores especificados em sua declaração, exemplo:

var
Dia : TDiasSemana;
begin
Dia := Segunda;
if Dia = Sabado then
...
end;

Até aqui já sabemos o básico sobre tipos enumerados, para completar meu exemplo, vamos fazer a função que verifica se um dia passado como parâmetro é um fim de semana ou não.

//solução com case
function VerificarFimDeSemana(Dia: TDiasSemana): Boolean;
begin
case Dia of
Segunda..Sexta: Result := false;
else Result := true;
end;
end;

//solução com if reduzido
function VerificarFimDeSemana(Dia: TDiasSemana): Boolean;
begin
Result := not (Dia in ([Segunda..Sexta]));
end;

A chamada desta função poderia ser feita desta forma:
VerificarFimDeSemana(Sabado)

O uso de tipos enumerados pode muito bem substituir o uso excessivo de constantes. Mas vamos imaginar uma interação com interface, como seria popular um TComboBox com um tipo enumerado? Simples, com a ajuda da unit typinfo isso fica moleza.

uses
typinfo;

procedure PopularCombo(combo: TComboBox);
var
Dias : TDiasSemana;
begin
Combo.Clear;
for Dias:= Domingo to Sabado do
Combo.Items.Add(GetEnumName(TypeInfo(TDiasSemana),Integer(Dias)));
end;

Esta função GetEnumName() retorna o nome de um determinado item de um tipo enumerado e a função Integer retorna o valor do indice interno do item do tipo enumerado, para o nosso tipo TDiasSemana, teremos:

0 = Domingo
1 = Segunda
2 = Terca
3 = Quarta
4 = Quinta
5 = Sexta
6 = Sabado

Para chamar a função VerificarFimDeSemana() a partir de um dos itens deste TComboBox basta fazer desta maneira:
VerificarFimDeSemana(TDiasSemana(Combo.ItemIndex));


Uma opção legal para o uso de tipo enumerados é em propriedades de componentes ou até mesmo em atributos de classes, enfim, sabendo como usar, o céu é o limite. Até a próxima.


Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: cobaiaoo (cobaiaoo@hotmail.com) : Jan 21, 2013 - 03:30
(Informações sobre o membro | Enviar uma mensagem) http://
legal :)


por: josinaldo.kraft@gmail.com (josinaldo.kraft@gmail.com) : Abr 09, 2014 - 01:29
(Informações sobre o membro | Enviar uma mensagem)
Ótimo artigo, esses dados (domingo, segunda, ...) eu tenho numa tabela mysql, em um campo tipo ENUM

SELECT SUBSTRING(COLUMN_TYPE,5)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA='BANCODEDADOS'
AND TABLE_NAME='TABELA'
AND COLUMN_NAME='CAMPOX' ;

ele retorna (domingo, segunda, ...) tem como eu preencher dinamicamente o TDiasSemana ?
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados