Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina POO-II. Material II-Bimestre Objetos de Controle Listas Eventos e Funções página: http://www1.univap.br/~wagner Prof. Responsáveis Wagner Santos C. de Jesus Objetos de Controle Builder C++ conta com uma barra de tarefas capaz de permitir a confecção de rotinas mas sofisticadas com relação a parte visual da aplicação. Paleta de Ferramentas Standard. Padrão Usando Objetos principais do C++(Builder). Criando uma caixa de lista. (ListBox) Atribuindo dados para caixa de lista. Usando a propriedade Items. Permite acrescentar em cada posição da caixa de lista um item enviado pelo métodos Add() que adiciona criando uma nova posição na caixa de texto. Exemplo : ListBox1->Items->Add("Maria"); ListBox1->Items->Add("José"); ListBox1->Items->Add("Célia"); Saída : Onde o primeiro item da caixa de lista é 0 e o terceiro 2 e assim por diante. Em caso nenhum item esteja seleciona o valor será (-1). Capturando o Item Selecionado por intermédio da propriedade ItemIndex. Exemplo : int x = ListBox1->ItemIndex; ShowMessage(x); Obs : No exemplo acima x será um número de 0 a 2. Capturando uma "String" da caixa de Lista. Método Strings[]. Exemplo : int x = ListBox1->ItemIndex; AnsiString a = ListBox1->Items->Strings[x]); Obs : Irá retorna com a string selecionada na caixa de Lista pelo usuário armazenando o conteúdo na variável (a). Criando uma Caixa de Combinação. (ComboBox). Atribuindo dados para uma caixa de combinação. Exemplo : ComboBox1->Items->Add("Item-1"); ComboBox1->Items->Add("Item-2"); ComboBox1->Items->Add("Item-3"); ComboBox1->Items->Add("Item-4"); Saída : Capturando dados de uma caixa de combinação. AnsiString a = ComboBox1->Text; Removendo dados de uma caixa de Combinação. Método Delete(). ComboBox1->Items->Add("Item-1"); ComboBox1->Items->Add("Item-2"); ComboBox1->Items->Add("Item-3"); ComboBox1->Items->Add("Item-4"); ComboBox1->Items->Delete(3); Obs : No exemplo acima o item eliminado será (Item-4). Pois como na caixa de lista a caixa de combinação também inicia na posição 0 (Zero). Atenção : Todas as propriedades e métodos usados para a caixa de lista (ListBox) valem para a caixa de combinação (ComboBox1). Criando uma caixa de verificação. (CheckBox) Exemplo : CheckBox1->Checked = true; Saida : Obs : Marca a caixa de verificação quando recebe verdadeiro e desmarca quando recebe false, podendo ser usado também (0- não selecionado ou 1- Selecionado). Criando botões de rádio. (RadioGroup) Exemplo : RadioGroup1->Items->Add("Masc."); RadioGroup1->Items->Add("Fem."); Saída : Capturando a informação selecionada no botão de rádio. Exemplo : int k = RadioGroup1->ItemIndex; if(k = = 0) ShowMessage("Masc. Foi Selecionado !!!"); else ShowMessage("Fem. Foi Selecionado !!!"); Criando uma Barra de Rolagem. (ScrollBar). Capturando dados de uma Barra de Rolagem. void __fastcall TForm1::ScrollBar1Change(TObject *Sender) { int y = ScrollBar1->Position; Label1->Caption = IntToStr(y); } Obs : Uma Barra de Rolagem possui como propriedades principais Max = 100 (determina o valor máximo que será atribuído para a barra e a propriedade Min = 0, o valor mínimo atribuído) e o Position que retorna o valor selecionado. Criando um Painel. (Panel). Cria um painel para agrupamento de objetos, ou seja tudo o que acontecer em um objeto Panel acontecera também com os outros vinculados ao mesmo painel. Exemplo : (Panel) No exemplo abaixo a programação irá desabilitar os dois botões usando apenas uma única linha sem que seja preciso desabilitar cada botão. Exemplo : Panel1->Visible = 0; Manipulando os Eventos. Evento vem a ser qualquer tipo de operação disparada por um usuário da aplicação desenvolvida. OnClick - Dispara o código de programa ao selecionar o objeto com o click do mouse. Exemplo : void __fastcall TForm1::Button1Click(TObject *Sender) { ShowMessage("Ok, Botão foi Clicado !!!"); } OnChange - Dispara o código quando um objeto sofre algum tipo de modificação. Exemplo : void __fastcall TForm1::Edit1Change(TObject *Sender) { ShowMessage("Houve uma entrada de dados...."); } OnEnter - Dispara o código quando o objeto for selecionado. Exemplo : void __fastcall TForm1::Edit1Enter(TObject *Sender) { ShowMessage("Ok, Entrei na caixa..."); } OnExit - Dispara o código quando o foco abandonar o mesmo. Exemplo : void __fastcall TForm1::Edit1Exit(TObject *Sender) { ShowMessage("Saindo da caixa de Texto .... "); } OnDblClick - Dispara o código quando for selecionado com um duplo click. Exemplo : void __fastcall TForm1::FormDblClick(TObject *Sender) { ShowMessage("Duplo click no formulário .... "); } OnActivate - Dispara o código após ter desenhado o formulário. Exemplo : void __fastcall TForm1::FormActivate(TObject *Sender) { ShowMessage("Crie o Formulário .... "); } OnCreate - Dispara o código antes de desenhar o formulário. void __fastcall TForm1::FormCreate(TObject *Sender) { ShowMessage("Ok"); } OnMouseDown- Dispara o código ao soltar o botão de direito do mouse. void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Form1->Caption = IntToStr(X)+" - "+IntToStr(Y); } OnMouseMove - Dispara o código ao mover o mouse no objeto. void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { Form1->Caption = IntToStr(X)+" - "+IntToStr(Y); } OnClose - Dispara o código antes de fechar o formúlario. void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { ShowMessage("Sair"); } Funções Matemáticas Em C++ temos funções matemáticas padrão para podemos realizar tarefas de cálculos mais complexos. Mas Para isso temos que conhecer uma diretiva de pré-processamento denominada <Math.h>. Os arquivo .h são arquivo de header ou seja cabeçalhos de programas que permitem que algumas implementações particulares a cada aplicação possam ser desenvolvidas sem que haja uma mudança na estrutura da linguagem. Atenção : Para usarmos essas funções devemos incluir no cabeçalho do programa duas diretivas. <stdlib.h>, <math.h>. Usando as funções Matemáticas. Para deve se colocar nas primeira linhas do código de seu formulário a seguinte linha de código. #include <vcl.h> #include <stdio.h> #include <math.h> <= Deve ser colocada no inicio do programa. Exemplo das funções matemáticas. abs() - Retorna com o valor absoluto de um número dado. Sintaxe : <ExpN> = abs(<ExpN>); Exemplo : int k = abs(-3); O valor da variável k será 3 positivo. sqrt() - Retorna com o valor da raiz quadrada do número especificado. Exemplo : double y = sqrt(49); O valor de y será 7. log() - Retorna com valor do logaritmo neperiano correspondente ao parâmetro determinado. Exemplo : double x = log(100) * 0.434343; O valor será aproximadamente 2. A constante 0.434343 converte o logaritmo neperiano para um logaritmo de base 10. random() - Retorna um valor aleatório entre 0 e um número especificado. Exemplo : double x = random(100); Retorna um número aleatório entre zero e cem. randomize() - Ativa os número aleatórios para não evitar repetições. Exemplo : randomize(); exp() - Retorna com o exponencial de um número que equivale 2.718 elevado x, onde x é número. Exemplo : double x = exp(1); O valor de x será 2.718...... cos() - Retorna com o valor do cosseno de um ângulo dado. Exemplo : double y = cos(30 * 3.16 / 180); O valor de y será 0.8 sin() - Retorna com o valor do seno de um ângulo dado. Exemplo : double y = sin(30 * 3.16 / 180); O valor de y será 0.5 tan() - Retorna com o valor da tangente de um ângulo dado. Exemplo : double y = tan(30 * 3.16 / 180); O valor de y será 0,5773 pow() - retorna com o valor de uma base elevado a um expoente. Exemplo : double z = pow(3,2); O valor de y será 9. Funções de Manipulação de Strings. Atenção : Na linguagem C++, não existe um tipo String e sim AnsiString incorporado no Builder mas para fazermos manipulações de caracteres devemos usar a lógica para que aconteça, por isso cuidado. Usando as funções de Manipulação de caracteres. StrCat() - Concatena duas String ou seja um conjunto de caracteres do tipo char. Sintaxe : StrCat(<ExpC1>,<ExpC2>); Exemplo : char text[30] = "Coca"; StrCat(text,"-Cola"); Será armazenado na variável text a palavra Coca-Cola. strlen() - Retorna com armazenados em um char. Sintaxe : <ExpN> = strlen(<ExpC>); Exemplo : char lixo[10] = "Laranja"; int x = strlen(lixo); ShowMessage(x); o número de caracteres Quebrando uma String(*) AnsiString a = "Maria das Couves"; ShowMessage(a[1]); Obs: Neste caso será pego o caracter “M” na String. length(): Retornar o número de caracteres da String(*) AnsiString a = “Abacaxi”; int x = a.length(); O valor de x será igual a 7. Exemplo pegando um caracter na String(*) void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString a = "Maria das Couves"; int x = a.Length(); for(int i=1;i<=x;i++) ShowMessage(a[i]); } StrComp() - Compara duas strings retornando a prioridade ou a igualdade das mesmas. Sintaxe : <ExpN> = StrComp(<Str1>,<Str2>); Exemplo : char lixo[20] = "B"; char lixo2[20] = "A"; int y = StrComp(lixo2,lixo); ShowMessage(y); <0 Str1< Str2 =0 Str1= = Str2 >0 Str1 > Str2 StrCopy() - Copia um conjunto do tipo char formando uma String. Podendo ser armazenado em AnsiString. Sintaxe : StrCopy(<ExpC1>, <ExpC2>); Exemplo : char str1[10] = "Morango"; char str2[10]; StrCopy(str2,str1); AnsiString z = str2; A saída será z = "Morango". FormatFloat() - Permite formatar um número com casas decimais determinadas. Sintaxe : <ExpAnsiStr> = FormatFloat(<Formato>,<ExpN>); Exemplo : Edit1->Text = FormatFloat("#,##0.00",123.5678); O valor da caixa de Texto será 123,57. AnsiPos() - Retorna em que posição existe um determinado caracter em um AnsiString. Sintaxe : <ExpN> = AnsiPos(<ExpS1>,<ExpS2>); Exemplo : char lixo[20] = "Letras"; int x = AnsiPos("a",lixo); ShowMessage(x); O Valor da Variável x será 5. c_str() – Converte uma String em um Array de caracteres do tipo (char). Sintaxe : <ObjetoString>.c_str(); Exemplo : char recebe[20]; StrCopy(recebe, Edit1->Text.c_str()); Obs : Se a caixa de texto receber a palavra morango então a variável recebe será como o diagrama abaixo. Recebe[7] =