21
E N G E N H A R I A D E P R O C E S S A M E N T O D I G I T A L I I 63 3 3 . . O O s s O O b b j j e e t t o o s s C C o o m m p p o o n n e e n n t t e e s s Os objetos componentes são elementos genéricos com uma funcionalidade concreta cuja única finalidade é a reutilização. Cada um deles está destinado a realizar uma tarefa típica em uma aplicação. Um objeto componente da VCL é uma classe que caracteriza a um elemento de controle do Windows acrescidos de propriedades, métodos e gerenciadores de eventos de cada controle. A filosofia dos objetos componentes no C++ Builder é exatamente à mesma do Microsoft Visual Basic®. A analogia é tanta que alguns componentes podem ser utilizados em ambos ambientes, como é o caso dos objetos ActiveX. 3.1. As Páginas de componentes Como comentado anteriormente os objetos componentes se agrupam na paleta de objetos em distintas páginas, a saber: Standard: inclui os objetos componentes mais comuns e mais usados para os programas Windows®. Additional: armazena componentes especializados próprios do C++ Builder. Win32: inclui quadros de diálogo próprios do Windows. System: esta página inclui controles especializados de interação com o sistema operacional. Data Access, Data Controls e InterBase: inclui componentes especializados para o acesso às bases de dados. Internet e FastNet: inclui componentes para os distintos protocolos de acesso à Internet. QReport: são componentes para desenhar rapidamente todo tipo de relatórios. Dialogs: contém quadros de diálogo comuns nas aplicações Windows® prontos ara usar. Win3.1: inclui componentes próprios do Windows 3.1 por compatibilidade de versões anteriores. Samples: contém componentes para demonstração de como criar e personalizar novos componentes. ActiveX: os objetos componentes desta página são objetos ActiveX criados por outros desenvolvedores. Servers: armazena componentes COM derivados dos servidores OLE. Figura 3-1 - Paleta de componentes.

03-Componentes-C++BuilderV10

Embed Size (px)

DESCRIPTION

Os objetos componentes são elementos genéricos com uma funcionalidade concreta cuja única finalidade é a reutilização. Cada um deles está destinado a realizar uma tarefa típica em uma aplicação. Um objeto componente da VCL é uma classe que caracteriza a um elemento de controle do Windows acrescidos de propriedades, métodos e gerenciadores de eventos de cada controle. 33 .. 11 .. AA ss PP áá gg ii nn aa ss dd ee cc oo mm pp oo nn ee nn tt ee ss 63 P ROCESSAMENTO D IGITAL I I D E

Citation preview

Page 1: 03-Componentes-C++BuilderV10

E N G E N H A R I A D E P R O C E S S A M E N T O D I G I T A L I I

63

33.. OOss OObbjjeettooss CCoommppoonneenntteess Os objetos componentes são elementos genéricos com uma funcionalidade

concreta cuja única finalidade é a reutilização. Cada um deles está destinado a

realizar uma tarefa típica em uma aplicação. Um objeto componente da VCL é

uma classe que caracteriza a um elemento de controle do Windows acrescidos de

propriedades, métodos e gerenciadores de eventos de cada controle.

A filosofia dos objetos componentes no C++ Builder é exatamente à mesma

do Microsoft Visual Basic®. A analogia é tanta que alguns componentes podem

ser utilizados em ambos ambientes, como é o caso dos objetos ActiveX.

33..11.. AAss PPáággiinnaass ddee ccoommppoonneenntteess Como comentado anteriormente os objetos componentes se agrupam na

paleta de objetos em distintas páginas, a saber:

� Standard: inclui os objetos componentes mais comuns e mais usados para os programas Windows®.

� Additional: armazena componentes especializados próprios do C++ Builder.

� Win32: inclui quadros de diálogo próprios do Windows.

� System: esta página inclui controles especializados de interação com o sistema operacional.

� Data Access, Data Controls e InterBase: inclui componentes especializados para o acesso às bases de dados.

� Internet e FastNet: inclui componentes para os distintos protocolos de acesso à Internet.

� QReport: são componentes para desenhar rapidamente todo tipo de relatórios.

� Dialogs: contém quadros de diálogo comuns nas aplicações Windows® prontos ara usar.

� Win3.1: inclui componentes próprios do Windows 3.1 por compatibilidade de versões anteriores.

� Samples: contém componentes para demonstração de como criar e personalizar

novos componentes.

� ActiveX: os objetos componentes desta página são objetos ActiveX criados por

outros desenvolvedores.

� Servers: armazena componentes COM derivados dos servidores OLE.

Figura 3-1 - Paleta de componentes.

Page 2: 03-Componentes-C++BuilderV10

L U I S F E R N A N D O E S P I N O S A C O C I A N

64

33..11..11.. SSttaannddaarrdd Esta aba contém os componentes mais comuns e habituais dos programas

Windows®.

Figura 3-2 - Objetos da aba Standard.

MainMenu

Cria uma barra de menu que atua como menu principal. Para adicionar as opções ao

menu e aos submenus adicione este componente ao quadro. Para acessar a

ferramenta de configuração de menus clicar duas vezes sobre o objeto.

PopupMenu

Cria menus de contexto que aparecem quando se clica com o botão direito do mouse.

Para configurar o menu de contexto proceda clicando duas vezes sobre o

componente.

Label

Mostra um texto que o usuário não poderá selecionar nem manipular. Se usa para

mostrar textos de título, cabeçalhos e até resultados alterando a propriedade Caption

em tempo de execução.

Edit Mostra uma caixa de inserção ou edição de texto na qual o usuário pode introduzir e

modificar uma única linha de texto.

Memo Mostra uma área de edição de texto na qual o usuário pode introduzir e modificar

múltiplas linhas de texto.

Button Cria um botão que o usuário pode pressionar para disparar eventos e ações.

CheckBox

Apresenta uma opção binária (sim/não ou verdadeiro/falso) de forma que quando se

seleciona este controle se alterna uma propriedade entre ambos valores. Este

controle pode ser usado para criar um grupo de controles que implementam seleções

que não são mutuamente exclusivas (diferente dos objetos RadioButton).

RadioButton

Apresenta uma opção binária (sim/não ou verdadeiro/falso) de forma que quando se

seleciona este controle se alterna uma propriedade entre ambos valores. Este

controle pode ser usado para criar um grupo que represente seleções mutuamente

exclusivas.

ListBox Mostra uma lista de elementos de seleção que está acompanhada de uma barra de

deslocamento.

ComboBox

Mostra uma lista de elementos de seleção. É um controle que combina os aspectos

dos componentes ListBox e Edit. O usuário pode introduzir dados na área de edição

ou selecionar uma das existentes na área da lista.

ScrollBar

Proporciona uma forma prática e cômoda de modificar a área visível de um quadro ou

de uma lista. Também pode ser usada para deslocar-se em uma faixa ampla de

valores por incrementos prefixados.

Page 3: 03-Componentes-C++BuilderV10

E N G E N H A R I A D E P R O C E S S A M E N T O D I G I T A L I I

65

GroupBox É um elemento de agrupamento para opções relacionadas de um quadro.

RadioGroup É um elemento de agrupamento que cria um grupo de componentes RadioButton em

um quadro.

Panel

É um elemento de agrupamento que pode conter outros objetos componentes. Se usa

para criar barras de ferramenta e barras de status. Os componentes contidos estão

associados ao painel.

ActionList Cria grupos de ações que centralizam as respostas da aplicação ante as ações do

usuário.

33..11..22.. AAddddiittiioonnaall Os componentes desta página são controles especializados próprios do

C++ Builder.

Figura 3-3 - Objetos da aba Additional.

BitBtn Cria um botão que pode conter um gráfico no formato bitmap.

SpeedButton

Cria um botão que pode conter um gráfico bitmap porém não contém texto. Estes

botões se agrupam normalmente dentro de um painel para criar uma barra de

ferramentas.

MaskEdit

Permite introduzir e editar dados como no componente Edit, permitindo também a

possibilidade de especificar formatos particulares tais como códigos de CEP, número

telefônicos, datas e outros tipos de máscaras.

StringGrid Cria uma grade que pode ser usada para mostrar dados em linhas e colunas

(tabelas).

DrawGrid Cria uma grade que pode ser usada para mostrar dados em linhas e colunas

arbitrárias.

Image Mostra um desenho em bitmap.

Shape Desenha formas geométricas tais como: elipses, círculos, retângulos e quadrados.

Bevel Cria linhas ou quadros com aparência de relevo.

ScrollBox É um elemento de agrupamento com barras de scroll (deslocamento).

Page 4: 03-Componentes-C++BuilderV10

L U I S F E R N A N D O E S P I N O S A C O C I A N

66

CheckListBox

Mostra uma lista de elementos de seleção acompanhada de uma barra de scroll. É

parecido ao componente ListBox, porém cada elemento da lista tem associado um

CheckBox.

Splitter

Adiciona um divisor a um quadro entre dois componentes alinhados e que permite

ao usuário redimensionar os controles em tempo de execução clicando e arrastando

a linha da divisão.

StaticText

É um componente de texto não parecido ao Label porém com o próprio gerenciador

de janela podendo ser associado a uma propriedade de um objeto ActiveX por

exemplo.

ControlBar É um gerenciador para auxiliar as barras ferramentas, usado para para mover e

redimensionar.

Chart

É um objeto para construir e visualizar gráficos. Bastante usado nas aplicações de

engenharia. Para criar as suas séries de gráficos deve se clicar duas vezes encima

do componente para acessar o configurador.

33..11..33.. WWiinn3322 Esta página inclui os componentes mais comuns nas aplicações pra 32

bits.

Figura 3-4 - Objetos da aba Win32.

TabControl É um divisor de páginas mutuamente exclusivas acessíveis por abas.

PageControl

Se usa para construir quadros de diálogo com páginas múltiplas dentro da mesma

janela.

ImageList

É uma lista de imagens do mesmo tamanho acessíveis mediante um índice. Se

utiliza para gerenciar de forma eficiente grandes quantidades de imagens ou

bitmaps. Para criar uma lista de imagens basta adicionar um componente ao

formulário e clicar duas vezes nele para acessar o editor de listas de imagens.

RichEdit

É uma especialização do componente Memo. Proporciona a possibilidade de

modificar as propriedades tais como fontes de letra (tipo, tamanho, cor, estilo,

etc.) e o formato do parágrafo (alinhamento, tabulação, endentação, numeração,

etc.). Permite marcar e arrastar o texto além de copiar e colar.

TrackBar

Consiste em uma barra que mostra uma faixa e um indicador que mostra o valor

atual de uma variável permitindo a sua modificação.

Page 5: 03-Componentes-C++BuilderV10

E N G E N H A R I A D E P R O C E S S A M E N T O D I G I T A L I I

67

ProgressBar

Consiste em uma barra retangular que vai sendo pintada de esquerda à direita. É

usada para mostrar a progressão de alguma tarefa demorada.

UpDown

São botões usados para permitir ao usuário de incrementar ou decrementar um

certo valor.

HotKey

Atribui uma combinação de teclas para qualquer componente. Pode ser usada

para criar teclas de atalho.

Animate

Abre um espaço para mostrar arquivos *.avi (Áudio Vídeo Interleaved) ou uma

série de bitmaps colocados em seqüência para mostrar na forma de filme.

DateTimePicker

Mostra uma lista de seleção que acompanhada de uma barra de scroll para

selecionar datas. A data pode ser selecionada no calendário, usando a barra de

scroll ou escrevendo diretamente.

MonthCalendar Mostra um calendário que representa um mês.

TreeView Mostra um conjunto de objetos estruturados de forma hierárquica.

ListView Permite visualizar uma lista distribuídos num espaço.

HeaderControl

Mostra um cabeçalho sobre colunas de texto ou números. Este controle pode

subdividir-se em várias partes para proporcionar cabeçalhos para múltiplas

colunas.

StatusBar

É uma área para indicar o estado de ações ou textos de descrição mais amplos

usualmente colocados na parte inferior das janelas.

ToolBar

Gerencia os botões rápidos e outros controles organizando-os de forma adequado

e ajustando a sua posição e tamanho.

CoolBar

Mostra uma coleção de controles “Coolband” dentro de bandas que se podem

mover e redimensionar.

PageScroller

Contém objetos dentro da área de cliente que podem ser deslocados sem usar

uma barra de scroll.

33..11..44.. SSyysstteemm Esta página inclui controles especializados.

Figura 3-5 - Objetos da aba System.

Page 6: 03-Componentes-C++BuilderV10

L U I S F E R N A N D O E S P I N O S A C O C I A N

68

Timer

É um componente não-visual que atua como temporizador. Se usa para executar

uma série de instruções (mediante o gerenciador de evento OnTimer()) que

devem ser executados a cada intervalo de tempo especificado na propriedade

Interval.

PaintBox

Especifica uma área retangular sobre um quadro que delimita uma região na qual

pode se desenhar dentro da aplicação.

MediaPlayer

Mostra uma área com botões similares aos reprodutores de áudio e vídeo, para

reproduzir vídeo e som.

OleContainer

Cria uma área cliente OLE (Object Linking and Embedding) em um quadro. Para

definir o programa deve se clicar duas vezes no objeto.

DdeClientConv

Estabelece uma conexão cliente a uma aplicação servidora DDE (Dynamic Data

Exchange).

DdeClientItem

Especifica os dados do cliente DDE (Dynamic Data Exchange) que são transferidos

em um diálogo DDE.

DdeServerConv

Estabelece uma conexão servidora a uma aplicação DDE (Dynamic Data

Exchange).

DdeServerItem

Especifica os dados do servidor DDE (Dynamic Data Exchange) que se transferem

em um diálogo DDE.

33..11..55.. PPáággiinnaa DDaattaa AAcccceessss Esta página inclui componentes especializados para acesso a bases de

dados.

Figura 3-6 - Objetos da aba Data Access.

DataSource Atua como um conduto entre um componente de conjunto de dados tais como o

TTable e os componentes de manipulação tais como TDBGrid.

Table

Recupera dados de uma tabela física de banco de dados através do BDE (Borland

Database Engine) e os entrega aos componentes de manipulação através de um

componente DataSource. Também funciona no caminho inverso.

Query

Usa declarações SQL para recuperar dados de uma tabela de banco de dados via BDE

e os envia através de um componente DataSource. Também funciona no caminho

inverso.

StoredProc Permite a aplicação de acessar procedimentos de armazenamento do servidor. Envia

dados recebidos de um componente para uma base de dados via BDE.

Page 7: 03-Componentes-C++BuilderV10

E N G E N H A R I A D E P R O C E S S A M E N T O D I G I T A L I I

69

Database Estabelece uma conexão persistente com uma base de dados, especialmente no modo

remoto requerendo o uso de login e password.

Session

Fornece o controle global sobre um conjunto de componentes de base de dados. O

componente default TSession é automaticamente criado para cada aplicação de banco

de dados do C++ Builder.

BatchMove

Copia uma estrutura de tabela ou seus dados. Pode ser usado para mover tabelas

inteiras entre bancos de dados com diferentes formatos.

UpdateSQL Permite suporte de atualização com base de dados read-only.

33..11..66.. PPáággiinnaa DDaattaa CCoonnttrroollss Esta página inclui componentes especializados para gerenciar bases de

dados.

Figura 3-7 - Objetos da aba Data Controls.

DBGrid

Ferramenta que habilita a visualização e edição de dados de fora tabular

similar às planilhas de cálculo.

DBNavigator É um objeto que permite a navegação dentro da tabela de dados.

DBText

Objeto de texto usado para mostrar o valor de um campo do registro

corrente.

DBEdit Caixa de texto para mostrar ou editar o campo do registro corrente.

DBMemo Caixa Memo para mostrar ou editar textos no registro corrente.

DBImage

Caixa de imagens para mostrar, cortar, colar imagens de e para o registro

corrente.

DBListBox

Lista de caixas de texto para mostrar ou navegar entre listas de valores de

uma coluna em uma tabela.

DBComboBox

ComboBox para editar, mostrar ou navegar numa lista de valores de uma

coluna de uma tabela.

DBCheckBox ComboBox para mostrar ou editar uma variável booleana de um registro.

Page 8: 03-Componentes-C++BuilderV10

L U I S F E R N A N D O E S P I N O S A C O C I A N

70

DBRadioGroup Conjunto de RadioButtons para mostrar ou selecionar valores de uma coluna.

DBLookupListBox

É um objeto na forma de caixa de textos para visualizar vários conjuntos de

dados na forma ListBoxes.

DBLookupComboBox Serve para visualizar listas de itens na forma de ComboBoxes.

DBRichEdit

É um editor de múltiplas linhas para visualizar ou editar textos formatados

dentro de uma base de dados.

DBCtrlGrid Mostra vários campos em múltiplos registros na forma de uma grade tabular.

DBChart

Serve para visualizar dados armazenados em base de dados na forma de

gráficos.

33..11..77.. IInntteerrnneett ee FFaassttNNeett Os componentes de esta página oferecem diferentes protocolos de acesso à

Internet.

Figura 3-8 - Objetos da aba Internet.

Figura 3-9 - Objetos da aba FastNet.

ClientSocket Torna uma aplicação ou módulo de dados num cliente TCP/IP.

ServerSocket Torna uma aplicação ou módulo de dados num servidor TCP/IP.

CppWebBrowser

Permite criar aplicações personalizadas de web browsing ou adicionar

capacidade de visualizar documentos, download e outras ações da internet.

WebDispatcher

Converte um módulo de dados comum em um módulo Web e habilita a

aplicação Web Server a responder a requisições HTTP.

PageProducer

Converte um template HTML em uma cadeia de comandos HTML que

podem ser interpretados pela aplicação cliente tal como um Web browser.

Os comandos e tags HTML são substituídos por conteúdos personalizados

pelo evento OnHTMLTag.

Page 9: 03-Componentes-C++BuilderV10

E N G E N H A R I A D E P R O C E S S A M E N T O D I G I T A L I I

71

QueryTableProducer

Monta uma seqüência de comandos HTML para gerar uma visualização de

registros em forma tabular a partir de um objeto TQuery, que obtém os

seus parâmetros de uma mensagem de requisição HTTP.

DataSetTableProducer

Monta uma seqüência de comandos HTML para gerar uma visualização

tabular dos registros a partir de um objeto TDataSet. Isto permite à

aplicação de criar imagens do conjunto de dados para uma resposta HTTP.

DataSetPageProducer

Converte um template HTML em uma cadeia de comandos HTML que

podem ser interpretados pela aplicação cliente tal como um Web browser.

Os tags especiais HTML são substituídos por valores.

NMDayTime Recupera a data e horário de um servidor intranet ou internet.

NMMsg

Envia mensagens simples de texto em ASCII na internet ou intranet usando

o protocolo TCP/IP.

NMMsgServ Recebe mensagens enviadas com o componente TNMMsg.

NMEcho

Envia textos para um servidor eco da internet e ecoa novamente para a

aplicação.

NMFTP

Implementa o FTP (File Transfer Procol). É um controle ActiveX invisível que

fornece uma forma rápida de acesso para serviços de FTP para transferir

arquivos e dados entre uma máquina local e uma remota.

NMHTTP

É um controle ActiveX invisível que implementa o protocolo cliente HTTP

permitindo ao usuário capturar documentos HTTP diretamente sem

necessidade de browsing ou processamento de arquivos de imagem.

NMNNTP

É um controle ActiveX invisível que permite a aplicação de acessar os

servidores de notícias Networking News Transfer Protocol (NNTP). Ele

fornece capacidade de leitura de notícias e de postagem de mensagens.

NMStrm

Envia streams para um servidor de stream através da intranet ou da

internet.

NMStrmServ Recebe streams enviadas pelo componente TNMStrm.

NMPOP3

Controle ActiveX invisível que recupera e-mails de servidores UNIX e outros

que suportem o protocolo POP3.

NMSMTP

Controle ActiveX que permite o acesso a servidores de e-mail SMTP

permitindo postar e-mails.

NMTime

Recupera datas e horários de servidores de horário de acordo com a RFC

868.

NMUDP

Controle invisível WinSock Activex que fornece fácil acesso a serviços de

rede do tipo User Datagram Protocol (UDP). Implementa um WinSock para

Page 10: 03-Componentes-C++BuilderV10

L U I S F E R N A N D O E S P I N O S A C O C I A N

72

o servidor e para o cliente e representa um ponto de comunicação

utilizando os serviços UDP. Pode ser usado para ler e escrevers dados UDP.

NMURL

Decodifica dados URL em cadeias legíveis e codifica cadeias padronizadas

no formato URL.

NMUUProcessor Codifica e decodifica arquivos MIME (UUEncodes).

PowerSock

Serve como base para a criação de controles para tratar outros protocolos

ou para criar protocolos proprietários.

NMGeneralServer

Serve como classe base para desenvolver servidores internet multi-

threaded que suportem os padrões RFC.

NMFinger

Recupera informaçoes sobre um usuário a partir de um servidor finger

usando o protocolo Finger descrito na RFC 1288.

33..11..88.. QQRReeppoorrtt Esta aba inclui os componentes para preparar relatórios e resumos.

Podem ser incorporados cabeçalhos e rodapés, resumos, agrupamentos com

cabeçalhos e rodapés, etc. Esses relatórios podem provir de qualquer fonte de

dados: TTable, TQuery, listas, matrizes, arrays, etc. Pode se usar um visualizador

prévio para comprovar os resultados. Os cálculos podem ser feitos de forma

similar aos das planilhas eletrônicas. Caso esta aba não apareça na barra de

componentes, você pode adicionar usando a opção de menu Component + Install

Packages.

Figura 3-10 - Objetos da aba QReport.

QuickRep

É o formulário básico de relatório. É um componente visual que se adapta ao

tamanho do papel selecionado.

QRSubDetail Faz conexão de um relatório com um conjunto de dados.

QRStringsBand Permite colocar bandas contendo strings num relatório.

QRBand

Colcoa bandas em um componentes TQuickRep e permite ajustar a propriedade

Bandtype para selecionar o tipo de comportamento durante a geração do relatório.

Page 11: 03-Componentes-C++BuilderV10

E N G E N H A R I A D E P R O C E S S A M E N T O D I G I T A L I I

73

QRChildBand

Se houver bandas com componentes que devam ser incrementados e os outros

movidos para baixo pode se usar uma banda filha. É também bastante útil quando

houver bandas muito longas e múltiplas páginas.

QRGroup

Permite agrupar bandas e fornecer um controle para cabeçalhos, rodapés e

quebras de página.

QRLabel

Imprime textos estáticos e outros que não provenham de banco de dados. O texto

a ser impresso deve ser colocado na propriedade Caption. Pode se dividir o texto

em múltiplas linhas e páginas.

QRDBText

Versão de TQRLabel que imprime o valor de um campo da base de dados. Podem

ser impressos campos de cálculo e texto, incluindo strings, campos numéricos,

campos de data e memorandos. Os textos podem ser divididos em múltiplas linhas

e páginas. Pode se conectar o componente a um campo de dados setando as

propriedades DataSource e DataField.

QRExpr Imprime campos da base de dados, cálculos e textos estáticos.

QRSysData

Imprime as informações do sistema tais como título do relatório, número de

páginas e outros.

QRMemo

Imprime grande quantidade de texto que não provém de um campo da base de

dados. Ele pode ser texto estático ou este pode ser alterado durante a geração do

relatório. Pode se expandir verticalmente assim que for necessário e dividir em

múltiplas páginas

QRExprMemo Pemite gerar conteúds usando expressões do Quick Report.

QRRichText Permite adicionar Rich Text embutido no seu relatório.

QRDBRichText

Fornece uma forma de quebrar dados para o acesso dos campos DBRichText nos

relatórios.

QRShape Desenha formas simples tais como retângulos, círculos e linhas em um relatório.

QRImage

Mostra imagens em um relatório. Suporta todos os tipos de formatos de imagem

da classe TPicture.

QRDBImage

Imprime imagens armazenadas em campos binários (BLOB). Imprime todos os

formatos gráficos suportados pelo C++ Builder.

QRCompositeReport

Permite combinar mais de um relatório num relatório único.

QRPreview Permite efetuar um preview do relatório na tela antes da impressão.

Page 12: 03-Componentes-C++BuilderV10

L U I S F E R N A N D O E S P I N O S A C O C I A N

74

QRTextFilter Permite exportar os conteúdos do relatório em formato texto.

QRCSVFilter

Permite exporta os conteúdos do relatório em um arquivo de banco de dados

delimitado por vírgulas.

QRHTMLFilter Permite exportar os conteúdos do relatório em HTML.

QRChart Permite incluir um componente TChart dentro de um quadro Quick Report.

33..11..99.. DDiiaallooggss Esta página inclui as diferentes janelas de diálogo comuns às aplicações

Windows. Essas janelas de diálogo proporcionam uma interface consistente para

realizar operações com arquivos tais como abrir, salvar e imprimir.

Uma janela de diálogo é aberta ao chamar o método Execute(). Este

método retorna um valor lógico:

� true: se o usuário escolhe OK na janela de diálogo ou;

� false: se o usuário escolher Cancel ou sai da janela de diálogo sem salvar as

mudaças.

Figura 3-11 - Objetos da aba Dialogs.

Cada janela de diálogo (exceto a associada ao componete PrinterSetup)

possui a propriedade Options que afeta a sua aparência e o seu comportamento.

Uma janela de diálogo pode ser fechada pelo programa mediante o método

CloseDialog(). Para modificar a posição desses objetos em tempo de execução

deve se usar as propriedades Handle, Left, Top e Position.

OpenDialog Mostra uma janela de diálogo comum do Windows para selecionar e abrir

arquivos (não abre arquivos de por si).

SaveDialog Mostra uma janela de diálogo comum do Windows para selecionar e salvar

arquivos (não salva arquivos de por si).

OpenPictureDialog

Mostra uma janela de diálogo modal comum do Windows para selecionar e

abrir arquivos gráficos. É idêntica à janela associada a OpenDialog exceto que

contém uma região para a visualização prévia das imagens.

Page 13: 03-Componentes-C++BuilderV10

E N G E N H A R I A D E P R O C E S S A M E N T O D I G I T A L I I

75

SavePictureDialog

Mostra uma janela de diálogo modal comum do Windows para selecionar e

salvar arquivos gráficos. É idêntica à janela associada a SaveDialog exceto que

contém uma região para a visualização prévia das imagens.

FontDialog Mostra uma janela de diálogo modal comum do Windows para especificar a

família, tamanho e estilo da fonte de letra.

ColorDialog Mostra uma janela de diálogo modal comum do Windows para especificar a cor.

PrintDialog Mostra uma janela de diálogo modal comum do Windows para especificar as

informações de impressão.

PrinterSetupDialog Mostra uma janela de diálogo modal comum do Windows para configurar

impressoras.

FindDialog Mostra uma janela de diálogo modal comum do Windows para especificar as

strings a serem buscadas.

ReplaceDialog Mostra uma janela de diálogo modal comum do Windows para especificar a

string a ser buscada e substituída.

33..11..1100.. WWiinn 33..11 Esta página inclui os controles próprios do Windows 3.1 para permitir

compatibilidade com aplicações antigas. Muitos destes controles possuem

versões atualizadas nos componentes incluídos na aba Win32. Estes controles

não devem ser usados em novas aplicações.

Figura 3-12 - Objetos da aba Win 3.1.

33..11..1111.. SSaammpplleess Esta aba inclui exemplos de componentes personalizados que podem ser

construídos e incorporados na paleta de componentes. O código fonte está

disponível no diretório \examples\controls\source do diretório de instalação do

Builder C++.

Figura 3-13 - Objetos da aba Samples.

Page 14: 03-Componentes-C++BuilderV10

L U I S F E R N A N D O E S P I N O S A C O C I A N

76

33..11..1122.. AAccttiivveeXX Os componentes desta aba são objetos ActiveX. São aplicações completas e

portáveis criadas por outros programadores. Alguns deste componentes são

shareware (não freeware) e podem expirar após certo número de operações de

edição.

Figura 3-14 - Objetos da aba ActiveX.

Chartfx Permite criar gráficos altamente personalizados.

VSSpell Permite personalizar o verificador ortográfico.

F1Book

Permite desenhar uma planilha eletrônica totalmente funcional mesmo em tempo de design

(esta aplicação expira após um determinado número de edições).

VtChart Permite criar cartas em 3D (com duas variáveis).

Page 15: 03-Componentes-C++BuilderV10

E N G E N H A R I A D E P R O C E S S A M E N T O D I G I T A L I I

77

33..22.. PPrroopprriieeddaaddeess,, MMééttooddooss ee

GGeessttoorreess ddee EEvveennttooss Podemos destacar três aspectos de um determinado componente: as suas

propriedades, os métodos que ele pode executar e os eventos a que ele pode

responder.

33..22..11.. AAss PPrroopprriieeddaaddeess As propriedades são os elementos do componente que configuram o seu

aspecto e controlam o seu comportamento.

Muitos componentes possuem propriedades comuns. Por exemplo, todos

os componentes visuais têm as propriedades Top e Left que controlam a posição

do componente no quadro, tanto no modo de design quanto em tempo de

execução. Se estas propriedades forem alteradas durante o runtime o

componente irá se movimentar pelo quadro.

Temos visto como podem se estabelecer e modificar as propriedades dos

componentes durante o design usando o Inspetor de Objetos. As propriedades

têm geralmente um método de acesso associado que é executado ao alterar uma

propriedade em tempo de execução. Para modificar uma propriedade geralmente

é suficiente somente designar o novo valor. Ao realizar uma alteração, a VCL

invoca o método de acesso à propriedade. No caso especial da propriedade Left,

a VCL redesenhará todo o quadro novamente com a nova disposição do objeto.

Em resumo, as propriedades possuem dois especificadores de acesso que

se utilizam ao consultar ou modificar o valor das mesmas em tempo de execução.

Assim, existe um especificador de leitura e um especificador de escrita. Os

especificadores de acesso associam métodos de leitura ou de escrita (funções)

com as propriedades. Ao ler ou alterar o valor de uma propriedade se invocam,

automaticamente, as funções respectivas associadas.

Ao designar um novo valor a uma propriedade está se acessando o

especificador de escrita. A VCL comprova se existe um método de acesso

associado ao especificador de escrita e se houver, o executa. Se não houver,

simplesmente designa o novo valor à propriedade em questão.

Page 16: 03-Componentes-C++BuilderV10

L U I S F E R N A N D O E S P I N O S A C O C I A N

78

Ao consultar o valor de uma propriedade se acessa o especificador de

leitura. Na maioria dos casos o especificador de leitura não faz mais do que

devolver o valor da propriedade em questão.

EEXXEERRCCÍÍCCIIOO 44:: MMOODDIIFFIICCAAÇÇÃÃOO EE CCOONNSSUULLTTAA DDAASS PPRROOPPRRIIEEDDAADDEESS EEMM TTEEMMPPOO DDEE EEXXEECCUUÇÇÃÃOO

No exercício 3 observe que no quadro foi fixado o título

“Quadro de Teste” depois de modificar a propriedade Caption do

quadro. Para modificar o seu valor em tempo de execução, pode

se fazer por exemplo, que o título seja estabelecido no momento

da criação da janela. Para isso pode se escrever um gestor para o

evento OnCreate associado ao componente frmPrincipal (primeira

janela criada do programa exemplo). Lembrar que basta clicar

duas vezes no OnCreate (na aba Events do Inspetor de Objetos) do

componente frmPrincipal.

A continuação escreva o seguinte fragmento de código

dentro do método FormCreate:

//------------------------------------------------------------ void __fastcall TfrmPrincipal::FormCreate(TObject *Sender) { frmPrincipal->Caption = "Primeiro programa com C++ Builder"; } //------------------------------------------------------------

A seguir, modificar a cor do quadro (propriedade Color) se esta propriedade

estiver com o valor default: clBtnFace.

//------------------------------------------------------------ void __fastcall TfrmPrincipal::FormCreate(TObject *Sender) { frmPrincipal->Caption = "Primeiro programa com C++ Builder"; if (frmPrincipal->Color == clBtnFace) // Leitura frmPrincipal->Color = clWhite; // Escritura } //------------------------------------------------------------

Finalmente, estabelecer que sempre que o programa iniciar a execução o

objeto TCheckBox esteja desabilitado.

//------------------------------------------------------------ void __fastcall TfrmPrincipal::FormCreate(TObject *Sender) { frmPrincipal->Caption = "Primeiro programa com C++ Builder"; if (frmPrincipal->Color == clBtnFace) // Leitura frmPrincipal->Color = clWhite; // Escritura chkOp->Checked = false; // Escritura } //------------------------------------------------------------

Page 17: 03-Componentes-C++BuilderV10

E N G E N H A R I A D E P R O C E S S A M E N T O D I G I T A L I I

79

Executando o programa o resultado é mostrado na figura a seguir.

Figura 3-15 - Alteração das propriedades frmPrincipal->Color e chkOp->Checked em tempo de execução.

33..22..22.. OOss MMééttooddooss Os métodos são funções associadas ao componente que podem ser

invocadas para realizar distintas ações no mesmo. Por exemplo, todos os

componentes visuais possuem um método chamado Show() para mostrá-lo e

outro chamado Hide() para escondé-lo. No exemplo 3 foi invocado o método

Terminate() associado à aplicação que estava sendo executada (objeto

Application) para finalizar a mesma como resposta ao clique do botão. Na

linguagem C++ todos os métodos são membros de uma classe assim como as

propriedades.

EEXXEERRCCÍÍCCIIOO 55.. MMÉÉTTOODDOOSS AASSSSOOCCIIAADDOOSS AAOOSS CCOOMMPPOONNEENNTTEESS

A seguir modificaremos o evento OnCreate do componente frmPrincipal

para que não apareçam os objetos RadioButton.

//--------------------------------------------------------------------------- void __fastcall TfrmPrincipal::FormCreate(TObject *Sender) { frmPrincipal->Caption = "Primeiro programa com C++ Builder"; if (frmPrincipal->Color == clBtnFace) // Leitura frmPrincipal->Color = clWhite; // Escritura chkOp->Checked = false; // Escritura rdbtOp1->Hide(); // Hide() es el metodo que oculta el rdbtOp2->Hide(); // componente sobre el que se aplica. } //--------------------------------------------------------------------------

Executando o programa o resultado é mostrado na figura a seguir.

Page 18: 03-Componentes-C++BuilderV10

L U I S F E R N A N D O E S P I N O S A C O C I A N

80

Figura 3-16 - Uso do método Hide() nos objetos RadioButton.

33..22..33.. OOss EEvveennttooss Um evento é qualquer acontecimento que possa ocorrer num componente

(movimento do cursor ou clique de algum botão do mouse, aperto de tecla do

keyboard, deslocamento ou redimensionamento de uma janela, etc.) que podem

condicionar o comportamento e a aparência do programa. Cada componente

possui uma série de eventos que poderá receber ou gerar. Podem se tratar

diferencialmente os eventos desejados e deixar que os outros sejam tratados da

maneira padrão.

Quando se responde a um evento se diz que está se manipulando o evento.

Os eventos se manipulam mediante os gestores ou manipuladores de eventos.

A forma de tratar um evento associado a um componente no C++ Builder é

bastante simples: ativa-se o componente que vai responder ao evento e usando o

Inspetor de Eventos (aba Events) seleciona-se o evento ao qual o objeto deve

responder e, quando se ative o editor de código, escreve-se o código associado ao

gestor do evento.

O sistema operacional Windows® é um sofware orientado a eventos. Isto

significa que qualquer programa está condicionado pelos eventos que ocorrem no

entorno do Windows®. Um programa Windows está continuamente verificando o

sistema operacional pela ocorrência de qualquer evento e se algum ocorrer, o

Windows avisa ao programa pelo envio de uma mensagem. Um programa

Windows está ocioso quando passa a maior parte do tempo esperando que

ocorra algum evento.

EEXXEERRCCÍÍCCIIOO 66.. GGEESSTTOORREESS DDEE EEVVEENNTTOOSS A seguir construiremos um gestor para o evento associado

ao modificar o componente CheckBox de forma que quando estiver

Page 19: 03-Componentes-C++BuilderV10

E N G E N H A R I A D E P R O C E S S A M E N T O D I G I T A L I I

81

ativo (inicialmente desativado) faça aparecer os dois objetos RadioButton e ative

o botão OK. Quando o objeto CheckBox for desativado, os objetos RadioButton

serão ocultados novamente e será desativado o botão OK. Para isto escreveremos

o gestor associado ao evento OnClick do componente CheckBox:

//--------------------------------------------------------------------------- void __fastcall TfrmPrincipal::chkOpClick(TObject *Sender) { if (chkOp->Checked == true) { rdbtOp1->Show(); rdbtOp2->Show(); rdbtOp1->Checked = true; btOK->Enabled = true; } else { rdbtOp1->Hide(); rdbtOp2->Hide(); btOK->Enabled = false; } } //---------------------------------------------------------------------------

Ao executar o programa se produz o seguinte resultado:

Figura 3-17 - Uso de gestores de eventos.

A seguir coloque um objeto TLabel no quadro para aparecer comos segue.

Altere a propriedade Name do objeto para LblOut e a propriedade Visible para

false.

Figura 3-18

Page 20: 03-Componentes-C++BuilderV10

L U I S F E R N A N D O E S P I N O S A C O C I A N

82

Finalmente escreveremos o gestor do evento associado ao fazer clique no

botao OK, que está ativo (propriedade Enabled) somente quando o CheckBox

está selecionado e em conseqüência quando podem ser usados os RadioButton.

Observe o código a seguir e os resultados da execução.

//-------------------------------------------------------------------------- void __fastcall TfrmPrincipal::btOKClick(TObject *Sender) { LblOut->Visible = true; if(rdbtOp1->Checked) { if(edtOp->Text == ""){ LblOut->Caption = "Você escolheu a Opção 1"; } else{ LblOut->Caption = "Escolheu a opção 1 Sr. " + edtOp->Text; } } else{ if(edtOp->Text == ""){ LblOut->Caption = "Você escolheu a Opção 2"; } else{ LblOut->Caption = "Escolheu a opção 2 Sr. " + edtOp->Text; } } } //--------------------------------------------------------------------------

Figura 3-19

33..33.. OOss CCoommppoonneenntteess VViissuuaaiiss ee NNããoo--

vviissuuaaiiss Um componente é visual quando possui uma representação gráfica em

tempo de design e execução (botões, barras de rolagem, quadros de edição, etc.).

Page 21: 03-Componentes-C++BuilderV10

E N G E N H A R I A D E P R O C E S S A M E N T O D I G I T A L I I

83

Um componente sem interface gráfica é chamado de não-visual. Alguns

componentes não-visuais são os temporizadores (timers), quadros de mensagens

não visíveis durante o design e outros. Em geral, não há uma diferença entre

eles, exceto é claro, a visualização do componente.

Os componentes não-visuais podem ser facilmente colocados nos quadros

na mesma forma que os controles, embora a sua posição seja irrelevante.