Curso Introdutório C++ Builder



Documentos relacionados
AMBIENTE. FORMULÁRIO: é a janela do aplicativo apresentada ao usuário. Considere o formulário como a sua prancheta de trabalho.

Delphi 7 Aula 01 Área do Triângulo

Inserindo Dados no Banco de Dados Paradox.

Orientação a Objetos - Programação em C++

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Display de Cristal Líquido

Iniciação à Informática

APOSTILA WORD BÁSICO

Sistema Click Principais Comandos

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

Manual do Sistema "Vida Controle de Contatos" Editorial Brazil Informatica

UNIVERSIDADE FEDERAL DO AMAPÁ NÚCLEO DE TECNOLOGIA DA INFORMAÇÃO. Manual de Avaliação de Desempenho Cadastro

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES I PROFESSOR RAFAEL BARRETO

O Windows 7 é um sistema operacional desenvolvido pela Microsoft.

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

SUMÁRIO TUTORIAL DO HQ. 2 DICAS PEDAGÓGICAS:. 2 DOWNLOAD DA INSTALAÇÃO. 2 PASSO 1 FORMULÁRIO PARA DOWNLOAD. 2 PASSO 2 ESCOLHENDO A VERSÃO.

Word 1 - Introdução Principais recursos do word A janela de documento Tela principal

( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Como funciona? SUMÁRIO

Sistema de Recursos Humanos

INTRODUÇÃO AO WINDOWS

Manual Captura S_Line

Smart Laudos 1.9. A Forma Inteligente de Criar seus Laudos Médicos. Manual do Usuário

CRIANDO TEMPLATES E LEGENDAS

1 UNIT Universidade do Trabalhador Dr. Abel dos Santos Nunes

Dicas para usar melhor o Word 2007

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Portal Sindical. Manual Operacional Empresas/Escritórios

Veja abaixo um exemplo de como os dados são mostrados quando usamos o

COMO GERAR UM ARQUIVO NÃO IDENTIFICADO NO TABWIN

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Entendendo as janelas do Windows Uma janela é uma área retangular exibida na tela onde os programas são executados.

Manual Simulador de Loja

Anexo III Funcionamento detalhado do Sistema Montador de Autoria

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Mozart de Melo Alves Júnior

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

CICLO DE APERFEIÇOAMENTO PROFISSIONAL DOS SERVIDORES MUNICIPAIS DE MARICÁ- RJ EDITOR DE TEXTO - WORD

ALBUM DE FOTOGRAFIAS NO POWER POINT

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados

Área de Trabalho. Encontramos: Ìcones Botão Iniciar Barra de Tarefas

Logo abaixo temos a Barra de Menus que é onde podemos acessar todos os recursos do PHP Editor.

Manual de Utilização

Questão Essência do Excel

Adapti - Technology Solutions Leonor cardoso nº 331 Fone : (041) Curitiba - PR MANUAL DO USUÁRIO

TUTORIAL III: ADICIONANDO AJUDA. Adicionando Ajuda

Guia Rápido ClaireAssist

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna

Manual do Usuário. Minha Biblioteca

CRIANDO UM BANCO DE DADOS

Banco de Dados BrOffice Base

Resumo da Matéria de Linguagem de Programação. Linguagem C

QualiQuantiSoft Versão 1.3c

PROJECT 1 Delphi Project (Extensão. DPR)

Janelas e seus elementos

SPARK - Comunicador Instantâneo MANUAL DO USUÁRIO

Lição 1 - Criação de campos calculados em consultas

W o r d p r e s s 1- TELA DE LOGIN

Banco de Dados Microsoft Access: Criar tabelas. Vitor Valerio de Souza Campos

Manual de Gerenciamento de Conteúdo

Guia de Início Rápido

Gerente de Tecnologia: Ricardo Alexandre F. de Oliveira Marta Cristiane Pires M. Medeiros Mônica Bossa dos Santos Schmid WORD 2007

CURSO DE INFORMÁTICA BÁSICA AULA 2 O AMBIENTE WINDOWS

MANUAL DE UTILIZAÇÃO Aplicativo Controle de Estoque Desktop

Configurações de Templates no SolidWorks 2011

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

MANUAL DO ANIMAIL Terti Software

Introdução. Servidor de Tempo (SNTP) com opção de horário de verão automático; 1 Cadastro do novo modelo de equipamento Urano Topmax SS

A barra de menu a direita possibilita efetuar login/logout do sistema e também voltar para a página principal.

Microsoft Access XP Módulo Um

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Gerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com

USANDO O ROUNDCUBE WEBMAIL

Banco de Dados Microsoft Access: Criar tabelas

Procedimentos para Reinstalação do Sisloc

Tutorial Administrativo (Backoffice)

Banner Flutuante. Dreamweaver

ETEC DR. EMÍLIO HENRNANDEZ AGUILAR PROGRAMAÇÃO DE COMPUTADORES II PROFESSOR RAFAEL BARRETO DELPHI FORMULÁRIO COM ABAS E BUSCAS DE REGISTROS

1- Requisitos mínimos. 2- Instalando o Acesso Full. 3- Iniciando o Acesso Full pela primeira vez

Faculdade Boa Viagem Sistemas de Informação Gerenciais EXERCÍCIO PASSO-A-PASSO PEDIDOS E CONTROLE DE ESTOQUE. Microsoft Access.

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

PROGRAMAÇÃO EM C# COM VISUAL STUDIO.NET

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

O Microsoft Office é composto por diversos softwares, dentre eles o Word, o Excel, o Access e o Power Point.

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

atube Catcher versão 3.8 Manual de instalação do software atube Catcher

Manual do Painel Administrativo

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET

Menu Utilitários. Atualização do Banco de Dados Atualização e organização dos arquivos existentes

Manual do site do Comitê do Itajaí: como inserir e atualizar

Microsoft PowerPoint 2003

O Primeiro Programa em Visual Studio.net

BACTOCOUNT IBC EXPORTAÇÃO DE DADOS CONFIGURAÇÕES

14 - Como para gerar o boleto para pagamento do período das notas lançadas? 16 - Se no mês, o meu cliente não tiver movimento, o que devo fazer?

Capítulo 7 O Gerenciador de Arquivos

Aula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela

Transcrição:

Curso Introdutório C++ Builder Prof. Flavio Marcello Strelow UDESC - SBS Maio/2007 Objetivo do curso Fornecer o conhecimento inicial básico do ambiente de programação visual C++ Builder e de seus principais componentes para o desenvolvimento de aplicações. 1

Sobre o curso Serão abordados os conceitos básicos de: programação OO programação orientada a eventos; programação visual. Serão utilizados praticamente todos os principais componentes (objetos) da linguagem. Programação Orientada a Objetos 2

Programação Orientada a Objetos Uma classe é uma abstração para agrupar determinados dados e manipulá-los de forma coerente. Em geral uma classe possui os seguintes elementos: Propriedades /Atributos Métodos Eventos Programação Orientada a Objetos Propriedade de uma classe é um valor. Seja ele numérico, data, caracter ou qualquer outro tipo Método é uma operação que é realizada sobre as propriedades de uma classe. Uma classe pode possuir vários estados. Quando um destes estados muda, é acionado um evento associado a esta mudança. 3

O Ambiente C++ Builder Tela Principal do Builder 4

Tela Principal do Builder SpeedBar é uma barra de ferramenta que contém botões para a execução das atividades mais utilizadas para estas opções estão contidas no Menu do Builder. Menu do Builder Tela Principal do Builder Guia ou Páginas Os componentes da página selecionada 5

Tela Principal do Builder Neste ComboBox(Caixa de Combinação) temos relacionados todos os objetos do formulário, o nome do objeto que aparece selecionado é o objeto no qual o object Inspector esta exibindo suas propriedades. Guia de eventos do Inspetor de Objetos (Object Inspector) Guia de propriedades do Inspetor de Objetos (Object Inspector). Esta Guia especifica as propriedades do objeto selecionado. Criando um projeto O Builder trabalha com projeto e com os formulários vinculados ao projeto. O projeto é o programa; os formulários vinculados ao projeto são as janelas ou seções Ao salvar um projeto, supondo-se que este projeto seja salvo com o nome de Project, o Builder salvará o projeto na pasta especificada e irá gerar os seguintes arquivos : Project.bpr Project.res Project.cpp 6

Desvendando o projeto Project.bpr neste arquivo tem informações da versão do builder, formulários que estão ligados ao projeto, etc... Project.res este é um arquivo de recurso do Builder Project.cpp neste arquivo está a função principal(winmain) do projeto, que por sua vez inicializa a execução do projeto e a criação de todos os formulários em tempo de execução. Desvendando o projeto Depois de salvar o projeto iremos salvar o formulário com o nome de Form como frm, gerando os seguintes arquivos : frm.cpp possui o código que foi inserido pelo usuário nos evento dos objetos. frm.h neste arquivo está definido a classe do formulário e a declaração de todos os objetos colocados no formulário. frm.dfm possui a imagem do formulário. 7

Desvendando o projeto: Backup O Builder cria cópia dos arquivos do formulário que neste caso são : frm.~cp, frm.~h e frm.~df. Ao salvar um projeto o Builder cria mais três arquivos que são : Project.~bp, Project.~re e Project.~cp. Desvendando os Menus do Builder 8

Menu File: New Exibe a caixa de dialogo New Items, que provê acesso para os modelos de Formulários, Formulários de Diálogos, Projetos semi-pronto, nova aplicação para ser desenvolvida pelo usuário a partir do zero. Menu File: New Application Esta opção está também disponível na caixa de diálogo New Items da opção New do Menu File, a finalidade desta opção é gerar uma nova aplicação sem nada nela desenvolvida para que usuário possa desenvolver o seu sistema da maneira como quiser. 9

Menu File: New Form Através desta opção pode-se adicionar um novo formulário em um projeto. Menu Project 10

Menu Project: Add to Project Esta opção abre a caixa de diálogo a seguir : Menu Project: Add to Project Use esta caixa de diálogo para adicionar uma unit existente e seu formulário ao projeto atualmente aberto no C++ Builder. Quando você adiciona uma unit no projeto, o C++ Builder automaticamente faz referências da unit adicionando uma declaração de #include para o projeto no arquivo de extensão.bpr. 11

Menu Project: Remove from Project Use esta caixa de diálogo para selecionar um ou mais unit que deseja remover do projeto atual. Quando você seleciona uma unit e clica em OK, C++ Builder remove a unit selecionada (os arquivos.cpp,.h e.dfm) do projeto atual mas não apaga nenhum arquivo de seu disco. Menu Project: Add to Repository Use este comando para somar projetos, códigos, e formulários para o Repository de Object. É útil em situações onde você usa muito um formulário. Adicionando este formulário no Repository Object, depois através da opção New do Menu File você poderá incluir o seu formulário sem ter que fazê-lo de novo. 12

Menu Project: Options Menu Project: Options Use as páginas(guias) desta janela de diálogo para especificar Forms, Application, Compile, Linker, C++, etc Forms Controlam os formulário criados. Através da opção Main Form podemos especificar qual formulário será executado primeiro em um projeto com mais de um formulário. Application Especifica o título(title), nome de arquivo de ajuda(help File), e nome de ícone associados com a aplicação(load Icon). 13

Menu Project: Options Compile especifica as opções gerais para os C++ compilador interruptores que detemina como código deve ser compilado. Advance Compile Especifica opções adicionais para o compilador de C++ C++ Especifica opções do compilador C++ Menu Project: Options Pascal Especifica opções do compilador de Objeto Pascal Linker Gerencia como seus arquivos de programa são Linkados Directories/Conditionals Especifica a localização de arquivos necessários para compilar e Linkar seu programa 14

Menu Project: Options VersionInfo Especifica as informação de identificação do produto Packages Especificam os pacotes com os objetos estão instalados Tasm Configura os parâmetros e âmbito para o montador de turbo Assembly Menu Run 15

Menu Run Run : utilizada para compilar e linkar a sua aplicação e logo após executa o programa. Se o compilador encontra um erro, exibe uma caixa de diálogo de Erro; Não encontrando nenhum erro de sintaxe no código do programa o compilador constrói um arquivo executável Program Reset : É utilizado para terminar a execução do programa atual e retira da memória um programa na qual ocorreu um erro em tempo de execução. Menu Database Explore : Executa o Explore(Explorador de Banco de dados ou Explorador de SQL). Ambas as ferramentas lhe deixarão : criar, visualizar, e editar dados e pseudônimos de BDE. Explorador de SQL permite examinar bancos de dados locais e distantes. Form Wizard : Esta opção permite criar um formulário que exibe dados de um banco de dados sem muito trabalho. 16

Menu tools Database Desktop : Executa o Database Desktop que é uma ferramenta utilizada para criar e reestruturar tabelas de um banco de dados. Você pode trabalhar com elas em Paradox, dbase, e formatos de SQL. Image Editor : aplicativo utilizado para criar imagem para objetos que você criou, para criar ícones, arquivos bitmap, etc... Configure Tools : Nos permite configurar as opções do Menu Tolls. Object Inspector 17

Object Inspector (OI) Permite visualizar rapidamente as propriedades e eventos de um determinado objeto, mostrando ainda de qual classe ele pertence. Para verificar as propriedades de um determinado objeto, basta clicar no objeto em que se esta trabalhando, e o OI alternará para as propriedades e eventos deste objeto. 18

Figura do Object Inspector à esquerda temos as propriedades do objeto Edit1 (classe TEdit), já no lado direito temos o Object Inspector mostrando os métodos deste mesmo objeto. Primeiro Exercício 19

Explorando o IDE (Ambiente de Desenvolvimento Integrado) Para a execução deste exercício baixe o arquivo na página web da disciplina. Primeiro Projeto 20

Soma dois números Para a construção deste programa iremos precisar de três componentes (ou classes): TEdit; TButton e; TLabel Classe TEdit Propriedades: Name. é o nome do objeto. Todo objeto precisa ter um nome, para ser referenciado Text. guarda o conteúdo digitado, ou o conteúdo para ser mostrado na tela ReadOnly. aceita os valores true/false, caso o valor seja true, o usuário não poderá digitar nenhum valor neste objeto. Visible. pode receber os valores true/false, caso o valor seja true o objeto será mostrado na tela. 21

Classe TEdit Métodos: SelectAll. seleciona todo o conteúdo do objeto CopyToClipboard. copia o conteúdo selecionado do objeto para a área de Clipboard PasteFromClipboard. cola o conteúdo da área de Clipboard na propriedade Text do objeto Clear. limpa o conteúdo da propriedade Text. SetFocus. fará com que o cursor seja posicionado neste objeto. Classe TEdit Eventos: OnChange. é acionado quando a uma mudança na propriedade Text ocorrer, ou seja, quando houver uma mudança nesta propriedade o evento OnChange é acionado. OnEnter. é acionado quando o Focus da aplicação é passado para esse objeto, ou seja, quando entra no objeto. OnExit. ao contrário do evento OnEnter é acionado na saída do objeto. 22

Exemplos Classe TEdit Edit1 e Edit2 são objetos da classe TEdit Exemplo 1: Igualar a propriedade Text de dois objetos Edit1->Text = Edit2->Text; Exemplo 2: Igualar a propriedade Text de dois objetos, só que utilizando métodos Edit2->SelectAll(); Edit2->CopyToClipboard(); Edit1->Clear(); Edit1->PasteFromClipboard(); Edit1->SetFocus(); Exemplos Classe TEdit Exemplo 3: Mostrar uma mensagem na tela se o conteúdo da propriedade Text do objeto Edit1 for alterado. clicar no objeto Edit1, ir no Object Inspector, selecionar Events (eventos), dar dois cliques no evento OnChange, que o C++ Builder criará uma procedure, que deverá ser chamada toda vez que ocorrer uma mudança na propriedade Text. Dentro desta procedure, nós podemos escrever qualquer comando, como por exemplo: 23

Exemplos Classe TEdit ShowMessage( Houve uma alteração de valor ); /* A função ShowMessage mostra uma mensagem qualquer na tela */ A implementação completa ficaria assim: void fastcall TForm1::Edit1Change(TObject *Sender) { ShowMessage("Houve uma alteração de valor"); } Classe TButton Propriedades: Caption. A propriedade Caption fará com que seja mostrado o nome indicado no botão. Enabled. Esta propriedade pode receber os valores true/false. Caso o valor seja true, o objeto pode ser acionado normalmente com um click do mouse. Caso a propriedade seja false, o click do mouse não fará efeito algum. O objeto estará desabilitado até que a propriedade seja alterada. 24

Classe TButton Métodos: SetFocus. A funcionalidade é a mesma do método SetFocus de TEdit Eventos: OnClick. O evento OnClick será acionado quando o usuário clicar no botão. Exemplos Classe TButton Exemplo 1: Colocar o texto Calcular no botão Button1. Button1->Caption = Calcular ; Exemplo 2: Mostrar a mensagem Você clicou no botão quando Button1 for pressionado. O botão ser pressionado significa que aconteceu o evento OnClick dentro de Button1. Logo dentro deste evento basta colocarmos o comando ShowMessage( Você clicou no botão ). O comando completo: void fastcall TForm1::Button1Click(TObject *Sender) { ShowMessage("Você clicou no botão"); } 25

Classe TLabel Propriedades: Caption. A propriedade Caption fará com que seja mostrado o nome indicado no label. Agora já estamos prontos para fazermos a nossa primeira implementação. 26

Código Fonte: arquivos gerados Project1.bpr gerado automaticamente. Guarda os parâmetros de compilação para o programa, bem como os endereços de bibliotecas; Project1.cpp gerado automaticamente e não precisa ser alterado. É a partir dele que as Unit s serão chamadas; Unit1.dfm gerado a partir das definições de objeto que o usuário vai fazendo na tela, ou seja, basta o usuário ir posicionando os objetos na ordem que desejar, com suas respectivas propriedades e eventos, que o arquivo vai sendo gerado automaticamente; Unit1.cpp conterá o programa propriamente dito que possibilitará a soma dos dois números. Unit1.h Este arquivo também é gerado automaticamente, e constitui os cabeçalhos e funções, procedures e declaração de objetos. Para funções definidas pelo programador, ele precisará sofrer pequenas alterações. Não é o caso neste exemplo. Arquivo Unit1.dfm As definições de tela são armazenadas no arquivo com a extensão dfm O Objeto Form1 é da classe TForm, e é a tela onde serão colocados os outros objetos. Os objetos Label1, Label2 e Label3 são da classe TLabel, e foram utilizados para escrever um conteúdo na tela. 27

Arquivo Unit1.dfm Os objetos Edit1, Edit2 e Edit3 são da classe TEdit e foram utilizados para a entrada e a saída dos resultados. O objeto Button1 da classe TButton, que foi o objeto utilizado para realizar a operação de soma. Nossa tela Form1 Label1 Edit1 Label2 Edit2 Button1 Label3 Edit3 28

Arquivo Unit1.cpp Neste arquivo, devemos incluir o que queremos que o nosso programa faça. Faremos isto no evento OnClick do objeto Button1, ou seja, quando o usuário clicar no botão executaremos uma determinada ação. Para fazermos isso, basta o usuário dar dois cliques em Button1, que este criará a função Button1Click, associada ao evento OnClick deste botão. Agora basta escrevermos o que desejamos que a função faça: Arquivo Unit1.cpp /* Cria uma variável R (maiúscula) que armazenará valores reais */ float R; /* A função StrToFloat converte uma String em um número real, como a propriedade Text do objeto Edit1 é do tipo String, esta conversão torna-se necessária. O mesmo ocorre com Edit2 */ R = StrToFloat(Edit1->Text) + StrToFloat(Edit2->Text); /* Já a função FloatToStr faz exatamente o contrário, ou seja, converte um número real em uma String, para poder ser exibida no objeto Edit3, na propriedade Text */ Edit3->Text = FloatToStr(R); 29

Listagem completa do programa //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void fastcall TForm1::Button1Click(TObject *Sender) { float R; R = StrToFloat(Edit1->Text) + StrToFloat(Edit2->Text); Edit3->Text = FloatToStr(R); } //--------------------------------------------------------------------------- Arquivo Unit1.h //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { published: // IDE-managed Components TLabel *Label1; TEdit *Edit1; TLabel *Label2; TEdit *Edit2; TButton *Button1; TLabel *Label3; TEdit *Edit3; void fastcall Button1Click(TObject *Sender); private: // User declarations public: // User declarations fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif 30

Projeto 2 Editor de Texto Simples (classe TMemo) O objetivo deste projeto é o de construir um editor de texto simples. O usuário poderá digitar um texto, salvá-lo em um diretório qualquer com qualquer nome, e poderá também ler um arquivo armazenado. Este editor de texto suporta somente textos padrão ASCII, ou seja, textos sem formatação, como negrito, itálico, cor de letra, etc 31

Editor de Texto Simples (classe TMemo) Para a confecção deste projeto precisaremos das classes: TMemo; TSaveDialog; TOpenDialog; TEdit; TButton; Tlabel. Classe TMemo Propriedades: Alignment. permite definir como todo o texto do objeto será alinhado. Os possíveis valores são: taleftjustify, que é o valor default, justifica o texto à esquerda; tacenter, centralizada o texto; tarightjustify, que justifica o texto à direita; Lines. o valor da propriedade é a classe TStrings, logo, poderemos fazer uso das propriedades e métodos desta classe (TStrings), através da propriedade Lines. 32

Classe TMemo ScrollBars. Esta propriedade é utilizada para identificar se o objeto terá barras de rolagem ou não, e em caso positivo de que tipo ela será. Os possíveis valores são: ssnone que identifica que nenhuma barra de rolagem deve ser utilizada; sshorizontal usar somente barra de rolagem horizontal; ssvertical, usar somente barra de rolagem na vertical; ssboth, que indica o uso simultâneo de barras de rolagem horizontal e vertical. Classe TMemo Métodos: Clear. limpa todo o conteúdo do objeto; ClearSelection. limpa uma região selecionada; CopyToClipboard. Copia o conteúdo da região selecionada para o clipboard; CutToClipboard. Recorta o conteúdo da região selecionada e o coloca no clipboard; PasteFromClipboard. Cola o conteúdo do clipboard no objeto; SelectAll. Seleciona todo o conteúdo do objeto. 33

Classe TMemo Eventos: OnChange. é acionado toda a vez que a uma mudança no conteúdo do objeto; OnEnter. ocorre quando o objeto recebe o Focus de navegação; OnExit. ocorre quando o Focus sai do objeto e vai para um outro objeto qualquer; OnKeyDown. ocorre quando uma tecla é pressionada. O evento captura a tecla digitada, que pode ser manipulada da forma que o programador desejar. Exemplos da classe TMemo Memo1 e Memo2 são objetos da classe TMemo Exemplo 1: Faça um programa que selecione todo o conteúdo digitado em Memo1 (que deve ser centralizado) e coloque em Memo2 (que deve ser justificado à direita). Para fazer isso, basta fazermos uma tela com os dois objetos e um botão (digamos Button1). Clicando em Memo1, altere a propriedade Alignment para tacenter no Object Inspector; 34

Exemplos da classe TMemo Depois clique em Memo2 e altere a propriedade Alignment para tarightjustify também no Object Inspector. Dentro do evento OnClick de Button1 escreva: Memo1->SelectAll(); Memo1->CopyToClipboard(); Memo2->PasteFromClipboard(); Exemplos da classe TMemo Exemplo 2: Ainda em cima do exemplo 1, retire o botão (Button1), e faça com que tudo que o usuário digitar em Memo1 apareça automaticamente em Memo2 e vice-versa, ou seja, tudo que for digitado em Memo2 apareça automaticamente em Memo1. No evento OnChange de Memo1 colocamos: Memo1->SelectAll(); Memo1->CopyToClipboard(); Memo2->Clear(); Memo2->PasteFromClipboard(); 35

Exemplos da classe TMemo Ou Memo2->Text = Memo1->Text; E no evento OnChange de Memo2 colocamos: Memo2->SelectAll(); Memo2->CopyToClipboard(); Memo1->Clear(); Memo1->PasteFromClipboard(); Ou Memo1->Text = Memo2->Text; Classe TString Propriedades: Count. armazena a quantidade de caracteres de uma seqüência de caracteres; Strings. é utilizada para referenciar uma string, em um conjunto de strings. A maneira de referenciar é a mesma de um vetor. Text. contém toda a lista de strings; Values. Para Strings no formato Nome=Valor, a propriedade Values retorna o valor daquela string. 36

Classe TString Métodos: Add. Adiciona um elemento no final da lista; Clear. Limpa toda a lista; Delete. Apaga um elemento específico da lista; Equals. Verifica se duas listas são iguais, retorna true se verdadeiro e false caso contrário; Classe TString Insert. Insere um elemento em uma posição específica da lista; LoadFromFile. Lê as linhas do arquivo e inclui na lista; LoadFromStream. O método LoadFromStream lê para dentro de uma lista um Stream, que é um conjunto binário de dados qualquer (uma classe abstrata), pode ser um arquivo, uma imagem, uma posição de memória, etc 37

Classe TString SaveToFile. Salva os dados da lista em um arquivo; SaveToStream. Salva os dados da lista em um Stream; Classe TString Eventos: Não existe nenhum evento para esta classe. 38

Exemplos da classe TString em conjunto com TMemo Exemplo 1: Faça um programa que adicione três elementos ao objeto Memo1. Para fazermos este programa precisaremos de um botão (Button1) e usaremos o método Add da classe TString, pois a propriedade Lines de Memo1 faz referência a esta classe. No evento OnClick de Button1 basta escrevermos: Memo1->Clear(); Memo1->Lines->Add( Linha 1 ); Memo1->Lines->Add( Linha 2 ); Memo1->Lines->Add( Linha 3 ); Exemplos da classe TString em conjunto com TMemo Exemplo 2: Fazer um botão em cima do exemplo 1 que apague a primeira linha de Memo1 Agora usaremos o método Delete da classe TString. Usaremos um novo botão (Button2) No evento OnClick de Button2 basta escrevermos: Memo1->Lines->Delete(0); Este método apagara a primeira linha de Memo1, e a linha 2 e linha 3 irão para a posição zero e um respectivamente, de tal forma que se Button2 for pressionado três vezes todo o conteúdo de Memo1 desaparecerá. 39

Exemplos da classe TString em conjunto com TMemo Exemplo 3: Lêr o arquivo c:\autoexec.bat para dentro de Memo1 Memo1->Lines->LoadFromFile( c:\autoexec.bat ); Exemplo 4: Salvar o arquivo do exemplo anterior com o nome de c:\autoexec.old Memo1->Lines->SaveToFile( c:\autoexec.old ); Exemplos da classe TString em conjunto com TMemo Exemplo 5: Suponha que o objeto Memo1 esteja preenchido com os seguintes valores: DisplayGrid=1 SnapToGrid=1 GridSizeX=8 GridSizeY=8 Como fazer para recuperar o valor de GridSizeX? 40

Exemplos da classe TString em conjunto com TMemo Para fazermos este programa vamos criar um novo botão (Button3) e um objeto Edit1 para receber a resposta. Basta digitar no evento OnClick de Button3 a seguinte linha: Edit1->Text = Memo1->Lines->Value[ GridSizeX ]; Exemplos da classe TString em conjunto com TMemo Exemplo 6: Como fazer para trocar o conteúdo da terceira linha de um objeto Memo1 pela frase Alteração de Linha? Crie um botão qualquer (Button4) e no evento OnClick digite: Memo1->Lines->Strings[2] = "Alteração de Linha"; 41

Classe TOpenDialog Propriedades: DefaultExt. Esta propriedade define a extensão default para abertura de arquivo; FileName. Após a escolha do arquivo pelo usuário, é atribuída a esta propriedade o nome do arquivo escolhido; Files. Em caso de seleção de múltiplos arquivos, esta propriedade traz a relação de todos os arquivos selecionados, no formato de uma lista (TString); Classe TOpenDialog Filter. Nesta propriedade são definidos as extensões de arquivos que serão suportados pela abertura de arquivo; InitialDir. Esta propriedade armazena o diretório inicial onde a caixa de diálogo deverá ser apresentada; Options. Esta propriedade armazena um conjunto de opções que pode ser utilizada para a abertura de um arquivo, como a possibilidade de selecionar múltiplos arquivos por exemplo; Title. É o título que aparece neste objeto 42

Classe TOpenDialog Métodos: Execute. Este método executa o objeto e retorna true caso o usuário tenha pressionado o botão Abrir, ou seja, escolhido um arquivo e false caso o usuário pressione o botão Cancelar. Classe TOpenDialog Eventos: OnFolderChange. é acionado toda a vez que há uma mudança de pasta/diretório. OnSelectionChange. ocorre quando há uma mudança na seleção. OnClose. ocorre quando o objeto é fechado. OnShow. ocorre quando o objeto é exibido. 43

Classe TSaveDialog Esta classe tem basicamente todas as propriedades, métodos e eventos da classe TopenDialog. Exemplos das classe TOpenDialog e TSaveDialog Exemplo 1: Faça um programa que execute a caixa de diálogo para abrir um arquivo Caso o usuário escolha um arquivo, que este seja aberto no objeto Memo1 (classe TMemo). Os arquivos a serem aceitos são: Todos (*.*); Textos (*.txt) e Arquivos Bat (*.bat), o diretório inicial deve ser c:\windows\system e o título da caixa de diálogo deve ser: Abrir Arquivo 44

Exemplos das classe TOpenDialog e TSaveDialog Para fazermos este programa vamos precisar do objeto Memo1 (TMemo), do objeto OpenDialog1 (TOpenDialog), dentro da paleta Dialogs e de um botão (Button1). Dentro do evento OnClick de Button1 basta escrever-mos: Exemplos das classe TOpenDialog e TSaveDialog OpenDialog1->Filter = "Todos *.* Textos *.txt Arquivos Bat *.bat"; OpenDialog1->InitialDir = "C:\WINDOWS\SYSTEM"; OpenDialog1->Title = Abrir Arquivo "; if (OpenDialog1->Execute()) { Memo1->Lines->LoadFromFile(OpenDialog1- >FileName); } 45

Exemplos das classe TOpenDialog e TSaveDialog Observe que o comando if é necessário, pois o método Execute(), apenas manda executar o objeto, mas não garante que o usuário escolheu um arquivo. Caso o usuário tenha escolhido um arquivo ele retorna verdadeiro e em caso contrário falso. Na nossa solução, usamos o if para verificar o retorno do objeto, e só abrimos o arquivos, propriedade FileName, se o usuário escolheu algum arquivo, caso contrário não fazemos nada. Exemplos das classe TOpenDialog e TSaveDialog Exemplo 2: Ainda em cima do exemplo 1, coloque um novo botão para salvar o arquivo. Basta incluirmos um novo botão (Button2), e no seu evento OnClick colocarmos os seguintes comandos: if(savedialog1->execute()) Memo1->Lines->SaveToFile(SaveDialog1- >FileName); 46

Código Fonte Arquivo Unit1.dfm Memo1 OpenDialog1 SaveDialog1 Edit1 Edit2 47

Arquivo Unit1.cpp //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void fastcall TForm1::Button1Click(TObject *Sender) { if(opendialog1->execute()) { Memo1->Clear(); Memo1->Lines->LoadFromFile(OpenDialog1->FileName); } } //--------------------------------------------------------------------------- void fastcall TForm1::Button2Click(TObject *Sender) { if(savedialog1->execute()) Memo1->Lines->SaveToFile(SaveDialog1->FileName); } //--------------------------------------------------------------------------- Mais Teoria 48

Procedimentos e Funções Um procedimento ou uma função em C++ Builder são um fragmento de programa. Procedimentos e Funções são bastante utilizados para re-usarmos código. Devemos entretanto, tomar cuidado para não usarmos uma linguagem orientada a objetos como uma linguagem procedural normal. Procedimentos e Funções Sempre que possível devemos criar classes, para que essas sim sejam usadas em nossos códigos, e não somente os procedimentos e funções. 49

Procedimentos e Funções - Exemplo Suponha que eu queira calcular a função: y = x 2 3 De tal forma que o usuário digite o valor de x, e o computador calcule o valor de y e mostre o resultado na tela. Procedimentos e Funções - Exemplo Label1 Edit1 Button1 Label2 Edit2 50

Procedimentos e Funções - Exemplo //--------------------------------------------------------------------------- void fastcall TForm1::Button1Click(TObject *Sender) { int valor; valor = StrToInt(Edit1->Text); Calcula(valor); } //--------------------------------------------------------------------------- void fastcall TForm1::Calcula(int x) { float resultado; resultado = x*x - 3; Edit2->Text = FloatToStr(resultado); } //--------------------------------------------------------------------------- Procedimentos e Funções - Exemplo Dentro do evento OnClick de Button1, criamos uma variável inteira chamada valor (int valor) Atribuímos a esta variável o valor digitado pelo usuário em Edit1 (valor = StrToInt(Edit1->Text)), Chamamos o procedimento Calcula, passando como parâmetro a variável valor. 51

Procedimentos e Funções - Exemplo Neste momento, o programa é desviado para o procedimento Calcula, e a variável valor é atribuída a variável inteira x, que será tratada pelo procedimento. No procedimento Calcula é criado uma variável real chamada resultado (float resultado). Procedimentos e Funções - Exemplo Na próxima linha é atribuída a variável resultado o resultado da equação (resultado = x*x 3) e finalmente o valor encontrado é mostrado na tela no objeto Edit2 (Edit2->Text = FloatToStr(resultado)). 52

Procedimentos e Funções O formato de um procedimento é o mostrado abaixo: void fastcall TForm1::Nome_do_Procedimento(parâmetros) { //Comando 1; //Comando 2; //Comando n; } Procedimentos e Funções Importante: Além da definição no programa principal (*.cpp), devemos ainda incluir o cabeçalho do procedimento, ou seja, o seu nome e os seus parâmetros no arquivo de cabeçalhos (*.h) na sessão de public como mostrado abaixo: public:// User declarations fastcall TForm1(TComponent* Owner); IIEsta linha é incluída automaticamente void fastcall Calcula(int x); //Esta linha precisa ser incluída para que o programa compile 53

Procedimentos e Funções Para incluir o procedimento, deve-se abrir o programa de cabeçalho (*.h). Para abrir o arquivo, basta clicar com o botão direito na unit correspondente (*.cpp) e escolher a opção Open Source/Header File. Agora, basta incluir o procedimento correspondente na sessão public. 54