O tipo enum
O tipo enum cuida tratar de um tipo cuja sintaxe é bastante elaborada, para conter um conjunto de valores definidos pelo usuário chamados dados de tipos enumerados ou enumeração.
Usando a palavra-chave enum, podemos definir um conjunto de constantes agrupadas sob um nome como um novo tipo de dados, somando-se uma nova maneira às duas formas apresentadas anteriormente para definição de constantes. A essa coleção de constantes, dá-se o nome de constantes enumeradas.
As constantes enumeradas possibilitam-nos a criação de novos tipos de dados, bem como a definição de variáveis desses tipos, sendo que os valores assumidos ficam restritos a determinada coleção de valores. Podemos, por exemplo, declarar uma enumeração representando os meses do ano:
enum Meses_do_Ano
{
janeiro,
fevereiro,
marco,
abril,
maio,
junho,
julho,
agosto,
setembro,
outubro,
novembro,
dezembro
}; // Fim de enum Meses_do_AnoFeito isso, podemos definir variáveis do tipo Meses_do_Ano, que podem assumir apenas valores inteiros:
enum Meses_do_Ano
{
janeiro = 0,
fevereiro = 1,
marco = 2,
abril = 3,
maio = 20,
junho = 21,
julho = 22,
agosto = 56,
setembro = 57,
outubro = 58,
novembro = 200,
dezembro = 201
}
Observe que cada constante enumerada possui um valor inteiro e que podemos atribuir um valor específico a determinada constante. Todavia se não especificarmos tal valor, a primeira constante assumirá o valor 0; a segunda, 1; a terceira, 2; a quarta, 3; e assim sucessivamente. Como, em nosso exemplo optamos por atribuir valores aleatórios às constantes, percebemos que as constantes subseqüentes assumem valores com incremento de 1 a partir das que receberam um valor qualquer (em nosso exemplo, os meses de maio, agosto e novembro).
Internamente as constantes enumeradas são representadas como sendo do tipo int.
O exemplo a seguir contém um Label no Form. Quando o usuário dá um clique no Label, uma caixa de inserção de dados aparece para que seja digitado um valor entre 1 e 12. Dependendo do valor digitado, teremos a resposta dos mês correspondente no Label:
//---------------------------------------------------------------------------
void __fastcall TForm1::Label1Click(TObject *Sender)
{
enum Meses_do_Ano
{
janeiro = 1, // especifica o valor 1 para a primeira constante
fevereiro, // vale 2
marco, // vale 3 ...
abril,
maio,
junho,
julho,
agosto,
setembro,
outubro,
novembro,
dezembro
}; // Fim de enum Meses_do_Ano
// declara variável do tipo Meses_do_Ano
Meses_do_Ano Mes;
//declara variável int
int iMes;
iMes = StrToInt(InputBox ("Caixa para colheita de Valores",
"Digite um número entre 1 e 12", ""));
Mes = Meses_do_Ano(iMes);
switch(Mes)
{
case 1:
Label1 -> Color = clGreen; /*escolha uma cor diferente para cada mês*/
Label1 -> Font -> Name = "Arial"; /*e uma font para cada mês*/
Label1 -> Font -> Color = clYellow; /*e uma cor de font para cada mês*/
Label1 -> Caption = AnsiString(iMes) + " equivale a janeiro...";
break;
case 2:
Label1 -> Color = clGreen;
Label1 -> Font -> Name = "Arial";
Label1 -> Font -> Color = clYellow;
Label1 -> Caption = AnsiString(iMes) + " equivale a fevereiro...";
break;
case 3:
Label1 -> Color = clGreen;
Label1 -> Font -> Name = "Arial";
Label1 -> Font -> Color = clYellow;
Label1 -> Caption = AnsiString(iMes) + " equivale a março...";
break;
case 4:
Label1 -> Color = clGreen;
Label1 -> Font -> Name = "Arial";
Label1 -> Font -> Color = clYellow;
Label1 -> Caption = AnsiString(iMes) + " equivale a abril...";
break;
case 5:
Label1 -> Color = clGreen;
Label1 -> Font -> Name = "Arial";
Label1 -> Font -> Color = clYellow;
Label1 -> Caption = AnsiString(iMes) + " equivale a maio...";
break;
case 6:
Label1 -> Color = clGreen;
Label1 -> Font -> Name = "Arial";
Label1 -> Font -> Color = clYellow;
Label1 -> Caption = AnsiString(iMes) + " equivale a junho...";
break;
case 7:
Label1 -> Color = clGreen;
Label1 -> Font -> Name = "Arial";
Label1 -> Font -> Color = clYellow;
Label1 -> Caption = AnsiString(iMes) + " equivale a julho...";
break;
case 8:
Label1 -> Color = clGreen;
Label1 -> Font -> Name = "Arial";
Label1 -> Font -> Color = clYellow;
Label1 -> Caption = AnsiString(iMes) + " equivale a agosto...";
break;
case 9:
Label1 -> Color = clGreen;
Label1 -> Font -> Name = "Arial";
Label1 -> Font -> Color = clYellow;
Label1 -> Caption = AnsiString(iMes) + " equivale a setembro...";
break;
case 10:
Label1 -> Color = clGreen;
Label1 -> Font -> Name = "Arial";
Label1 -> Font -> Color = clYellow;
Label1 -> Caption = AnsiString(iMes) + " equivale a outubro...";
break;
case 11:
Label1 -> Color = clGreen;
Label1 -> Font -> Name = "Arial";
Label1 -> Font -> Color = clYellow;
Label1 -> Caption = AnsiString(iMes) + " equivale a novembro...";
break;
case 12:
Label1 -> Color = clGreen;
Label1 -> Font -> Name = "Arial";
Label1 -> Font -> Color = clYellow;
Label1 -> Caption = AnsiString(iMes) + " equivale a dezembro...";
break;
default:
ShowMessage(AnsiString(iMes) + " não é um valor válido...");
break;
}
}
//---------------------------------------------------------------------------
|
HOME || MAPA DO SITE || CURSOS || TUTORIAIS || LINKS || FORUM || CONTATO |