|
Usuários |
|
72 Usuários Online
|
|
[Artigos]
Tipos Enumerados em Delphi |
Publicado por rboaro : Segunda, Janeiro 21, 2013 - 07:55 GMT-3 (654 leituras)
3 Comentários Enviar para um amigo Versão para impressão
|
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 pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos. |
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 |
|
|
50 Programas Fontes |
|
|
Produtos |
|
|