Baixe o app para aproveitar ainda mais
Prévia do material em texto
CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Programação VisualProgramação Visual Prof. Dr. Edison Puig MaldonadoProf. Dr. Edison Puig Maldonado Notas de aulaNotas de aula 20022002 1 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Programação Visual com o PROGRAMAÇÃO VISUAL ORIENTADA A EVENTOS 1 INICIANDO O C++ BUILDER 1 ENTRANDO NO C++ BUILDER 5 CRIANDO E GERENCIANDO PROJETOS 12 CRIANDO FORMS 16 CRIANDO MENUS 24 TRABALHANDO COM O EDITOR DE CÓDIGO 28 TRABALHANDO COM MANIPULADORES DE EVENTOS 29 PROGRAMANDO COM OBJETOS 31 COMPILANDO E AJUSTANDO OPÇÕES DO PROJETO 34 CRIANDO UMA APLICAÇÃO MDI 37 2 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Programação Visual Orientada a Eventos Programação Orientada a Eventos Esta metodologia de programação consiste em criar aplicações utilizando os componentes já existentes no ambiente (software) de desenvolvimento rápido de aplicações, e editando o código diretamente nos eventos gerados pelo componente. Neste caso, o programador esta utilizando um conjunto de características pré-definidas para cada componente, sem que sejam criadas novas propriedades, métodos ou até mesmo novos componentes para aplicação. Programação Orientada a Objetos A programação orientada a objetos visa a criação de novos componentes, ou novas propriedades dos componentes existentes com objetivo de torná-los mais genéricos. Iniciando o C++ Builder Introdução O C++ Builder da Borland é um ambiente visual, orientado a objetos que tem por finalidade desenvolver aplicações rapidamente para o Windows 95/98/NT. Estas aplicações podem ser de propósitos gerais ou cliente/servidor. Usando o C++ Builder, você pode criar eficientes aplicações Windows com o mínimo de codificação manual. O BCB disponibiliza uma extensa biblioteca de componentes reutilizáveis e um ambiente de ferramentas RAD (Desenvolvimento de Aplicações Rápida). Quando você inicia o BCB, você é imediatamente colocado com o ambiente de programação visual. É com este ambiente que o BCB disponibiliza todas as ferramentas que você necessita para criar, desenvolver, testar, e debugar suas aplicações. Iniciando o C++ Builder A figura abaixo mostra como o BCB irá aparecer quando for rodado pela primeira vez: 1 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado O C++ Builder ambiente de desenvolvimento (também chamado de IDE), tem várias partes flexíveis que você poderá coloca-las em qualquer local da tela. A janela principal contem o menu principal, barra de ferramentas e a paleta de componentes. O Object Inspector, Editor de Código e o formulário são automaticamente apresentados. Quando você estiver trabalhando, você poderá redimensionar cada parte e mostrar ferramentas adicionais conforme a sua necessidade. 2 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Acessando comandos rapidamente O menu principal no topo da janela principal, disponibiliza acesso a vários comandos e ferramentas do BCB. Você pode também ver uma barra de ferramentas no cantos esquerdo, embaixo do menu principal. Ela contem botões que podem ajuda-lo quando estiver trabalhando. Cada botão executa uma operação ou comando ( Abrir Arquivo, Salvar Projeto, Rodar, entre outras). A figura abaixo ilustra a barra de ferramentas e mostra a função de alguns botões. Clique com o botão direito do mouse na barra de ferramentas e escolha propriedades, você poderá personaliza-la de acordo com as suas necessidades. Criando uma aplicação O BCB imediatamente apresenta as ferramentas necessárias para que você inicie a criação da aplicação. • Uma janela em branco, conhecida como formulário, na qual você criará a interface do usuário • Uma extensiva biblioteca, chamada de componentes • Uma maneira fácil de alterar as propriedades de um objeto, utilizando o Object Inspector • Acesso direto ao código do programa utilizando o Editor de Código Você pode usar o BCB para criar aplicações de 32-bits de qualquer tipo. Desde aplicações de propósitos gerais, até sofisticados programas de acesso a banco de dados. Criando a interface da aplicação Todo o trabalho de criação no BCB é visual. Quando você abre ou cria um novo projeto, um formulário em branco e mostrado na tela. Você poderá usá-lo para iniciar a construção de sua interface e box de dialogo. Você cria visualmente a interface da aplicação colocando e ajustando, no formulário, componentes visuais tais como botões e caixa de listagem. Você também pode colocar componentes não-visual que tem por finalidade capturar informações de banco de dados ou gerenciar outras interações. Criando a Interface do Usuário, permitirá que você crie um esqueleto (protótipo) da aplicação rapidamente e visualize como ela irá trabalhar. Adicionando componentes Componentes são elementos que você usa para construir suas aplicações BCB. Eles incluem todas as partes visíveis de sua aplicação tais como, box de dialogo e botões; bem como as partes não visíveis enquanto a aplicação estiver rodando, como os Timers. Muitos componentes visuais são disponibilizados no ambiente de desenvolvimento na paleta de componentes. Você seleciona o componentes da paleta e arrasta-o no formulário que você esta desenvolvendo. Uma vez que o componentes esteja no formulário você poderá ajustar as sua propriedades como, posição, tamanho entre outras. O BCB agrupa os componentes, em diferentes páginas, de acordo com a sua funcionalidade. Formulários e componentes tem muitos pontos em comum; você pode imaginar que um formulário é um objeto que pode conter outros componentes. 3 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado O BCB inclui vários componentes que você pode usar na VCL (Biblioteca de Componentes Visual). Verifique o Help VCL Reference para mais detalhes dos componentes disponíveis. Você pode personalizar a biblioteca de componentes adicionando ou removendo componentes, ou ainda escrever seus próprios componentes. Alterando o comportamento do componente Você pode facilmente personalizar a aparência e o comportamento de sua aplicação usando o Object Inspector. Quando um componente tem o foco no formulário, suas propriedades e eventos são mostrados no Object Inspector. Usando a página Propriedades do Object Inspector, você ajustará os valores iniciais, dos componentes, com o qual sua aplicação irá iniciar. Você usará a página Eventos para navegar através dos eventos que o componente pode ter. Dando um clique em um evento em particular, o BCB irá gerar o código para este evento ( event handler).Você apenas deverá completar o código de acordo com a ação desejada. Criando menus Depois de você adicionar um componente menu ao formulário, você poderá usar o Menu Designer para criar e editar o menu principal e menus pop-up. Você precisa adicionar um componente menu ao seu formulário para cada menu que você quer incluir em sua aplicação. Os menus que você cria, são imediatamente visíveis no formulário sem ter que rodar a aplicação para ver o resultado. Você também poderá alterar o menu em tempo de execução, para que o usuário final possa adicionar opções ao menu. Desenvolvendo aplicações Como você desenvolve visualmente a interface do usuário da sua aplicação, o BCB gera automaticamente o código C++ da aplicação. Você seleciona e modifica as propriedades dos componentes e formulários, o resultado destas alterações são refletidas, automaticamente no código fonte, e vice-versa. Editando o código fonte O BCB Editor de Código é um completo e poderoso editor ASCII. Com o Editor de Código, você poderá visualizar e editar todos os códigos fontes que seu projeto contem. A figura abaixo mostra um arquivo chamado unit1.cpp; o arquivo default criado para cada novo projeto. Este arquivo e um dos vários arquivos que compõem um Projeto BCB. 4 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Escrevendo aplicações de banco de dados O BCB possui um completo suporte para se criar aplicações avançadas de banco de dados. Ele inclui ferramentas que permitem você se conectar com Oracle, Sybase, Informix, dBase, Paradox, ou outro servidor, enquanto disponibiliza um transparente compartilhamento de dados entre aplicações. O Borland Database Engine (BDE) suporta aplicações cliente servidor. Ferramentas como o Database Explorer, simplificam o trabalho de escrever aplicações de banco de dados. O Database Explorer e um browser para inspecionar e modificar especificação de servidor de dados, incluindo tabelas, campos, armazenar definições de procedimentos, descrição de índices entre outra funções relacionadas. Entrando no C++ Builder Iniciando uma nova aplicação Antes de iniciar qualquer nova aplicação, você deverá criar o diretório que irá armazenar os códigos fontes da aplicação. Desta maneira, você não irá "misturar" arquivos da sua aplicação com outros tipos de arquivos. 1. Cria um diretório chamado MySource a partir da raiz do seu drive de trabalho. Ele irá armazenar todos os arquivos do projeto que você irá criar com este exemplo. 2. Abra um novo projeto. Cada aplicação é representado no BCB por um projeto. Quando você inicia o BCB, ele abre um projeto em branco por default. Se um outro projeto já estiver aberto, escolha File | New Application para criar um novo projeto. Quando um novo projeto é aberto, BCB automaticamente cria dois arquivos: • Unit1.cpp: arquivo fonte associado com o formulário principal do projeto. • Project1.cpp: arquivo fonte que mantém os caminhos (localizações) dos formulários do seu projeto. 3. Escolha File | Save All para salvar os arquivos do projeto. Quando a janela Save Dialog aparecer, navegue até o diretório MySource, e salve com os seus nomes default. 5 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado BCB também cria outros arquivos associados com seu projeto (dê uma olhada no diretório MySource). Para mais detalhes dos arquivos criados automaticamente, pelo BCB, veja o item Criando e gerenciando projetos. Quando você abre um novo projeto, BCB mostra uma representação gráfica do formulário, chamada Form1 por default. No BCB, você desenvolve a interface do usuário de suas aplicações usando formulários. Formulários podem conter menus, caixas de diálogo e outros controles, eles também podem ser janelas pai ou filha. Você coloca objetos no formulário para criar a interface do usuário. Objetos por exemplo, podem ser controles padrão (como caixa de checagem e lista drop-down), ou eles podem ser completamente preenchido por componentes (como tabelas de dados e editores). Ajustando uma propriedade em tempo de desenvolvimento No desenvolvimento da interface da aplicação, você ajusta as propriedades do objeto usando o Object Inspector. • Ajuste a propriedade Color do Form1 para clAqua Para ajustar a propriedade Color, encontre a propriedade Color, do formulário, no Object Inspector e clique na lista drop-down da propriedade. Mude a cor de fundo do formulário para clAqua. Adicionando objetos ao formulário A paleta de componentes BCB lista todos os componentes disponíveis que você poderá usar para criar sua aplicação. Os componentes são agrupados em diferentes páginas da paleta de acordo com a sua função. Usando os componentes, você pode rapidamente criar a interface da sua aplicação. 1. Adicione um componente Panel. Ponha o cursor do mouse sobre a paleta de componentes por um momento; O BCB mostrará uma mensagem com o respectivo nome do componente. Quando você localizar o componente Panel de um clique nele (ou duplo-clique), e um no formulário e o componente será inserido. 6 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado De um clique no componente Panel para que o mesmo tenha o foco. Agora o Object Inspector estará mostrando as propriedade deste componente. 2. Ajuste a propriedade Align do componente Panel para alBottom. 3. Redimencione o tamanho da janela de sua aplicação (formulário) arrastando o canto direito do formulário. 4. Redimencione o tamanho do Panel até que preencha 1/3 do formulário ( clique no Panel para seleciona- lo e arraste a sua borda superior). 5. Inclua um componente Table no formulário. Clique na página Data Access da paleta de componentes para localizar Table. 6. Ajuste a propriedade DatabaseName de Table1 para BCDEMOS. Acessando um banco de dados Você agora esta pronto para ajustar a origem dos dados para os seus controles de banco de dados. 1 Na página Data Access, arraste um componente DataSource no formulário. Ajuste a propriedade DataSet para Table1. Na paleta de componentes, a página Data Controls contem os componentes que te permitiram visualizar dados de um banco de dados em sua aplicação. Para mostrar todos os campos de uma tabela de um banco de dados, use um componente DataGrid. 2. Na página Data Controls, escolha o componente DBGrid e inclua-o no Panel1 ( clique no DBGrid para seleciona-lo, então clique dentro do Panel1 para colocar o componente lá). Seu formulário deverá estar como o da figura abaixo: 7 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Vamos ajustar as seguintes propriendade do DBGrid: • A propriedade Align para alLeft, então arraste o lado direito do DBGrid para preencher 3/4 do Panel1. • A propriedade DataSource para DataSource1 Agora você poderá finalizar o ajuste das propriedades doobjeto Table1 que você arrastou previamente no formulário. • TableName para BIOLIFE.DB • ReadOnly para true • Active para true Quando você ajusta a propriedade Active para true, o grid é preenchido com os dados existentes na tabela BIOLIFE.DB. (se o grid não preecher, verifique se você seguiu os passos anteriores corretamente). Uma vez que DBGrid é um controle data aware, ele mostra os dados da tabela enquanto você esta desenvolvendo sua aplicação. Entretanto, não é possível rolar os dados ou editar em tempo de desenvolvimento. Para visualizar todos os dados da tabela você deverá rodar a aplicação. 4. Pressione F9 para compilar e rodar o projeto. Adicionando mais componentes Quando você roda a aplicação, o BCB abre o programa como uma janela, da mesma maneira que quando você estava desenvolvendo. Ele é um completo programa Windows, com botões de Minimizar, Maximizar, e um menu que você pode acessar a partir do canto esquerdo superior da janela. Você verá o grid preenchido com os dados da tabela e poderá rolar os dados para visualizar todos os valores da tabela BIOLIFE.DB. Uma vez que você ajustou a propriedade ReadOnly para true (Table1), você não poderá alterar os valores dos itens da tabela. Vamos agora completar a nossa aplicação exemplo, feche o programa para voltarmos ao desenvolvimento. 1. Na página Data Controls, selecione o componente DBNavigator e inclua-o no formulário, e ajuste a sua propriedade DataSource para DataSource1. Por default, o DBNavigator contem mais controles do que você irá utilizar para esta pequena aplicação; para o momento , você precisará apenas dos botões First, Prior, Next, e Last. A propriedade VisibleButtons do DBNavigator mostra os botões que serão apresentados. 8 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado 2. Com o DBNavigator em foco, de um duplo-clique na propriedade VisibleButtons no Object Inspector. A lista enumerada de VisibleButtons expandirá. Cada expansão corresponderá a um botão do DBNavigator. Esta proprieade contem valores boleanos que podem ser alternados entre true e false. Quando for false o botão não será visível. 3. Ajuste para false as seguintes propriedade VisibleButtons: nbInsert nbDelete nbEdit nbPost nbCancel nbRefresh 4. Na página Standard, arraste outro componente Panel no topo do formulário. O BCB nomeia por default Panel2. Para remover este título quando a sua aplicação estiver rodando, limpe o texto que esta na propriedade Caption. Depois de limpar o valor de Caption de Panel2, tenha certeza de pressiona Enter para que o novo valor tenha efeito. 5. Alinhe Panel2 para o topo do formulário ajustando a sua propriedade Align para alTop. A seguir arraste a parte de baixo de Panel2 para preencher a parte superior do formulário. 6. Ajusta a cor dos dois Panels para clBlue. BCB permite que você ajuste propriedade de varios componentes de um só vez. Primeiro clique em Panel1, então com Shif pressionado, Clique em Panel2. O Object Inspector mostrará todas as propriedade que são comuns para ambos os componentes. A partir daqui você poderá ajusta a propriedade cor de ambos para clBlue. Nota. Todos os componentes tem uma propriedade Name, cada nome de componente deve ser único. Por causa disto a propriedade Name não será mostrada no Object Inspector quando houver um grupo de componentes selecionados. 7. Na página Data Controls, arraster um componente DBImage no topo de Panel2 e dimensione para ficar como a figura abaixo: 8. Ajuste as seguintes propriedade de DBImage: • DataSource para DataSource1 9 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado • DataField para Graphic Novamente, porque o DBImage é um componente data aware, o componente mostrará a imagem do primeiro registro da tabela. 9. Clique na seta verde na barra de ferramentas para compilar e rodar sua aplicação. Com o Linker incremental do C++ Builder, o tempo de compilação e linkagem de seu projeto será drasticamente reduzido comparado com a primeira vez que você rodou sua aplicação. Toque final Agora quando sua aplicação estiver rodando, você poderá facilmente navegar pela tabela usando os botões do DBNavigator. Entretanto, nos iremos incluir outros recursos para que sua aplicação fique mais funcional. Feche o programa para retornarmos ao modo de desenvolvimento. 1. Na página Data Controls, arraste um componente DBMemo no Panel2 e posicione para que ocupe o canto esquerdo do panel. A seguir ajuste as seguintes propriedades. • DataSource para DataSource1 • DataField para Notes • ScrollBars para ssVertical 2. Arraste um componente DBText no Panel2, embaixo de DBMemo. Redimensione para que preencha toda a parte inferior de DBMemo, e então ajuste as seguintes propriedades. • DataSource para DataSource1 • DataField para Common_Name 3. Personalize a propriedade Font do objeto DBText usando o Editor de Fontes. Quando você da um clique na propriedade Font de DBText. o BCB mostrará um botão elipse no lado direito da propriedade. indicando que você pode usar um editor de propriedade para esta propriedade. Clique na elipse e será mostrado o Editor de Fontes, um dialogo que permitirá que você edite o tamanho dos caracteres e a fonte. Modifique as seguintes propriedade de DBText usando o Editor de Fontes, e clique em Ok quando finalizar. • Font Sylte para Bold • Color para Silver • Size para 12 Adicionando um botão sair da aplicação Sua aplicação esta agora começando a se parecer com alguma coisa que se pode usar. Para torná-la mais amigável, vamos adicionar um botão Sair para que você encerre o programa facilmente. 1. Na página Additional, arraste um componente BitButton (BitBtn) no Panel1, e ajuste a propriedade Kind para bkClose. Este é um valor default para botões, quando você der um clique a aplicação encerrará. 2. Altere a propriedade Caption de BitButtons para Sai&r. O e comercial (&) antes de r torna-o em uma tecla de atalho, que permitirá que você saia do programa pressionando Alt+r. 3. Novamente, compile e rode o programa pressionando F9. Conectando-se a um evento Você agora tem uma aplicação Windows que acessa uma tabela e mostra imagens, campos memos, e um campo individual. Existe também um botão Sair que te permite encerrar o programa. Até agora, você não escreveu uma única linha de código. O nosso próximo passo, será conectar um identificador de evento a um botão, Nós iremos programar o botão para que quando for dado um clique, seja 10 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado apresentado o dialogo Windows File Save. Nós iremos salvar informações do registro corrente da tabela em um arquivo. 1. Na página Dialogs, arraste um componente SaveDialog próximo do DataSource1. 2. Na página Additional, arraste um BitButton acima do botão Sair, e ajuste as seguintes propriedades: • Caption para &Salvar • Clyph para o pre-definido FileSave.BMP usando o Editor de Imagem Quando você da um clique na propriedade Clyph, o BCB mostra um botão elipse no lado direito da propriedade,isto indica que você pode usar o editor de propriedade para ajustar esta propriedade. Clique na elipse para acessar o Editor de Imagem. No Editor de Imagem, clique no botão Load, e naveque até o seguinte diretório: \Arquivos de Programas\Arquivos Comuns\Borland Shared\Images\Buttons Neste diretório, localize e carregue o arquivo FileSave.BMP. Quando você escolher Ok, você deverá ver este BMP aparecer no lado esquerdo do botão Salvar. A interface do usuário agora esta completa. Se você seguiu os passos deste capítulo, a sua aplicação deverá se parecer como a figura abaixo: Agora vamos escrever os código para o botão Salvar. 3. De um duplo-clique no botão Salvar para criar um evento default para este botão. Quando você da um duplo-clique em um objeto no formulário, o BCB gera um código para este objeto. O BCB também abre o Editor de Código. Neste caso, o BCB gera o seguinte código para esse evento: void __fastcall TForm1::BitBtn2Click( TObject *Sender ) { } Você também poderá usar o Object Inspector para gerar o código acima. No Object Inspector, selecione a página Event, você verá todos os eventos possiveis para o objeto selecionado, neste caso, onClick. 11 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado 4. Complete o evento adicionando o código abaixo: void __fastcall TForm1::BitBtn2Click(TObject *Sender) { FILE *outfile; char buff[100]; wsprintf( buff, "Salvar informação para: %s", DBText1->Field->AsString.c_str()); SaveDialog1->Title = buff; if( SaveDialog1->Execute()) { outfile = fopen( SaveDialog1->FileName.c_str(), "wt" ); if( outfile ) { fprintf( outfile, "Fatos de %s\n\n", DBText1->Field->AsString.c_str() ); for( int i = 0; i < DBGrid1->FieldCount; i++ ) fprintf( outfile,"%s: %s\n", DBGrid1->Fields[i]->FieldName.c_str(), DBGrid1->Fields[i]->AsString.c_str() ); fprintf( outfile, "\n%s\n", DBMemo1->Text.c_str()); } fclose( outfile ); } } Detalhes de como este código funciona, esta fora do escopo deste capitulo introdutório. Entretanto vamos a uma breve descrição do que este código faz: • Quando este código for chamado ( dando um clique no botão Salvar ), um box de dialogo File Save será mostrado. Quando voce especifica um nome de arquivo, sua aplicação irá escrever os dados do registro que estiver selecionado. Antes de rodar o programa, você deverá incluir a seguinte linha no inicio de seu código fonte: #include <stdio.h> O tipo de dados FILE esta definido neste arquivo por isto é necessário a sua inclusão. 5. Para rodar a aplicação, pressione F9. Parabéns! Você acaba de criar uma aplicação completa em C++ Builder. Criando e gerenciando projetos O que é um projeto C++ Builder Um projeto C++ Builder é uma coleção de todos os arquivos que juntos, fazem uma aplicação executável ou uma .DLL. No BCB, os arquivos do projeto são organizados no arquivo .MAK. Como a nossa aplicação cresce, você encontrará mais e mais dependências entre diferentes arquivos e consequentemente a complexidade aumenta. Um programa Windows pode compor-se de script de recursos, LIB, OBJ, e códigos fonte. Cada tipo de arquivo requer um ajuste especial para ser compilado e linkeditado na aplicação final. Como o número de arquivos de sua aplicação cresce, você precisa de uma maneira eficiente de gerenciar os diferentes componentes do projeto. Nós iremos estudar os arquivos que compõem um projeto, você poderá ver como um projeto combina um ou mais arquivos fonte para produzir um arquivo final. O arquivo final, por exemplo, pode ser um .OBJ, .DLL, ou .EXE. Cada arquivo final é dependente de todos os arquivos usados para sua criação. Arquivos fontes são do tipo .C, .CPP, .H, e .HPP. Arquivos do projeto Para gerenciar projetos eficientemente, você necessita entender os diferentes tipos de arquivos que constituem um projeto C++ Builder. Por default, vários arquivos são gerados cada vez que voce cria um projeto. Os arquivos podem ser divididos em diferentes grupos como mostra a tabela abaixo: 12 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Grupo de Arquivos Tipo do Arquivo Arquivos de projeto .mak, .cpp, e .res Arquivos Forms .cpp, .h, e .dfm Arquivos Unit .cpp e .h Arquivo Desktop .dsk Arquivo Projeto Quando você cria um novo projeto, O BCB automaticamente cria os seguintes arquivos: • Project1.CPP • Project1.MAK • Project1.RES Estes arquivos são iniciados por Project1, porque seus nomes são derivados do nome que você dá ao seu projeto. Quando você renomeia o arquivo o projeto, os três arquivos são atualizados, dando a eles os mesmos nomes. Project1.CPP É o ponto central de cada projeto. Este arquivo contem o ponto de entrada de sua aplicação ( função WinMain() ). É aonde a sua aplicação inicia a execução. É também aonde é dada as "coordenadas" para outros formularios e unidades de sua aplicação. É o local aonde você deverá declarar as sua variáveis e constantes globais. Project1.MAK É o makefile, um arquivo texto que contem as opções e regras para construir o projeto. O BCB usa este arquivo para determinar como os diferentes tipos de arquivos são combinados para gerar o arquivo final. Para visualizar este arquivo, escolha View | Project Makefile. Project1.RES É o arquivo de recursos da aplicação. O BCB usa um formato padrão de recursos do Windows para incluir itens como o ícone de sua aplicação. Você pode editar o arquivo de recursos para adicionar outros itens como, bitmaps, cursores, tabela de strings ou icones. Por default, cada aplicação BCB que você cria, terá um arquivo de recursos com o mesmo nome do arquivo de projeto, mas com a extensão .RES. Arquivo Form O BCB representa cada formulário na sua aplicação, por três diferentes tipos de arquivos, dando por default os seguintes nomes: • Unit1.DFM • Unit1.CPP • Unit1.H Quando você salva um novo formulários, o BCB pede para que você entre com um nome para o arquivo .CPP. Este nome é usado para renomear os três arquivos. Unit1.DFM Formulários são a parte visível da aplicação. Normalmente, você cria formulários visualmente e usando o IDE. Quando você cria um formulário, o BCB armazena a imagem deste formulario em um arquivo binário, dando a extensão .DFM. Unit1.CPP e Unit1.H O BCB gera o arquivo fonte (.CPP) e seu header (.H) para cada formulário criado. Juntos, os três .DFM, .CPP e .H fazem um formulário BCB. Arquivo Unit Existe uma pequena distinção entre arquivo formulários (.CPP) e arquivos Unit. Arquivos Unit não são associados com formulários; eles simplismente são o .CPP e .H. Estes arquivos são flexíveis, eles podem ser usados para armazenar funções globais que podem ser compartilhadas através do projeto. 13 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Arquivo Desktop O BCB também gera um arquivo que armazena informações sobre a situação atual do seu projeto, tais como, quais janelas estão abertas e em que posição, os arquivos que estão sendo editados, entre outras informações sobre o status do seu projeto. Isto permite quevocê recupere, o seu trabalho do ponto que parou. O arquivo Desktop tem o mesmo nome que o arquivo de projeto, mas com a extensão .DSK. Sobre formulários e arquivos unit O BCB suporta compilação separada de módulos de códigos chamados units. Usando units você estrutura e reutiliza códigos através de seu projeto. A mais comun unit em BCB é a ligada a formulário, o qual contem os identificadores de eventos e outros códigos para o formulário que você cria. Units são os blocos de construções de sua aplicação BCB - elas contem os códigos fonte C++, de todos os formulários de sua aplicação e também todas as funções que são chamadas através dos eventos do programa. Para cada unit que você cria(.cpp), BCB gera uma unit header (.h). Também é gerado um arquivo binário (.DFM) que contem a representação do formulário. Arquivos unit podem ser criados como parte do projeto, mas isto não é obrigatório. Você pode criar e salvar unit e units de formulários como arquivos isolados, para que qualquer porjeto possa usa-los. Arquivos untis isolados, podem conter qualquer código fonte C ou C++, como funções globais e funções que você quer compartilhar através dos formulários. Por exemplo, você pode escrever suas próprias funções, .DLLs, e componentes, e por seus códigos fontes separados em um arquivos unit que não precisa ser associado a um formulário. Quando você compila uma unit, o compilador gera arquivos binários com o mesmo nome do arquivo unit fonte, mas com a extenção .OBJ. Arquivos units para formulários Quando você cria um novo formulário, o BCB cria o seguinte código default para o formulário: //------------------------------------------------------ #include <vcl.h> #pragma hdrstop #include "Unit1.h" //------------------------------------------------------ #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //------------------------------------------------------ __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //------------------------------------------------------ O comando TForm1 *Form1; cria o objeto Form1 da classe TForm1. Form1 contem todo o comportamento e características do objeto TForm. Para este arquivo unit, você adiciona identificadores de eventos e códigos para cada evento do componente que você necessita para este formulários em particular. Arquivos units isolados Voce pode querer reutilzar rotinas que você escreve. Neste caso é melhor criar um arquivo unit separado para conter esta funções. Para isto você criará uma unit sem associa-la a um formulário, você poderá, facilmente, criar sua funções e disponibiliza-las para outras units de seu projeto, e para outros projetos que podem usar estas funnções. Para cria um arquivo units sem associa-lo a um formulário: • Escolha File | New Unit. Não é necessário ter um projeto aberto, a menos que você queira que a nova unit seja parte do projeto. Nota: Quando você quiser que uma unit faça referência ao código contido em uma segunda unit, você deverá incluir na primeira o arquivo header (,h) da segunda. Para fazer isto, abra a primeira unit no Editor de Código e use File | Include Unit Hdr e inclua o header da segunda unit. Usando este 14 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado método para incluir um arquivo header, fara com que todo os arquivos do projeto sejam corretamente atualizados. ( em outras palavras, nunca inclua manualmente o header - digitando - ). Salvando e dando nomes arquivos BCB Quando você cria um novo projeto no BCB, é automaticamente criado vários arquivos e dado a eles nomes default: Projeto1.MAK, Unit1.CPP e assim por diante. Quando você inicia um novo projeto, você deverá dar nome aos arquivos para que os mesmos sejam mais significativos para você. Você deverá armazenar cada projeto em um diretório especifico. Projetos podem compartilhar formulários, arquivos e recursos localizados em qualquer diretório. Salvando um novo projeto Quando você salva um novo projeto, você deve dar um nome único para os arquivos do projeto. Para salvar todos os arquivos, use um dos seguintes métodos: • Escolha File | Save All • Escolha o botão Save All na barra de ferramentas Quando você salva um novo projeto, o BCB mostra a caixa de dialogo Salvar Como. Salvando um arquivo de projeto específico Você não esta limitado a salvar um projeto do mesmo modo. O BCB permite que você salve arquivos do projeto, incluindo cópias de um arquivo, em diferentes diretórios ou com diferentes nomes. Você também pode salvar seus projetos como "modelos" e adiciona-lo ao Object Repositóry (veremos em outro capitulo) para que você possa reutiliza-lo. Para salvar um arquivo especifico, você deverára abrir o Editor de Código: • Carregue o arquivo no Editor. • Pressione Ctr+S ou escolha File | Save, e clique em Ok. Se você estiver salvando pela primeira vez, você deverá fornecer um nome para o arquivo. Removendo arquivos do projeto Você pode remover formulários e unit do projeto a partir de qualquer ponto de desenvolvimento do projeto, mas você deverá usar somente o IDE para fazer esta operação. O processo de remoção, deleta qualquer referência ao arquivo. Para remover uma unit de um projeto, abra o projeto e escolha qualquer destes métodos: • Na janela do Project Manager, selecione a unit ou units que você quer remover então escolha o botão Remove na barra de ferramentas. • Escolha o botão Remove File From Projeto na barra de ferramentas. Atenção: Não use o Windows Explorer para deletar arquivos BCB do disco, até que você tenha executado a remoção pelo IDE. Se você fizer isto, quando você abrir o projeto o BCB apresentará mensagens de erros, pois ele ainda possui referências a estes arquivos. Copiando um projeto BCB permite que você salve uma versão do projeto aberto em um diferente diretório. O comando File | Save Project As executa este processo, entretanto, como o projeto aberto pode compartilhar arquivos fontes, o Save Project As salva somente uma cópia, no novo diretorio, dos seguintes arquivos: • Project1.CPP ( arquivo principal do projeto) • Project1.MAK ( contem definições de quais arquivos e como eles devem ser compilados/linkeditados) • Project1.RES ( arquivo de recursos como - icones, strings...) Atenção: Nenhum arquivo unit é salvo na nova localização. Quando você abre um cópia do projeto, o Gerenciador de Projeto mostra todos as units, isto não quer dizer que as units residem no mesmo diretório do projeto aberto. Não utilize o Windows Explorer ou outro gerenciador de arquivos para copiar arquivos de um projeto. O BCB mantem relações entre os arquivos. 15 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Visualizando arquivos do projeto O Gerenciador de Projeto, do BCB, da a você um alto nível de visualização de formulários, units, recursos, objetos, e arquivos de bibliotecas, que estão incluidos no seu projeto. Você pode usar o Gerenciador de Projeto para abrir, adicionar, salvar e remover arquivos do projeto. É uma ferramenta indispensável se você for compartilhar arquivos diferentes entre projetos. Para abrir a janela do Gerenciador de Projeto, escolha View | Project Manager ( você deve ter um projeto aberto ). Usando o Gerenciador de Projeto A janela do Gerenciador de Projetos mostrará informações sobre o status e conteúdo o projeto aberto. Ele tambémda um acesso rápido as funções de gerenciamento - clicando com o botão direito do mouse no nome do projeto - , e permite uma navegação rápida entre todos os arquivos. É altamente recomendado que você use o Gerenciador de Projeto para um melhor desempenho, porque ele mantem as relações entre os arquivos e atualiza todo o projeto quando um dos arquivos for alterado. Adicionando formulários e units Você pode adicionar um formulário ou um arquivo unit, o processo e igual. Use um dos seguintes métodos: • Escolha File | New Form ou File | New Unit • Escolha o botão Adicionar Arquivo na barra de ferramentas Se for adicionado um arquivo .CPP que seja vinculado a um formulário, um arquivo binário .DFM também ser adicionado automaticamente. Usando units com fontes em Borland C++, C, ou Pascal Se você tem units com códigos de procedimentos ou funções escritas em Borland C++, C, Pascal ou Delphi, você poderá usar estas units no projeto BCB. Você adiciona este arquivos da mesma maneira que você faria com um form ou unit do BCB. Criando forms Criando um aplicação BCB Forms (formulários) são a base de todas as aplicações de C++ Builder. Você projeta a interface de usuário para suas aplicações usando forms. Forms podem conter menus, botões, caixas de edição, caixas de diálogo, ou qualquer outro objeto que você precise para fazer sua aplicação trabalhar da maneira que você 16 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado quer. Quando você terminar de projetar seu form, você pode acrescenta-lo ao Object Repository (Repositório de Objeto) assim você poderá reutilizar este forms em outros projetos. Em resumo, para criar uma aplicação de C++ Builder, você faz o seguinte: • Começa com um form. • Coloca componentes no form. • Ajusta as propriedades dos componentes. • Cria um manipulador de evento (dando um duplo-clique no componente). • Escreve o código do evento para que o componente faça algo. • Salva o projeto. Uma aplicação de C++ Builder normalmente contém vários forms: um form será o principal que será a interface do usuário ( tela prinipal do programa) e os outros forms como caixas de diálogo, janelas secundárias, e coisas assim. Você desenvolve sua aplicação personalizando o form principal, adicionando e personalizando outros forms. Você personaliza forms adicionando componentes, ajustando as suas propriedades, criando menus para que o usuário tenha controle sobre a aplicação durante a execução do programa. O que são formulários e componentes Formulários ( Forms) são objetos especializados no qual você coloca componentes VCL. Forms geralmente se parecem como janelas e caixas de diálogo em uma aplicação que esta rodando. Você interage com o forms lendo e fixando suas propriedades, chamando os métodos e respondendo aos seus eventos. 17 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Associado a cada form (.DFM) está um arquivo .CPP e .H. Componentes em C++ Builder são blocos de construção de uma aplicação. Cada componente representa um elemento da aplicação, como um objeto de interface de usuário, um banco de dados, ou uma função de sistema. Escolhendo e conectando estes elementos, você constrói a interface de sua aplicação. Componentes também podem ter um manipulador (handle) de evento que permite receber e responder a tipos específicos de entrada. Por exemplo, um botão tem um manipulador de evento OnButtonClick que instrui o botão como responder a um clique do mouse. Criando um formulário e colocando componentes no formulário C++ Builder disponibiliza vários maneiras para se criar um novo form, usar e personalizar um form existente. Você pode criar um novo form de muitas formas: • Iniciando o C++ Builder. É gerado um form em branco, sua unidade associada, e um arquivo de projeto, Se você escolheu um form diferente ou um projeto padrão do Repositório de Objeto , um form padrão se abre em vez de um form em branco. • Criar uma nova aplicação escolhendo File | New Application. É gerado um novo form e o arquivo de unidade (.CPP), sempre que se gera uma nova aplicação. • Adicionando um novo form em um projeto existente, escolhendo File | New Form. Depois que o form for criado, você pode acrescentar componentes ao form. As maneiras mais fáceis de se colocar um componente em um form são: • Clicar duas vezes em um componente na paleta de Componentes. • Clicar no componente e depois no form. Entendendo os componentes Componentes são o blocos de código. Cada componente encapsula algum único elemento de aplicação dentro um elemento reutilizável. Entender o que é um componente é o passo mais importante para compreender o C++ Builder. Esta seção examina duas visões dos componentes do C++ Builder: uma visão hierárquica e uma visão funcional. A visão hierárquica descreve os componentes de acordo com o que eles são. A visão funcional descreve componentes de acordo com o que eles fazem. Hierarquia do componente 18 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Um maneira de entender os componentes é olhar para a relação de herança dos diferentes componentes. Notando as propriedades, métodos, e eventos comuns que grupos de vários componentes herdam, você pode entender algumas das semelhanças e diferenças deles. Em geral, componentes são divididos em dois tipos de categorias: componentes de non-visual (não-visual) e de controles. Componentes Non-visual: são componentes que representam elementos do programa que o usuário não pode interagir diretamente, como timer e conexões de banco de dados. Componentes Non-visual aparecem em tempo de desenvolvimento como pequenos ícones em um form ou módulo de dados. Algum componentes non-visual na verdade representam elementos visual quando a aplicação roda, como uma barra de menu principal ou uma caixa de diálogo comum. Eles armazenam uma descrição dos itens que a aplicação criará no momento apropriado ao rodar. Controles: são elementos visíveis que os usuários podem interagir com a aplicação quando estiver rodando. Em geral, em tempo de desenvolvimento e execução eles se parecem, o que facilita o projeto do formulário. Sempre que possível, C++ Builder mostra em tempo desenvolvimento o que acontecerá em tempo de execução: uma exibição de caixa de lista (seus itens são mostrados), um grid de dados que é conectado a uma tabela aberta (exibe os dados atuais da tabela). Há duas subcategorias de controles: windowed e controles de gráficos. • Os controles windowed são controles que podem adquirir foco de entrada. A maioria dos controles padrão do Windows são controles windowed. O termo "windowed " vem do fato que tais controles têm um manipulador (handle) de janela (o qual você pode acessar através da propriedade Handle). • Os controles Gráficos (as vezes chamados "non-windowed controls ") são controles que não podem receber o foco de entrada, não possuem manipulador (handle) de janela. Controles gráficos utilizam menos recursos de sistemas, assim eles são úteis para formulários complexos que precisam exibir um grande número de controles. A distinçãoentre controles windowed e gráfico é importante quando você projeta a interface do usuário. Por exemplo, se você criar um toolbar que contém um número grande de botões, você poderia usar um componente (button) botão padrão, mas cada um consumiria um handle de janela. Você poderia escolher um componente non-windowed speedbutton que reduziria o consumo de recursos de sistemas. Ajustando as propriedades do componente e o Object Inspector Você pode ajustar as propriedades dos componentes em tempo de desenvolvimento ou muda-las durante a execução do programa. Para mais informações sobre as propriedades de cada componente, consulte o help do C++ Builder e procure pela palavra chave components ou veja o tópico Visual Component Library components e selecione o componente cujas propriedades deseja ver. Você também pode pressionar F1 com um componente selecionado no formulário. Os componentes da paleta ActiveX só é provida com exemplos, porque eles não fazem, formalmente, parte do C++ Builder VCL, e não são documentados no C++ Builder. Com o Inspetor de Objeto você poderá: • Ajustar as propriedades dos componentes que você coloca no formulário, em tempo de desenvolvimento. • Criar e te ajudar navegar entre os manipuladores de eventos ( event handlers). Você pode redimensionar as colunas do Object Inspector arrastando o separador de coluna para uma nova posição. 19 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado O Inspector de Objeto possui duas páginas: • Página de propriedades • Página de eventos A página de propriedades lhe permite ajustar as propriedades dos componentes de seu formulário e do próprio formulário. A página de propriedades mostra somente as propriedades do componente que está selecionado. Nota: Você pode fixar as propriedades em durante a execução do programa, escrevendo o código fonte dentro do manipulador de evento. A página de eventos lhe permite conectar o formulário e os componentes aos eventos do programa. Quando você da um duplo-clique em um evento da página de Eventos, o C++ Builder cria o manipulador de evento e muda o foco para o Editor de Código. No Editor de Código, você escreve o código dentro do manipulador de evento. Este código especifica como um componente ou um form responderá a um evento em particular. A página de Eventos mostra somente os eventos do componente que está selecionado. Como o OB mostra as propriedades O Inspetor de Objeto, muda dinamicamente as propriedades do componente selecionado. Quando você seleciona mais de um componente, somente as propriedades compartilhadas são mostradas. Exemplo: se você selecionar um Label e um GroupBox, você verá a propriedade Color junto com outras Quando você usar o Inspetor de Objeto para selecionar uma propriedade, a propriedade permanecerá selecionada enquanto você não adicionar ou selecionar outro componente. Construindo uma caixa de diálogo O C++ Builder disponibiliza algumas Caixa de Diálogo predefinidas. Eles estão na página Dialogs na Paleta de Componentes. Você pode especificar opções diferentes para estas caixas de diálogo, como se um botão de Help deve aparecer, e fazer qualquer mudança que você queira. Esta seção discute os pontos mais comuns quando se esta projetando um diálogo personalizado: • Fazendo um diálogo modal ou não-modal. • Ajustando as propriedades de form. • Especificando um título para a sua caixa de diálogo. • Criando botões de comando. 20 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado • Ajustando, testando e removendo a ordem da tecla Tab. • Testando a tecla Tab. • Habilitando e desabilitando um componentes. Fazendo um diálogo modal ou não-modal Em tempo de desenvolvimento, caixas de dialogo são simplesmente formulários customizado. Em execução eles podem ser modais ou não-modais. Quando um form é modal, o usuário deve explicitamente fecha-lo para prosseguir com outro formulário. A maioria caixas de diálogo são modais. Quando um form for não-modal (modeless), você pode ir para outros forms sem ter fechar o form anterior. Você poderia criar uma form não-modal para exibir informação de estado, como o número de registros procurado durante uma pesquisa, ou informações que o usuário poderia querer enquanto trabalha. Nota: Se você quiser que uma caixa de diálogo não-modal permaneça em cima das outras janelas abertas durante a execução do programa, fixe a propriedade do form FormStyle para fsStayOnTop. Forms têm dois métodos que dizem se ele será modal ou não-modal durante a execução: • Para exibir um form como modal utilize o método Show. Ex: Form1->Show( ); • Para exibir um form como não-modal utilize o método ShowModal. Ex: Form1- >ShowModal( ); Ajustando as propriedades de form Por padrão formulários do C++ Builder têm botões Maximizar e Minimizar, uma borda de redimensionamento, e um menu de controle que provê comandos de adicionais para manipular um form. C++ Builder provê uma propriedade de BorderStyleName na barra de título do form. Se você mudar a propriedade Name antes de mudar a propriedade Caption, a barra de título mudará para o novo nome. Uma vez que você mude a propriedade de Caption , a barra de título do form sempre refletirá o valor atual de Caption. Criando botões de comando padrão Você pode, rapidamente, criar um botão padrão adicionando ao form um componente BitBtn e ajustando a propriedade Kind de cada botão. Como exemplo, se você colocar um BitBtn e ajustar a propriedade Kind para bkAbort , será mostrado um botão com um X vermelho com o texto Abort ( este texto pode ser alterado através da propriedade caption), e o form retornará mrAbort, na propriedade ModalResult. if( Form1->ShomwModal( ) == mrAbort ) { // codigo } O C++ Builder disponibiliza a propriedade Cancel para um componente botão.Quando o seu form possuir um um botão com esta propriedade ajustada para true, ao ser pressionado a tecla Esc, em tempo de execucão, o código contido no evento OnClick será executado. Se o botão possuir a propriedade Default ajustada para true, ao ser pressionda a tecla Enter, o código contido no evento OnClick será executado. Ajustando, testando e removendo a ordem da tecla Tab. A tecla Tab ao ser pressionada, move o foco para o próximo componente do form. A ordem inicial, é a sequência que foi colocado os componentes no formulário. Esta ordem pode ser alterada quando necessário. Para mudar a ordem do foco dos componentes use a caixa de diálogo Edit Tab Order: • Selecione o form ou o conjunto de componentes do form que você deseja alterar. • Escolha Edit | Tab Order, ou clique com o botão direito do mouse e escolha Tab Order. A caixa de dialogo Edit Tab Order será mostrada com a lista dos componentes e a sequência dos mesmos. Voce poderá alterar de acordo com as suas necessidades. Pressione o botão Ok quando tiver finalizado. Caso seja necessário que um componente não faça parte da sequência Tab, você deve seleciona-lo e no Object Inspector ajuste a propriedade TabStop para false. 21 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig MaldonadoCompile e rode o programa para testar a tecla Tab Habilitando e desabilitando um componentes. Para desabilitar um componente você deve ajustar a propriedade enabled para false e para habilita-lo ajuste para true. Como exemplo, para desabilitar em tempo de execucão um componente: NomeDoComponente->Enabled = false; Gerenciando formulários em tempo de desenvolvimento e execução Ajustando as propriedades durante a execução Basicamente, qualquer propriedade pode ser ajustada durante o desenvolvimento (Object Inspector), bem como na execução do programa (através do código). Algumas propriedades só podem ser alteradas durante a execução, são chamada runtime-only. Para ajustar as propriedade durante a execução, no código você especifica o componente, a propriedade e o novo valor. As propriedades alteradas durante a execução, substitui todos os valoes incluidos durante o desenvolvimento. Especificando o form principal O primeiro form que você cria e salva no seu projeto, torna-se o form principal da aplicação por default. É por este form que a aplicação irá iniciar. Durante o desenvolvimento, você adiciona outros forms e talvez você queira alterar o form principal, ou seja, você quer que a aplicação seja iniciada por um form em particular. Para alterar o form principal faça o seguinte: • Escolha Options | Project ou clique com o botão direito no Project Manager, para mostrar caixa de diálogo Project Options. • Selecione a página Forms. • Na caixa de listagem Main Form, selecione o form que você deseja que seja o principal e pressione o botão Ok. 22 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Alterando a forma de criação do form Todos os forms que você inclui no projeto, são criados automaticamente quando a aplicação inicia. Em alguns casos você pode decidir que não quer criar todos os forms quando a aplicação é iniciada. Por exemplo, se diferentes forms se conectam a bancos de dados, você pode preferir criar estes forms somente quando necessário. • Escolha Options | Project para mostrar caixa de diálogo Project Options. • Selecione a página Forms. • Selecione o formulário que você deseja que não seja criado e pressione o botão > Todos os forms que são criados automaticamente, estão listados na coluna da esquerda. Controlando a ordem de criação dos forms Para alterar a ordem de criação dos forms, selecione-o na lista e arraste para a posição desejada. Todos os forms que são criados automaticamente estão listados na esquerda. Instanciando um form em durante a execução Antes que você utilize um form ele primeiramente deve estar criado, caso contrário um erro ocorrerá. Se você definiu um form para que não seja criado automaticamente, você deverá faze-lo manualmente no código. Para instanciar/utilizar um form durante a execução: • Adicione o nome do arquivo header (.h) na unidade que você deseja utilizar o form. • Declare um ponteiro do tipo do form. • Atribua o valor de retorno de "new" TFormNome( Owner ). A variável de memória especifica a instancia do tipo do form. Por exemplo: #include "aboutbox.h" .... TAboutBox *Box = new TAboutBox( this ); Box->ShowModal( ); delete Box; Usando formuláios predefinidos Quando você inicia o C++ Builder pela primeira vez, é aberto um projeto com um simples formulário em branco. Você adiciona componentes neste formulário. Também pode escolher em adicionar um formulário já definido e usa-lo ou modifica-lo. Você pode facilmente usar estes formulários que estão no Object Repository e pode salvar também qualquer formulário no Object Repository. Quando você escolhe File | New, o C++ Builder mostra a caixa de dialogo New Items. 23 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado A caixa de diálogo mostra o que esta no Object Repository. O Object Repository contem forms, projetos, módulos de dados e outros. Você poderá usar diretamente, copiar ou derivar novos itens a partir deles. Adicionando um formulário em sua aplicação Você pode usar qualquer forms em sua aplicação. Para adicionar um form em seu projeto: • Com um projeto aberto escolha File | New. • Escolha a página Forms. • Selecione o form que você quer utilizar. • Escolha a forma que você quer utilizar o form. • Copy – cria uma cópia exata do form em seu projeto. Qualquer alteração no form original, não afeta a cópia do seu projeto. • Inherit – deriva um novo form em seu projeto. Qualquer alteração feito no form original, poderá afetar o seu projeto. Esta opção está relaciona com herança de objetos. • Use – apenas usa o form em seu projeto. Todas as alterações efetuados no form original, serão refletidas na sua aplicação. • Escolha Ok. Criando menus Partes básicas de um menu Os menus provêem um modo fácil, para os usuários de suas aplicações, de executarem comandos. O C++ Builder Menus Designer, adiciona facilmente, um menu predefinido ou um personalizado em um form. Você acrescenta um componente menu ao form, abre o Menu Designer, e adiciona itens de menu diretamente na janela do Menu Designer. Você pode adicionar, deletar ou rearranjar, os itens, durante tempo de desenvolvimento. Você não precisa compilar e rodar o programa para ver o resultado, conforme você cria o menu, o resultado pode ser visto automaticamente no form. Seu código também pode mudar o menu em tempo de execução. Você deve estar familiarizado com as partes básicas de um menu, pois ele é pradão para os programas Windows. Veja figura abaixo para detalhes. C++Builder Menu terminologia 24 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Criando um menu de simples A barra de menu é exibida no topo da janela e esta composto de itens de menu que listam comandos que o usuário pode executar. Uma chave de acelerador é uma letra sublinhada em um item de menu. Um exemplo é Alt S+F para o comando Find. Você pode acrescentar um componente MainMenu ou um PopupMenu em seu form. Ambos ficam situados na página Standard da paleta de Componente. Um componente MainMenu cria um menu que é anexado a barra de título de um form. Um componente PopupMenu cria um menu que é mostrado quando o usuário da um clique com o botão direito do mouse. Estes menus não possuem barra de título. Para criar um menu: • Acrescente um componente menu a um form. • Renomeie o menu para dar um nome mais significativo. • De um duplo-clique no componente para exibir o Menu Designer. • Clique com o botão direito e escolha Insert. Um espaço em branco é inserido. • Digite na propriedade Caption o nome do item que será mostrado no menu e tecle Enter. • Repita os passos 4 e 5 para cada item do menu. Alterando menus Uma vez que você colocou um menu em um form, você precisará personaliza-lo. Você deve dar um nome e criar os itens, comandos e submenus que você quer sua aplicação tenha. Você pode arrastar, soltar, copiar e colar itens. Adicionando, inserindo e apagando itens do menu Os passos a seguir descrevem como executar as tarefas básicas ao construir um menu. 25 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre/ 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Adicionando itens • Acrescente um componente menu em seu form. • Clique duas vezes no componente para ativar o Menu Designer. • Selecione a posição onde você quer criar o item. • Digite a texto do item, na propriedade Caption e tecle Enter. Inserindo itens Para inserir um item, coloque o cursor no item e pressione Insert. São inseridos itens a esquerda ou acima do item selecionado. Apagando itens Para deletar, selecione o item e pressione a tecla Del. Barras de separação de itens Digite o hífen ( - ) na propriedade Caption do item. Adicionando e Desabilitando itens dinamicamente Adicionando itens dinamicamente Você pode acrescentar itens a um menu existente durante a execução do programa. Você insere um item usando o método Add ou Insert (Veja o Help do C++ Builder para mais detalhe ). Você também pode mostrar ou esconder itens mudando a propriedade Visible de determinados itens. Juntando menus Você prepara os menus para junção, especificando valores de duas propriedades: • Menu, a propriedade do form. • Grouplndex, a propriedade de itens de menu ( TMenuItem) no menu. O valor defaut para GroupIndex é 0. Várias regras se aplicam quando se especifica um valor para GroupIndex. • O número mais baixos aparece primeiro (mais distante a esquerda) no menu. • Substitui itens no menu principal, se o GroupIndex contiver o mesmo número. • Para inserir itens, o valor de GroupIndex não deve estar sendo utilizado pelo menu ativo. Isto quer dizer que, você deve prever "janelas" no menu que irá receber o outro. Por exemplo, numere os itens do menu principal para 0 e 5, e insira os itens do menu "filho" (GroupIndex ) 1, 2, 3, e 4. Desabilitando itens Você pode impedir os usuários de acessar certo itens baseado nas condições atuais do programa, sem remover os itens do menu. Por exemplo, se nenhum texto esta selecionado atualmente em um documento, os itens Cortar, Copiar e Apagar podem estar desabilitado ou escondido. 26 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Fixe a propriedade Enabled para false. Esta propriedade é diferente de Visible. Enquanto Visible esconde o item, Enabled deixa-o visível (escurecido) e desabilitado. 27 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Trabalhando com o Editor de Código O Editor de Código permite que você visualize e escreva o código fonte de sua aplicação. Ele oferece vários recursos e pode ser personalizado a seu gosto. Algumas caracteristicas do Editor: • Sintaxe com destaque • Opção para desfazer múltiplas operações • Quatro tipo predefinidos de configuração: Default, IDE Classic, Brief e Epsilon • Help sensitivo para os elementos da linguagem Este capítulo da uma introdução ao Editor de Código, para mais detalhes consulte o Help. Você verá aqui: • Visualizando arquivos no Editor de Código • Menu de contexto do Editor • Pesquisando • Visualizando os efeitos dos componentes no Editor Visualizando arquivos no Editor de Código O Editor de Código do C++ Builder, é um poderoso editor de arquivos ASCII. Com ele, você pode editar qualquer arquivo de sua aplicação C++ Builder e arquivos ASCII, também pode ter vários arquivos abertos ao mesmo tempo. Cada arquivo é representado por uma "tab" no topo da janela do editor. Você pode facilmente mudar para outro arquivo clicando na "tab" apropriada. Quando você abre um novo projeto, o C++ Builder automaticamente gera uma página inicial no editor, referente ao arquivo .CPP do formulário que foi criado. Quando você abre um novo form, unit ou outro arquivo fonte em seu projeto, uma nova página é adicionada ao editor. Existem várias maneiras de se visualizar o um arquivo no Editor de Código como abaixo: • Escolha File | Open para abrir um arquivo existente. • Para um arquivo já aberto, clique na tab correspondente • Usar o botão correspondente na barra de ferramentas. • Escolha View | Project Manager e de um duplo clique na unit desejada. Fechando o Editor de Código dando um clique no Menu de Controle (X), todos os arquivos serão fechados. Para fechar um arquivo em específico, Escolha a opção Close do menu File. Menu de Contexto do Editor Clicando com o botão direito do mouse no Editor, é apresentado um menu de contexto, que contem os comandos mais utilizados. Pesquisando 28 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Você pode usar a opção Search ( no menu principal ) para localizar um texto em específico no Editor de Código. O texto não precisa estar aberto. Caso você queira, a pesquisa pode ser efetuada em todos os arquivos do projeto, aberto ou não. Os comandos mais comuns de pesquisa são os seguintes: • Find - procurar por um texto. • Replace - pesquisar e substituir um texto • Search Again - repetir a pesquisa Visualizando os efeitos dos componentes no Editor Quando você adiciona um componente a um form, é gerada uma variável de instância deste componente e adicionada na declaração do formulário ( no arquivo header do form ). Similarmente quando você delete o componente a variável também é removida da declaração. Você pode visualizar este efeito movendo o form para um canto da tela e o Editor de Código em outro, para que os dois fiquem visiveis por inteiro. Para visualizar como o C++ Builder gera o código: • Clique com o botão direito no Editor de Código para ativar o menu de contexto, e escolha Open Source/Header File, role a tela até que a seção de declaração de tipos fique visível. • Adicione um componente e veja o que acontece no Editor de Código. • Remova o componente e veja o que acontece no Editor de Código. Nota: O C++ Builder não remove manipuladores de eventos ( ou métodos ) associados com o componente que você deletou, porque este evento pode ser chamado por outros componentes no form. Caso você remova um evento, você deve remover também a declaração do mesmo no arquivo header do form, caso contrário uma mensagem de erro será gerada na compilação. Trabalhando com manipuladores de eventos No C++ Builder, quase todo o código que você escreve é executado diretamente ou indiretamente em resposta a um evento. Este código é chamado de event handler. Event handlers são procedimentos especializados. O event handler é executado quando um evento em particular é ocorre. Você geralmente utiliza o Object Inspector para gerar event handlers. Esta seção mostra como usar o Object Inspector e o Editor de Código para gerar o código do event handler. • Gerando um handler padrão • Escrevendo um event handler • Localizando um event handler existente • Associando um evento com um event handler existente Gerando um event handler padrão São os eventos mais comuns que você necessita em tempo de execução. Por exemplo, um evento padrão é o evento OnClick, que ocorre quando se da um clique com o mouse em cima de um componente. Escrevendo um event handler Uma vez que você adicionouum componente em um form, você pode facilmente escrever o event handler para ele: 1. Selecione o componente no form 2. Clique na tab Events do Object Inspector 3. Escolha o evento desejado na lista apresentada e de um duplo-clique no evento. 4. Editor de Código mostra o código gerado para o evento. 5. Digite o código para o event handler. 29 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Como exemplo, siga a demonstração abaixo: Crie um nova aplicação e adicione um componente TButton e um TMemo. Adicione a linha abaixo no arquivo fonte (.cpp) #include <vcl/printer.hpp> De um duplo clique no componente TButton para criar o event handler e digite o código a seguir: //--------------------------------------------------------------------- void __fastcall Tform1::Button1onClick( Tobject *Sender){ int FontHeight, LinesOnPage; Tcanvas *pcanvas; Printer()->BeginDoc( ); Pcanvas = Printer()->Canvas; FontHeight = pcanvas->Font->Height; LinesOnPage = Printer()->PageHeight / -FontHeight; for( int i = 0, j = 0; i < Memo1->Lines->Count; i++, j++ ){ if( ( i > 1 ) && ( i % LinesOnPage == 0)){ j = 0; Printer( )->NewPage( ); } pcanvas->TextOut( 10, (( j * -FontHeight) + 10 ), Memo1->Lines->Strings[i]); } Printer()->EndDoc( ); } Para aprender mais sobre como programar event handlers, pesquise por event handler no Help do C++ Builder. Localizando um event handler existente Se você quizer visualizar o código de um event handler que previamente escreveu: 1. No form, selecione o componente desejado. 2. No Object Inspector, mostre a página de eventos - Events page. 3. Na coluna de eventos, de um duplo-clique no evento cujo código você deseja ver/editar. Associando um evento com um event handler existente Você pode associar um código (evento ), escrito para um determinado componente, a outro componente. Você pode com isto, criar eventos genéricos e associa-los a diversos componentes. Como exemplo, você pode tem um item de menu e um botão na barra de ferramantes associado a um mesmo evento. 1. No form, selecione o componente. 2. No Object Inspector, na página de eventos selecione o evento desejado. 3. Click na seta para baixo, e será aberto uma lista de eventos que podem ser atribuido ao evento desejado. 4. Selecione o nome do event handler. Nota: O C++ Builder não duplica o código do event handler quando você associa o mesmo eventos a vários componentes. O mesmo código será chamado quando o evento ocorrer. Deletando event handlers Quando você deleta um componente, o C++ Builder remove a referência deste componente do arquivo header ( .h). Entretanto, deletando um componente, não deleta o código do evento, pois este evento pode estar sendo utilizado por outro componente. 30 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Programando com objetos Programação Orientada ao Objeto (Objetc-oriented programming - OOP) é uma extensão natural da programação estruturada. OOP requer que você use boas técnicas de programação e o resultado será um código limpo, fácil de expandir e simples de se efetuar manutenção. Uma vez que você cria um objeto para uma aplicação, você e outros programadores podem utilizar este objeto em outras aplicações. Reutilizando objetos, você diminuir o tempo de desenvolvimento e aumenta a sua produtividade. Estes são os tópicos básicos que serão discutidos neste capítulo: • O que é uma classe • O que é um objeto • Examinando um objeto e classe do C++ Builder • Herdando dados e códigos de uma classe • Escopo do objeto O que é uma classe Em C++, para se criar um objeto, deve-se primeiro, definir a sua forma geral usando-se a palavra reservada class. Uma class é similar a uma estrutura. Vamos começar com um exemplo. Esta class define um tipo chamado fila, que é usado para criar um objeto-fila. #include <iostream.h> // Isto cria a classe fila class fila { private: int q[ 100 ]; int slo, rloc; public: void init( void ); void qput( int ); void qget( void ); }; Uma class pode conter tanto partes privadas como partes públicas. Por exemplo, as variáveis q, sloc e rloc são privadas. Isso significa que não podem ser acessadas por qualquer função que não seja membro da class. Essa é uma maneira de se conseguir a encapsulação - acesso a certos itens de dados pode ser firmemente controlado mantendo-os privados. Ainda que não seja mostrado nesse exemplo, também é possível definir funções privadas que só podem ser chamadas por outros membros da class. Para tornar partes de uma class públicas, (isto é, acessíveis a outras partes do seu programa), você deve declará-las após a palavra reservada public. Todas as variáveis ou funções definidas depois de public estão disponíveis a todas as outras funções no programa. Essencialmente, o resto do seu programa acessa um objeto por meio das funçoes e dados public, filosoficamente deve-se tentar limitar ou eliminar ou seu uso. O ideal é tornar todos os dados privados e controlar o acesso a eles com funções public. As funções init( ), qput( ) e qget( ) são chamadas de funções membro, uma vez que fazem parte da class fila. Lembre-se de que um objeto forma um laço entre o código e dados. Somente aquelas funções declaradas na class têm acesso às partes privadas da class. Uma vez definida uma class, pode-se criar um objeto daquele tipo usando-se o nome da class. Essencialmente, o nome da class torna-se um novo especificador de tipo de dado. Por exemplo, a linha abaixo cria um objeto chamado intfila do tipo fila: fila intfila; O que é um objeto A característica mais importante de uma linguagem orientada ao objeto é o objeto. De maneira simples, um objeto é uma entidade lógica que contém dados e códigos para manipular esses dados. Dentro de um objeto, alguns códigos e/ou dados podem ser privados ao objeto e inacessíveis diretamente para qualquer elemento fora dele. Dessa maneira, um objeto evita significativamente que outras partes não relacionadas do programa modifiquem ou usem incorretamente as partes privadas do objeto. Essa ligação dos códigos e dos dados é frequentemente referenciada como encapsulação. 31 CURSO DE CIÊNCIA DA COMPUTAÇÃOCURSO DE CIÊNCIA DA COMPUTAÇÃO Primeiro Semestre / 2002Primeiro Semestre / 2002 Período letivo: Quarto semestrePeríodo letivo: Quarto semestre Disciplina 3697: Programação IVDisciplina 3697: Programação IV Professor: Edison Puig MaldonadoProfessor: Edison Puig Maldonado Para todas as intenções e propósitos, um objeto é uma variável de um tipo definido pelo usuário. Pode parecer estranho à primeira vista encarar um objeto, que une tanto código como dados, como sendo uma variável. Contudo, em programação orientada ao objeto, esse é precisamente o caso. Quando se define um objeto, cria-se implicitamente um novo tipo de dado. Examinando um objeto e classe do C++ Builder Quando você cria um novo projeto, o C++ Builder mostra um form para que você adicione componentes. No Editor de Código, o C++ Builder declara uma nova classe para o form e produz o código dos arquivos .cpp e .h que fazem parte do projeto. Arquivo unit1.h //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp>
Compartilhar