Você está na página 1de 13

FAFIMAN

PROGRAMAÇÃO DE SISTEMAS DE COMPUTAÇÃO I

AYSLAN T. POSSEBOM

RESUMO

BORLAND BUILDER C++


(versão 6.0)
BORLAND BUILDER C++

1. INTRODUÇÃO AO BORLAND BUILDER C++

Ao iniciar o Builder C++, temos uma tela semelhante à seguinte:

Cada aplicativo é chamado de projeto e pode ter uma ou mais janelas. Toda
janela possui seu arquivo de programa-fonte. Tal arquivo é chamado de Unit e é onde
digitamos nosso código em linguagem C/C++.

Ao adicionar novos componentes no formulário, é criado um ponteiro equivalente


para o componente na Unit.h:

Podemos inserir componentes no formulário clicando no respectivo componente,


localizado na paleta de componentes e clicando no formulário.
Ao clicarmos no componente inserido no formulário, podemos alterar suas propriedades:

Para a programação, utilizamos a linguagem C ou C++, com sua sintaxe:


- Estruturas condicionais: if/else/switch/case
- Estruturas de repetição: while/do..while/for
- Funções
- Ponteiros, etc

1.1. Trabalhando com eventos

Insira um botão (paleta Standard Button) ao formulário. Altere a propriedade


Caption para Exibir Mensagem .
Insira um rótulo (Label). Altere a propriedade Captoin para Entrada: .
Insira um campo Edit e limpe o conteúdo da propriedade Text.

Dê um duplo clique no botão (ou na paleta de propriedades, selecione a guia


Events e dê um duplo clique no evento OnClick ). Será gerado um código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{

}
Iremos implementar o código referido ao evento nesta função. A função que será
chamada quando clicarmos no botão é a Button1Click . Dentro da função, vamos exibir
uma mensagem ao usuário.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage("Mensagem Digitada: " + Edit1->Text);
}
No evento OnShow , vamos inserir o código seguinte, fazendo com que o cursor
esteja no campo de edição ao exibir o formulário:
void __fastcall TForm1::FormShow(TObject *Sender)
{
Edit1->SetFocus();
}

1.2. Caixas de Mensagem

ShowMessage
Uma caixa de mensagem simples, com um botão OK. O nome do projeto da aplicação é
exibido na barra de título da mensagem:
ShowMessage("Uma mensagem simples");

MessageDlg
Caixa de mensagem que pode conter símbolos especiais, botões adicionais e outros
elementos.
MessageDlg("Mensagem a ser exibida", mtInformation, TMsgDlgButtons() << mbOK, 0);

Tipos de caixa de mensagem:


- mtInformation
- mtWarning
- mtError
- mtConfirmation
- mtCustom (nós fornecemos o título ou então recebe o nome do projeto)
MessageDlg("Mensagem de Informação", mtInformation, TMsgDlgButtons() << mbOK, 0);
MessageDlg("Mensagem de Atenção", mtWarning , TMsgDlgButtons() << mbOK, 0);
MessageDlg("Mensagem de Erro", mtError, TMsgDlgButtons() << mbOK, 0);
MessageDlg("Mensagem de Confirmação", mtConfirmation, TMsgDlgButtons() << mbOK, 0);
MessageDlg("Mensagem Padrão", mtCustom, TMsgDlgButtons() << mbOK, 0);
Tipos de Botões:
enum TMsgDlgBtn { mbNone, mbOk, mbCancel, mbYes, mbNo, mbAbort, mbRetry, mbIgnore };
- Utilizamos a chamada de função TMsgDlgButtons() juntamente com o operador << e os
nomes dos botões, sempre seguidas pelo operador <<.
Exemplo:
MessageDlg("Mensagem com botões", mtConfirmation, TMsgDlgButtons() << mbOK << mbCancel << mbYes
<< mbNo, 0);
MessageBox
Caixa de mensagem com Mensagem, título e botões.
Application->MessageBox("Mensagem", "Título da Janela", MB_OKCANCEL);
Tipos de botões:
MB_OK OK retorna 1
MB_OKCANCEL Cancel retorna 2
MB_RETRYCANCEL Retry retorna 4
MB_YESNO Yes retorna 6, No retorna 7
MB_YESNOCANCEL
MB_ABORTRETRYIGNORE Abort retorna 3, Ignore retorna 5
Exemplo:
int opcao = Application->MessageBox("Mensagem", "Título da Janela", MB_OKCANCEL);
switch(opcao){
case 1: ShowMessage("Clicou em OK");
break;
case 2: ShowMessage("Clicou em CANCEL");
break;
case 3: ShowMessage("Clicou em ABORT");
break;
case 4: ShowMessage("Clicou em RETRY");
break;
case 5: ShowMessage("Clicou em IGNORE");
break;
case 6: ShowMessage("Clicou em YES");
break;
case 7: ShowMessage("Clicou em NO");
break;
}

InputBox
Representa uma caixa de mensagem simples com um campo de edição e botões de OK e
Cancel. Podemos informar valores no campo de texto e retorna o texto digitado.
InputBox("Titulo da Janela", "Texto da pergunta", "Texto preenchido no edit");
Exemplo de uso:
AnsiString valor = InputBox("Cidade:", "Qual cidade você mora?", "");
ShowMessage("Voce mora em: " + valor);

Caixas de Mensagem personalizadas

void MinhaShowMsg(String msg)


{
TForm *ShowMsg = CreateMessageDialog(msg, mtError, TMsgDlgButtons() << mbOK);
ShowMsg->Caption = "ERRO DE EXECUÇÂO...";
ShowMsg->Color = clYellow;
ShowMsg->Font->Color = clRed;
ShowMsg->Font->Style = TFontStyles()<<fsBold<<fsItalic;
ShowMsg->Font->Name = "Courier New";
ShowMsg->Font->Size = 9;
ShowMsg->ShowModal();
delete ShowMsg;
ShowMsg = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
MinhaShowMsg("Erro durante execução... Reinicie o computador...");
}

EXERCÍCIOS:

Crie a linha de comando para cada uma das caixas de diálogo:

a) b) c)

d) e)

f) g) h)

i) j) k)

l) m)

RESPOSTAS:
MessageDlg("Mensagem de Informação", mtInformation, TMsgDlgButtons() << mbOK << mbCancel, 0);
ShowMessage("Mensagem a ser informada ao usuário");
MessageDlg("Mensagem de Aviso", mtWarning, TMsgDlgButtons() << mbOK << mbCancel, 0);
Application->MessageBox("Exemplo de Mensagem", "Título da Caixa", MB_ABORTRETRYIGNORE);
MessageDlg("Mensagem de Erro", mtError, TMsgDlgButtons() << mbYes << mbNo << mbCancel, 0);
InputBox("Nome:", "Digite o seu nome completo:", "");
MessageDlg("Mensagem de Confirmação", mtConfirmation, TMsgDlgButtons() << mbAbort << mbRetry << mbIgnore, 0);
Application->MessageBox("Prova contendo toda avaliação teórica e prática", "Anote", MB_OK);
MessageDlg("Mensagem sem Tipo", mtCustom, TMsgDlgButtons() << mbOK << mbCancel, 0);
ShowMessage("Bem vindo ao Borland Builder C++");
MessageDlg("Mensagem informada", mtWarning, TMsgDlgButtons() << mbYes << mbNo << mbCancel, 0);
InputBox("Pesquisa", "Qual é a disciplina mais interessante do seu curso?", "Progr. de Comp. I");
MessageDlg("Mensagem informada", mtInformation, TMsgDlgButtons() << mbYes << mbNo << mbIgnore << mbHelp, 0);
2. CRIANDO UMA APLICAÇÃO

Para criar uma aplicação, selecione o menu File New Application. Será
exibido na tela um formulário onde os componentes deverão ser inseridos.
Altere as propriedades do formulário:
Título (caption): Minha Aplicação
Ícones da janela (border icons): coloque true apenas para biSystemMenu (botão fechar)
Largura da janela (width): 350
Altura (height): 250
Adicione um componente Label e altere seu caption para Adicionar Item: .
Adicione um componente Edit e exclua o texto preenchido.
Adicione três botões e altere o caption para: Incluir , Excluir , Sair do programa .
Adicione um ListBox.

O código gerado na Unit1.h é:

Ao iniciar o programa, o foco do cursor deve estar no campo Edit. Selecione o


formulário e adicione o evento OnShow:
void __fastcall TForm1::FormShow(TObject *Sender)
{
Edit1->SetFocus();
}

Adicione o evento OnClick no botão Incluir :


void __fastcall TForm1::Button1Click(TObject *Sender)
{
ListBox1->Items->Add(Edit1->Text);
Edit1->Clear();
Edit1->SetFocus()
}
Adicione o evento OnClick no botão Excluir :
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (ListBox1->ItemIndex > -1){
AnsiString texto = ListBox1->Items->operator [](ListBox1->ItemIndex);
int opcao = MessageDlg("Deseja realmente excluir o item " + texto , mtConfirmation,
TMsgDlgButtons() << mbYes << mbNo, 0);
if (opcao == 6){
ListBox1->Items->Delete(ListBox1->ItemIndex);
}
}
else{
ShowMessage("Nenhum item selecionado");
}
}

Adicione o evento OnClick no botão Sair do Programa


void __fastcall TForm1::Button3Click(TObject *Sender)
{
Close();
}

2.1. Acessando Propriedade dos componentes

Cada componente inserido na aplicação apresenta suas propriedades, seus


métodos e seus eventos.
Para acessar as propriedades em tempo de projeto, basta utilizar o Object
Inspector na guia Properties.
Podemos alterar as propriedades via código em tempo de execução. Para isso,
basta utilizar o nome do objeto, seguido pelo símbolo ponto em linguagem C (->) e o
nome da propriedade. Exemplo:
Edit1->Text = "Texto exibido ao clicar";
Label1->Caption = "Novo valor";
Label1->Font->Color = clRed;
Label1->Font->Size = 18;
Label1->Font->Name = "Times New Roman";
Label1->Top = Label1->Top - 15;

Exemplo de algumas das propriedades de um componente Edit:


Propriedade Descrição
AutoSelect Determina se o texto é selecionado automaticamente quando o usuário mover-se ate o componente Edit ou Memo
utilizando tab
AutoSize Determina se um componente tem o tamanho reajustado automaticamente para acolher seu conteúdo
BorderStyle Determina o tipo de borda exibido para um componente
CharCase Determina se o estilo dos caracteres exibidos sera em maiúsculas, minúsculas ou misturadas
Color Determina a seguir:
A cor de fundo de form
A cor de um controle ou figura
Ctl3D Determina se o controle possui um visual tridimensional ou bidimensional
Cursor Determina a imagem que o ponteiro do mouse assume (tal como seta ou I-beam) quando passar por área coberta
pelo componente
DragCursor Determina a imagem que o cursor assume (tal como seta ou I-beam) quando passar por sobre um componente que
aceite arrasto
DragMode Determina o componente drag-and-drop de um componente
Enabled Determina se o componente responde a eventos do mouse, teclado ou timer
Font Determina os atributos(cor, tamanho, estilo, ou nome) do seguinte:
Texto escrito sobre ou dentro de um componente ou objeto
Texto enviado a impressora
Height Determina o tamanho vertical de um componente ou objeto
HelpContext Determina um número único para cada tela a ser chamada no Help sensível ao contexto
HideSelection Determina se o texto selecionado mantém-se selecionado quando o objeto perder o foco
Hint Determina a string de texto que aparecera quando o evento OnHint ocorrer (quando o cursor passar sobre um
componente ou item de menu, seu significado sera exibido)
Left Determina a localização horizontal em pixels do lado esquerdo de :
Um componente em relação ao form ou painel ou outros objetos container
Um form em relação a tela
MaxLength Determina o número máximo de caracteres que um usuário pode digitar em um componente Edit ou Memo.
Zero(0) significa sem limite.
Name Determina um nome único para um componente ou objeto
OEMConvert Determina se o texto é convertido para caracteres OEM
ParentColor Determina onde o componente procurara pela informação sobre sua cor, como segue:
Se o valor form True, o componente utiliza a propriedade Color do componente pai.
Se o valor form False, o componente utiliza sua própria propriedade Color.
ParentCtl3D Determina onde o componente procurara pela informação sobre seu visual tridimensional, como segue:
Se o valor form True, o componente utiliza a propriedade tridimensional do componente pai.
Se o valor form False, o componente utiliza sua própria propriedade tridimensional.
ParentFont Determina onde um componente procurara para pela pela informação sobre seu fonte, como segue:
Se o valor form True, o componente utilizará a propriedade Font do componente pai.
Se o valor form False, o componente utilizará sua própria propriedade Font.
ParentShowHint Determina onde um controle procurara se o Help hint deve ser exibido, como segue:
Se o valor form True, o controle utiliza a propriedade ShowHint do componente pai.
Se o valor form False, o controle utiliza sua própria propriedade ShowHint.
PassWordChar Determina se um componente Edit ou Memo exibe caracteres especiais (ao invés do texto real) quando uma senha
form digitada
PopupMenu Identifica o nome o menu pop-up que aparecera quando um dos seguintes acontecer:
O usuário seleciona um componente e pressiona o botão direito do mouse.
O método PopUp de um menu pop-up é executado.
ReadOnly Torna um componente read-only durante a execução, para que o usuário possa alterar o valor do campo ou do
dataset
ShowHint Determina se o Help está habilitado ou não, para a aplicação, como segue:
Se o valor form True, Help Hints está habilitado.
Se o valor form False, Help Hints está desabilitado.
TabOrder Indica a posição do componente na ordem tab do container, a ordem na qual um componente recebe o foco quando
a tecla tab é pressionada.
TabStop Determina se um usuário pode pressionar tab até o componente
Tag Cria um local disponível para armazenar valor integer como parte de um componente A
propriedade Tag, embora não utilizada pelo Delphi, está disponível para necessidades especiais do usuário.
Text Especifica a string de texto exibida em um componente ou outro objeto
Top Determina o posicionamento vertical em pixels do canto superior esquerdo de:
Um componente em relação ao form, painel ou outro controle container
Um form em relação a tela
Visible Determina se um componente aparece na tela
Width Determina o tamanho horizontal do componente e outros objetos

2.2. Acessando Eventos dos componentes

Os eventos dizem respeito as ações dos usuários em relação aos componentes ou


ocorrências do sistema nos componentes. Exemplo de eventos: clique do mouse, tecla
pressionada, etc.
Ao adicionar um evento ao componente, será criado um Event Handler com um
bloco de código onde serão escritos a programação para o evento.
Podemos inserir eventos aos componentes através do Object Inspector, na aba
Events. Cada componente apresenta seus possíveis eventos.
Alguns dos eventos para o componente Edit são:
Evento Descrição
OnChange Ocorre quando um determinado valor de um objeto ou componente é alterado
OnClick Ocorre quando o usuário da um clique sobre o componente
OnDblClick Ocorre quando o usuário da um duplo-clique sobre um componente
OnDragDrop Ocorre quando o usuário solta um objeto sendo arrastado
OnDragOver Ocorre quando o usuário arrasta um objeto sobre um componente
OnEndDrag Ocorre quando termina o arrasto de um objeto
OnEnter Ocorre quando um componente torna-se ativo
OnExit Ocorre quando o foco de input passa de um componente para outro
OnKeyDown Ocorre quando o usuário pressiona qualquer tecla quando um componente possuir o foco
OnKeyPress Ocorre quando o usuário pressiona uma única tecla de caractere
OnKeyUp Ocorre quando o usuário solta uma tecla que estava pressionada
OnMouseDown Ocorre quando o usuário pressiona o botão mouse enquanto o ponteiro do mouse estiver sobre um componente
OnMouseMove Ocorre quando o usuário move o ponteiro do mouse quando o ponteiro do mouse estiver sobre o componente
OnMouseUp Ocorre quando o usuário solta o botão do mouse quando o ponteiro do mouse estiver sobre um componente

2.3. Acessando Métodos dos componentes

Métodos são funções associadas aos componentes. Métodos também são


chamados utilizando o nome do objeto, o operador ponto (->) e o nome do método,
seguido por parênteses, passando ou não parâmetros quando necessário. Exemplo de
Métodos para o componente Edit:
Método Descrição
Uma função que inicia com o arrasto de um controle
BeginDrag Se o valor do parâmetro Immediate for True, o ponteiro do mouse altera para o valor da propriedade
DragCursor e o arrasto inicia imediatamente.
Se o valor do parâmetro Immediate for False, o ponteiro do mouse não muda de valor e o arrasto inicia
somente após o usuário mover o ponteiro do mouse cinco pixels.
BringToFront Uma função que põe um componente ou form na frente de outros componentes ajanelados ou não, ou forms
dentro de seu componente pai ou form.
ClassName Uma função que retorna o nome da classe de um objeto
ClassParent Uma função que retorna a classe que seja pai de um objeto
ClassType Uma função que retorna o tipo de classe de um objeto
Create Um construtor que inicializa um objeto ou componente de acordo com certas funçãos padrão. Um construtor é
declarado com a palavra reservada constructor.
Clear Uma função que deleta itens ou texto de um controle
CleanSelection Uma função que deleta o texto selecionado de um componente Edit ou Memo
CopyToClipboard Uma função que copia uma seleção ao Clipboard
CutToClipboard Uma função que deleta a seleção de um controle e a copia para o Clipboard
Destroy Um destrutor que destrói um objeto, controle ou componente, e libera a memória que estava alocada a ele. Um
destrutor é declarado com a palavra destructor
Dragging Uma função que especifica se um objeto está sendo arrastado
EndDrag Uma função que termina o arrasto de um objeto
Free Uma função que destrói um objeto e libera a memória alocada para ele
GetSelTextBug Uma função que copia para um buffer o texto selecionado de um componente Edit ou Memo, e retorna o
número de caracteres copiados
GetTextLen Uma função que retorna o tamanho do texto de um controle
Hide Uma Função que opera somente durante a execução e torna um form ou controle invisível através da
definição da propriedade Visible para False, do form ou controle
PasteFromClipboard Uma função que copia texto do Clipboard para um controle
Refresh Uma função que limpa qualquer imagem que esteja na tela e depois redesenha o controle inteiro
ScaleBy Uma função que reajusta um controle a um percentual de seu tamanho anterior
ScrollBy Uma função que rola o conteúdo de um form ou controle ajanelado
SelectAll Uma função que seleciona o bloco de texto inteiro em um controle
SendToBack Uma função que coloca um componente, ajanelado ou não, por tras de todos os outros componentes dentro de
um componente pai ou form
SetBounds Uma função que define as propriedades Left, Right, Height e Width de um componente aos valores passados
com os parâmetros ALeft, ARight, AHeight e AWidth
SetFocus Uma função que põe o foco de input no controle
SetSelTextBuf Uma função que define texto selecionado em um componente Edit ou Memo ao texto na string null-terminated
para o qual o buffer aponta
SetTextBuf Define o texto em um componente para o texto do buffer
Show Uma função que torna um form ou controle visual definindo sua propriedade Visible para True
Update Uma função que redesenha um componente

Exemplo para acessar um método de um Label:


if (Label1->Visible == true)
Label1->Hide(); //altera a propriedade Visible para false
else
Label1->Show();
2.4. Criando nossas próprias funções

Para podermos criar nossas próprias funções, primeiramente precisamos abrir o


arquivo de biblioteca criado para a aplicação (arquivo.h).

Dentro da classe TForm1, na região referente aos campos privados (private),


precisamos definir todas as nossas funções
Exemplo: void exibirMensagem();

No arquivo fonte (cpp), precisamos implementar a função da seguinte forma:


void TForm1::exibirMensagem(){
...
}
Aqui, dizemos que a função exibirMensagem() pertence a classe TForm1 e que
esta função não retorna um valor (void). Criando nossas funções desta forma, podemos
ter acesso direto a todos os objetos contidos no formulário. Exemplo:
void TForm1::exibirMensagem(){
ShowMessage("Uma mensagem");
Edit1->Text = "Um texto";
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
exibirMensagem();
}
3. CRIANDO MENUS E FORMULÁRIOS MODAIS

3.1. MainMenu
O componente MainMenu é responsável pela implementação de uma barra de
menus no formulário da aplicação. Para inserirmos um menu precisamos:
Na guia Standard da paleta de componentes, selecione o componente MainMenu
. MainMenu é um componente não visível. Será exibido apenas quando o
configurarmos.
Dê um duplo clique no componente inserido e será aberto o Menu Designer
onde poderemos criar a barra de menus da aplicação.

Basta selecionarmos o retângulo vazio e digitarmos seu conteúdo. Para cada item
de menu, a barra de propriedades exibirá seus atributos. O atributo referente ao
texto do menu é o caption . Para que o menu seja acessado pelas teclas (ex:
ALT+a), basta colocar um & antes do caractere a ser acionado pela tecla.

Para inserirmos novos itens, basta selecionar os retângulos ao lado ou abaixo de


Arquivo.
Para inserir ícones, basta selecionar um ícone com a extensão .bmp na
propriedade Bitmap da barra de propriedades.

Para habilitar as teclas de atalho (acesso rápido), precisamos escolher a


combinação de teclas na propriedade ShortCut da barra de propriedades

Para inserir um submenu, basta selecionar o item de menu, pressionar a tecla


CTRL + seta para a direita. Uma nova barra de submenu será exibida.

Para inserir eventos aos menus, basta selecionar qual o item de menu será incluído
o evento e na barra de propriedades, na guia Events, clicar duas vezes no evento
OnClick (ou então dar dois cliques em cima do item de menu).
void __fastcall TForm1::Novo1Click(TObject *Sender)
{
ShowMessage("Cliquei no menu Arquivo e no item Novo!");
}
Para inserirmos uma barra separadora, precisamos fornecer ao Caption na barra de
propriedades, apenas um hifen (-) e pressionar Enter.

3.2. PopupMenu
Um PopupMenu é um menu que será exibido ao clicar com o botão direito do
mouse sobre um determinado componente.
Para inserir um PopupMenu precisamos:
Na guia Standard da paleta de componentes, selecione o componente PopupMenu
. PopupMenu é um componente não visível. Será exibido apenas quando o
configurarmos.
Configure o PopupMenu igual ao componente MainMenu, fornecendo Caption,
Bitmap, ShortCut, Name, etc. Quando o sistema apresenta diversos PopupMenus,
é bastante interessante colocarmos um nome (propriedade Name) para cada menu.
Para associar um PopupMenu a um componente, selecione o componente
(exemplo: Edit) e altere a propriedade Popup Menu na barra de propriedades
para selecionar o nome do componente de menu.

3.3. Criando Formulários Modais

Utilizamos formulários ou diálogos para exibir janelas modais (janelas que se


sobrepõem sobre outras janelas). Tais janelas normalmente são utilizadas ao selecionar
opções nos menus ou botões.
Para criar uma janela modal:
selecione o menu File New Form.
No formulário criado, altere suas propriedades, insira os componentes, etc.

No formulário principal, insira o evento apropriado para abrir a nova janela (evento em
item de menu, botão, etc)
Insira o seguinte código:
Form2->ShowModal();

Repare que o componente Form2 (ou o nome do formulário) não existe na Unit principal.
Precisamos incluir a Unit referente ao Form2 para que possamos exibir o formulário.
FORMA SIMPLES:
Selecionando o formulário principal, escolha o menu File Include Unit Hdr
Será exibida uma janela Use Unit . Escolha a unidade referente ao Form2
FORMA AVANÇADA:
Na Unit do formulário principal, insira a diretiva #include para incluir o arquivo
de cabeçalho referente a unidade do Form2
#include "Unit2.h"

Você também pode gostar