Projetos C++ Builder (BCB) 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. Um programa Windows pode compor-se de script de recursos, LIB, OBJ, e códigos fonte. 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. 2 Arquivos de um Projeto Arquivos de Projeto Arquivos de um Projeto C++ Builder Por default, vários arquivos são gerados cada vez que você cria um projeto. Os arquivos podem ser divididos em diferentes grupos como mostra a tabela abaixo: 3 Arquivos de um Projeto Arquivos de Projeto Arquivos de um 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ê da ao seu projeto. Quando você renomeia o arquivo o projeto, os três arquivos são atualizados, dando a eles os mesmos nomes. 4 Arquivos de um Projeto Arquivos de Projeto Tipos de arquivos de um Projeto 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 são dadas as "coordenadas" para outros formulários e unidades de sua aplicação. É o local aonde você deverá declarar as suas 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 ícones. 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. 1. 5 Arquivos de um Projeto Arquivos Form Arquivos Form O BCB representa cada formulário na sua aplicação, por três diferentes tipos de arquivos, dando por default os seguintes nomes: o o o Unit1.DFM Unit1.CPP Unit1.H Quando você salva um novo formulário, 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 formulário 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. 6 Arquivos de um Projeto Arquivos Unit Arquivos 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 simplesmente 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. 7 Arquivos de um Projeto Arquivo Desktop 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 que você 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. 8 Formulários e arquivos unit Arquivos Unit Units 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 comum 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. 9 Formulários e arquivos unit Arquivos Unit Units (continuação) 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 projeto possa usa-los. Arquivos units 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 vários arquivos unit que não precisam 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 extensão .OBJ. 10 Formulários e arquivos unit Arquivos Unit para formulários Unit para formulário 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ário em particular. 11 Formulários e arquivos unit Arquivos Unit isolados Units isoladas Você pode querer reutilizar rotinas que você escreve. Neste caso é melhor criar um arquivo unit separado para conter estas 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 funçõ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 método para incluir um arquivo header, fará com que todo os arquivos do projeto sejam corretamente atualizados. (em outras palavras, nunca inclua manualmente o header - digitando - ). 12 Salvar e nomear arquivos Salvar Projeto Quando você cria um novo projeto no BCB, são automaticamente criados 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. 13 Salvar e nomear arquivos Salvar 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. 14 Salvar e nomear arquivos Salvar Arquivo específico Salvar arquivo 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 Repository (veremos em outro capitulo) para que você possa reutiliza-lo. Para salvar um arquivo especifico, você deverá 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. 15 Salvar e nomear arquivos Remover Arquivo de Projeto Remover arquivos de um 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 exclui 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 excluir 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. 16 Salvar e nomear arquivos Copiar Projeto Copiar 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 diretório, dos seguintes arquivos: Project1.CPP (arquivo principal do projeto) Project1.MAK (contem definições de quais arquivos e como eles devem ser compilados/receber a edição de ligações) Project1.RES (arquivo de recursos como - ícones, strings...). Atenção: Nenhum arquivo unit é salvo na nova localização. Quando você abre uma 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 mantém relações entre os arquivos 17 Visualizar arquivos de Projetos Usar o Gerenciador de Projeto O Gerenciador de 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 incluídos 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). 18 Visualizar arquivos de Projetos Usar o Gerenciador de Projeto A janela do Gerenciador de Projetos mostrará informações sobre o status e conteúdo o projeto aberto. Ele também da um acesso rápido às 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. 19 Visualizar arquivos de Projetos Usar o Gerenciador de Projeto Adicionar 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 ferramenta Se for adicionado um arquivo .CPP que seja vinculado a um formulário, um arquivo binário .DFM também ser adicionado automaticamente 20 Visualizar arquivos de Projetos Usar o Gerenciador de Projeto Usar 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 arquivo da mesma maneira que você faria com um form ou unit do BCB. 21 Menus Conceito 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, excluir 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. 22 Menus Partes básicas Você deve estar familiarizado com as partes básicas de um menu, pois ele é padrão para os programas Windows. Veja figura abaixo para detalhes da terminologia do C++Builder Menu 23 Menus Criar menus 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. 24 Menus Criar menus simples 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. 25 Menus Alterar menus Adicionando, inserindo e apagando itens do menu 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 sub menus que você quer sua aplicação tenha. Você pode arrastar, soltar, copiar e colar itens. 26 Menus Alterar menus 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. 27 Menus Alterar menus Inserindo itens Para inserir um item, coloque o cursor no item e pressione Insert. São inseridos itens à esquerda ou acima do item selecionado. 28 Menus Alterar menus Apagando itens Para excluir, selecione o item e pressione a tecla Del. 29 Menus Alterar menus Barras de separação de itens Digite o hífen ( - ) na propriedade Caption do item. 30 Caixas de diálogo Conceito 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. Os pontos mais comuns quando se esta projetando um diálogo personalizado são: 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. Ajustando, testando e removendo a ordem da tecla Tab. Testando a tecla Tab. Habilitando e desabilitando um componente. 31 Caixas de diálogo Diálogos modais e não modais Em tempo de desenvolvimento, caixas de dialogo são simplesmente formulários customizados. Em execução eles podem ser modais ou nãomodais. Quando um form é modal, o usuário deve explicitamente fecha-lo para prosseguir com outro formulário. Na maioria as 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( ); 32 Formulários e componentes Propriedades 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. 33 Formulários e componentes Criar botões de comando 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 ) { // código } O C++ Builder disponibiliza a propriedade Cancel para um componente botão.Quando o seu form possuir um botão com esta propriedade ajustada para true, ao ser pressionado a tecla Esc, em tempo de execução, o código contido no evento OnClick será executado. Se o botão possuir a propriedade Default ajustada para true, ao ser pressionada a tecla Enter, o código contido no evento OnClick será executado. 34 Formulários e componentes Ordem de tabulação A tecla Tab ao ser pressionada, move o foco para o próximo componente do form. A ordem inicial, é a seqüê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 seqüência dos mesmos. Você 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 seqüência Tab, você deve seleciona-lo e no Object Inspector ajuste a propriedade TabStop para false. Compile e rode o programa para testar a tecla Tab 35 Formulários e componentes Habilitar e desabilitar 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 execução um componente: NomeDoComponente->Enabled = false; 36 Formulários e componentes Gerenciar formulários 37 Formulários e componentes Gerenciar formulários 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 propriedades durante a execução, no código você especifica o componente, a propriedade e o novo valor. As propriedades alteradas durante a execução, substituem todos os valores incluídos durante o desenvolvimento. 38 Formulários e componentes Gerenciar formulários 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. 39 Formulários e componentes Gerenciar formulários 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. 40 Formulários e componentes Gerenciar formulários 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 41 Formulários e componentes Gerenciar formulários Instanciando um Form 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; 42 Compilar e ajustar opções de Projeto Ajustar padrões de Projeto Você pode personalizar a maneira que o C++ Builder irá aparecer e trabalhar para um projeto em particular, incluindo o próprio IDE. A aparência e comportamento do IDE quando você inicia o C++ Builder ou começa um novo projeto, são governados pôr ajustes de vários grupos de opções: Ajustes de Ambiente: afeta todos os projetos do C++ Builder. Para mudar estas opções escolha Options | Environment. Ajuste de Projeto: afeta somente o projeto atual. Para mudar estas opções escolha Options | Project. Ajuste de Repositório: determina o padrão para um novo form, novo módulo de dados e o novo projeto. Para mudar estas opções escolher Options | Repository. 43 Compilar e ajustar opções de Projeto Mudar padrões de Projeto A caixa de diálogo Project Options contêm check box com opções padrão. Estes controles permitem que você modifique algumas das propriedades do C++ Builder. Quando você altera estes controles e salva as alterações, o C++ Builder salva estas alterações no arquivo DEFAULT.MAK, localizado no diretório BIN. O C++ Builder usa as informações deste arquivo para todos os novos projetos que você cria. 44 Compilar e ajustar opções de Projeto Opções de formulário Estas opções estão na página Forms e permitem que você: Defina o formulário principal da aplicação. Controle a ordem de criação dos formulários durante a inicialização da aplicação. Especifique quais formulários serão criados automaticamente. 45 Compilar e ajustar opções de Projeto Opções de aplicação A página Aplication é onde você especifica um título, o arquivo Help, e o ícone para o projeto. Você também poderá ajustar esta propriedade durante a execução do programa, usando as propriedades Title, HelpFile e Icon do objeto Application. Title é o texto que irá aparecer quando você minimiza a aplicação quando ela estiver rodando. Se não for especificado um título, quando a aplicação for minimizada, será mostrada no nome do arquivo .EXE. HelpFile se você criar um arquivo .HLP para o seu projeto, você o "conecta" na sua aplicação especificando o nome do arquivo .HLP. ( veja o Help do C++ Builder para detalhes de como utilizar arquivos .HLP). Icon especifica um ícone para a sua aplicação. 46 Compilar e ajustar opções de Projeto Opções C++ As opções desta página permitem que você especifique as opções do compilador que afetarão o código fonte C/C++ de seu projeto. Clique em Full Debug se você quer usar o integrated debugger para procurar por erros em seu projeto. Clique em Release for distribuir sua aplicação. 47 Compilar e ajustar opções de Projeto Opções Pascal Nesta página você especifica as opções do compilador que afetarão o código fonte Pascal do seu projeto (você se lembra que o C++ Builder pode usar alguns forms ou códigos escritos em Delphi). Veja o Help para mais informações. 48 Compilar e ajustar opções de Projeto Opções Linker As opções desta página permitem que você especifique as opções de montagem de sua aplicação. Estes ajustes, por exemplo, permitem que você escolha entre usar o incremental ou standard (TLINK32) Linker. Usando o incremental Linker, suas aplicações são construídas mais rapidamente, mas o TLINK32 disponibiliza mais opções de construção. Para informação de um ajuste em especifico, veja o Help do C++ Builder. 49 Desenvolver um Projeto O arquivo fonte Project O arquivo fonte Project é o principal arquivo de um programa. O C++ Builder usa este arquivo para compilar e editar as ligações de todas as units e arquivos de sua aplicação. Este arquivo é atualizado durante o desenvolvimento do projeto. Para abrir este arquivo escolha um destes métodos: No Project Manager, clique duas vezes no arquivo de projeto (no exemplo abaixo é o arquivo logoapp.cpp). 50 Desenvolver um Projeto O arquivo fonte Project O conteúdo do arquivo aparecerá no Editor de Código. O C++ Builder gera o seguinte código fonte por padrão quando um novo projeto é criado: //-----------------------------------------------------------#include <vcl.h> #pragma hdrstop USERES("Project1.res"); USEFORM("Unit1.cpp", Form1); //--------------------------------------------------------WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } return 0; 51 } Desenvolver um Projeto O arquivo fonte Project O arquivo header vcl.h contêm definições que são necessárias para a Biblioteca de Componentes Visuais (VCL). A declaração #pragma hrdstop, instrui o compilador a parar de adicionar os arquivos header pré-compilados. Por definição o arquivo vcl.h esta incluído no arquivo header pré-compilado. As declarações USEFORM e USERES são duas macros usadas para adicionar itens como arquivos, forms e recursos ao seu projeto. Estas macros estão definidas em sysdefs.h (localizado no diretório include\vcl). Este arquivo também define USEDATAMODULE, USEUNIT, USEOBJ, USELIB em outros. O C++ Builder cria estas macros automaticamente quando você inclui um determinado tipo de arquivo em seu projeto. A chamada de WinMain é o ponto de entrada de seu programa. É por aqui que seu programa começa a ser executado. 52 Desenvolver um Projeto O arquivo fonte Project Application->Inatilalize( ); Inicializa o objeto Application VCL para este processo. A declaração Application->CreateForm cria os formulários especificados nos parâmetros da função. Esta declaração cria o objeto form especificado no segundo parâmetro, usando a especificação de classe de form do primeiro parâmetro. O C++ builder adiciona uma declaração Application>CreateForm para cada form que você adicionar no projeto. É nesta ordem que os forms são criados na memória quando o programa é executado. A declaração Application->Run( ); Faz com que o programa (processo) entre no loop de mensagens. A partir deste ponto mensagens do Windows são enviadas e recebidas. 53 Desenvolver um Projeto Compilação Todos os projetos C++ Builder tem um simples arquivo destino, pode ser um .EXE ou um .DLL. Você pode visualizar ou testar sua aplicação em vários estágios do desenvolvimento. Compilando um simples arquivo Para compilar uma unit em seu projeto, 1. Selecione a unit no Editor de Código ou na janela Project Manager. 2. Escolha o Project | Compile Unit no menu principal. Um diálogo de progresso irá aparecer indicando o andamento da compilação. Se um erro for encontrado, de um duplo-clique na janela de mensagens e o Editor de Código irá abrir com o arquivo fonte, mostrando a linha aonde o erro ocorreu. 54 Desenvolver um Projeto Construir um Projeto Existem duas maneiras de construir uma aplicação: 1. Para compilar somente os arquivos alterados desde a última compilação, e fazer a edição de ligações todos os arquivos escolha Project | Make a partir do menu principal. 2. Para compilar todos os arquivos e fazer a edição de ligações escolha Project | Make a partir do menu principal. Se uma unit a ser compilada conter uma inclusão de um arquivo header (.h), o arquivo correspondente (.cpp) ao header também será compilado. 55 Desenvolver um Projeto Rodar um Projeto Para rodar um projeto escolha no menu principal Run | Run ou escolha o botão Run na barra de ferramentas. Esta ação tem o mesmo efeito que você tivesse escolhido Project | Make, exceto que a aplicação irá rodar. 56