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
3. Os Objetos Componentes 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.
63
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
3.1.1. Standard Esta aba contém os componentes mais comuns e habituais dos programas Windows®.
Figura 3-2 - Objetos da aba Standard. Cria uma barra de menu que atua como menu principal. Para adicionar as opções ao MainMenu
menu e aos submenus adicione este componente ao quadro. Para acessar a ferramenta de configuração de menus clicar duas vezes sobre o objeto. Cria menus de contexto que aparecem quando se clica com o botão direito do mouse.
PopupMenu
Para configurar o menu de contexto proceda clicando duas vezes sobre o componente. Mostra um texto que o usuário não poderá selecionar nem manipular. Se usa para
Label
mostrar textos de título, cabeçalhos e até resultados alterando a propriedade Caption em tempo de execução.
Edit
Memo
Button
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. Mostra uma área de edição de texto na qual o usuário pode introduzir e modificar múltiplas linhas de texto.
Cria um botão que o usuário pode pressionar para disparar eventos e ações.
Apresenta uma opção binária (sim/não ou verdadeiro/falso) de forma que quando se CheckBox
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). Apresenta uma opção binária (sim/não ou verdadeiro/falso) de forma que quando se
RadioButton
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. Mostra uma lista de elementos de seleção. É um controle que combina os aspectos
ComboBox
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. Proporciona uma forma prática e cômoda de modificar a área visível de um quadro ou
ScrollBar
de uma lista. Também pode ser usada para deslocar-se em uma faixa ampla de valores por incrementos prefixados.
64
E
N
G
E
N
H
A
R
I
GroupBox
RadioGroup
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
É um elemento de agrupamento para opções relacionadas de um quadro.
É um elemento de agrupamento que cria um grupo de componentes RadioButton em um quadro. É um elemento de agrupamento que pode conter outros objetos componentes. Se usa
Panel
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.
3.1.2. Additional 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.
Cria um botão que pode conter um gráfico bitmap porém não contém texto. Estes SpeedButton
botões se agrupam normalmente dentro de um painel para criar uma barra de ferramentas. Permite introduzir e editar dados como no componente Edit, permitindo também a
MaskEdit
possibilidade de especificar formatos particulares tais como códigos de CEP, número telefônicos, datas e outros tipos de máscaras.
StringGrid
DrawGrid
Cria uma grade que pode ser usada para mostrar dados em linhas e colunas (tabelas). 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).
65
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
Mostra uma lista de elementos de seleção acompanhada de uma barra de scroll. É CheckListBox
parecido ao componente ListBox, porém cada elemento da lista tem associado um CheckBox. Adiciona um divisor a um quadro entre dois componentes alinhados e que permite
Splitter
ao usuário redimensionar os controles em tempo de execução clicando e arrastando a linha da divisão. É um componente de texto não parecido ao Label porém com o próprio gerenciador
StaticText
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. É um objeto para construir e visualizar gráficos. Bastante usado nas aplicações de
Chart
engenharia. Para criar as suas séries de gráficos deve se clicar duas vezes encima do componente para acessar o configurador.
3.1.3. Win32 Esta página inclui os componentes mais comuns nas aplicações pra 32 bits.
Figura 3-4 - Objetos da aba Win32.
TabControl
PageControl
É um divisor de páginas mutuamente exclusivas acessíveis por abas.
Se usa para construir quadros de diálogo com páginas múltiplas dentro da mesma janela. É uma lista de imagens do mesmo tamanho acessíveis mediante um índice. Se
ImageList
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. É uma especialização do componente Memo. Proporciona a possibilidade de
RichEdit
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.
66
E
N
G
E
N
H
A
R
I
A
ProgressBar
UpDown
HotKey
Animate
D
E
P
R
O
C
E
S
S
A
M
E
N
T
O
D
I
G
I
T
A
L
I I
Consiste em uma barra retangular que vai sendo pintada de esquerda à direita. É usada para mostrar a progressão de alguma tarefa demorada. São botões usados para permitir ao usuário de incrementar ou decrementar um certo valor. Atribui uma combinação de teclas para qualquer componente. Pode ser usada para criar teclas de atalho. 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. Mostra uma lista de seleção que acompanhada de uma barra de scroll para
DateTimePicker
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.
Mostra um cabeçalho sobre colunas de texto ou números. Este controle pode HeaderControl
subdividir-se em várias partes para proporcionar cabeçalhos para múltiplas colunas.
StatusBar
ToolBar
CoolBar
PageScroller
É uma área para indicar o estado de ações ou textos de descrição mais amplos usualmente colocados na parte inferior das janelas. Gerencia os botões rápidos e outros controles organizando-os de forma adequado e ajustando a sua posição e tamanho. Mostra uma coleção de controles “Coolband” dentro de bandas que se podem mover e redimensionar. Contém objetos dentro da área de cliente que podem ser deslocados sem usar uma barra de scroll.
3.1.4. System Esta página inclui controles especializados.
Figura 3-5 - Objetos da aba System.
67
L
U
I
F
S
E
R
N
A
N
D
O
E
S
P
I
N
O
S
A
C
O
C
I
A
N
É 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
Timer
devem ser executados a cada intervalo de tempo especificado na propriedade Interval. Especifica uma área retangular sobre um quadro que delimita uma região na qual
PaintBox
pode se desenhar dentro da aplicação. Mostra uma área com botões similares aos reprodutores de áudio e vídeo, para
MediaPlayer
reproduzir vídeo e som. Cria uma área cliente OLE (Object Linking and Embedding) em um quadro. Para
OleContainer
definir o programa deve se clicar duas vezes no objeto.
DdeClientConv
DdeClientItem
DdeServerConv
DdeServerItem
Estabelece uma conexão cliente a uma aplicação servidora DDE (Dynamic Data Exchange). Especifica os dados do cliente DDE (Dynamic Data Exchange) que são transferidos em um diálogo DDE. Estabelece uma conexão servidora a uma aplicação DDE (Dynamic Data Exchange). Especifica os dados do servidor DDE (Dynamic Data Exchange) que se transferem em um diálogo DDE.
3.1.5. Página Data Access 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. Recupera dados de uma tabela física de banco de dados através do BDE (Borland
Table
Database Engine) e os entrega aos componentes de manipulação através de um componente DataSource. Também funciona no caminho inverso. Usa declarações SQL para recuperar dados de uma tabela de banco de dados via BDE
Query
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.
68
E
N
G
E
N
H
A
R
I
Database
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
Estabelece uma conexão persistente com uma base de dados, especialmente no modo remoto requerendo o uso de login e password. Fornece o controle global sobre um conjunto de componentes de base de dados. O
Session
componente default TSession é automaticamente criado para cada aplicação de banco de dados do C++ Builder.
BatchMove
UpdateSQL
Copia uma estrutura de tabela ou seus dados. Pode ser usado para mover tabelas inteiras entre bancos de dados com diferentes formatos.
Permite suporte de atualização com base de dados read-only.
3.1.6. Página Data Controls Esta página inclui componentes especializados para gerenciar bases de dados.
Figura 3-7 - Objetos da aba Data Controls.
DBGrid
DBNavigator
DBText
Ferramenta que habilita a visualização e edição de dados de fora tabular similar às planilhas de cálculo.
É um objeto que permite a navegação dentro da tabela de dados.
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
DBListBox
DBComboBox
DBCheckBox
Caixa de imagens para mostrar, cortar, colar imagens de e para o registro corrente. Lista de caixas de texto para mostrar ou navegar entre listas de valores de uma coluna em uma tabela. ComboBox para editar, mostrar ou navegar numa lista de valores de uma coluna de uma tabela.
ComboBox para mostrar ou editar uma variável booleana de um registro.
69
L
U
I
S
F
E
R
N
A
N
D
DBRadioGroup
DBLookupListBox
DBLookupComboBox
DBRichEdit
DBCtrlGrid
DBChart
O
E
S
P
I
N
O
S
A
C
O
C
I
A
N
Conjunto de RadioButtons para mostrar ou selecionar valores de uma coluna.
É um objeto na forma de caixa de textos para visualizar vários conjuntos de dados na forma ListBoxes.
Serve para visualizar listas de itens na forma de ComboBoxes.
É um editor de múltiplas linhas para visualizar ou editar textos formatados dentro de uma base de dados.
Mostra vários campos em múltiplos registros na forma de uma grade tabular.
Serve para visualizar dados armazenados em base de dados na forma de gráficos.
3.1.7. Internet e FastNet 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
WebDispatcher
Permite criar aplicações personalizadas de web browsing ou adicionar capacidade de visualizar documentos, download e outras ações da internet. 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. Converte um template HTML em uma cadeia de comandos HTML que
PageProducer
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.
70
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
Monta uma seqüência de comandos HTML para gerar uma visualização de QueryTableProducer
registros em forma tabular a partir de um objeto TQuery, que obtém os seus parâmetros de uma mensagem de requisição HTTP. Monta uma seqüência de comandos HTML para gerar uma visualização
DataSetTableProducer
tabular dos registros a partir de um objeto TDataSet. Isto permite à aplicação de criar imagens do conjunto de dados para uma resposta HTTP. Converte um template HTML em uma cadeia de comandos HTML que
DataSetPageProducer
podem ser interpretados pela aplicação cliente tal como um Web browser. Os tags especiais HTML são substituídos por valores.
NMDayTime
NMMsg
NMMsgServ
NMEcho
Recupera a data e horário de um servidor intranet ou internet.
Envia mensagens simples de texto em ASCII na internet ou intranet usando o protocolo TCP/IP.
Recebe mensagens enviadas com o componente TNMMsg.
Envia textos para um servidor eco da internet e ecoa novamente para a aplicação. Implementa o FTP (File Transfer Procol). É um controle ActiveX invisível que
NMFTP
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. É um controle ActiveX invisível que implementa o protocolo cliente HTTP
NMHTTP
permitindo ao usuário capturar documentos HTTP diretamente sem necessidade de browsing ou processamento de arquivos de imagem. É um controle ActiveX invisível que permite a aplicação de acessar os
NMNNTP
servidores de notícias Networking News Transfer Protocol (NNTP). Ele fornece capacidade de leitura de notícias e de postagem de mensagens.
NMStrm
NMStrmServ
NMPOP3
NMSMTP
NMTime
NMUDP
Envia streams para um servidor de stream através da intranet ou da internet.
Recebe streams enviadas pelo componente TNMStrm.
Controle ActiveX invisível que recupera e-mails de servidores UNIX e outros que suportem o protocolo POP3. Controle ActiveX que permite o acesso a servidores de e-mail SMTP permitindo postar e-mails. Recupera datas e horários de servidores de horário de acordo com a RFC 868. 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
71
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
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
NMUUProcessor
PowerSock
NMGeneralServer
NMFinger
Decodifica dados URL em cadeias legíveis e codifica cadeias padronizadas no formato URL.
Codifica e decodifica arquivos MIME (UUEncodes).
Serve como base para a criação de controles para tratar outros protocolos ou para criar protocolos proprietários. Serve como classe base para desenvolver servidores internet multithreaded que suportem os padrões RFC. Recupera informaçoes sobre um usuário a partir de um servidor finger usando o protocolo Finger descrito na RFC 1288.
3.1.8. QReport 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. É o formulário básico de relatório. É um componente visual que se adapta ao QuickRep
QRSubDetail
tamanho do papel selecionado.
Faz conexão de um relatório com um conjunto de dados.
Permite colocar bandas contendo strings num relatório. QRStringsBand Colcoa bandas em um componentes TQuickRep e permite ajustar a propriedade QRBand
Bandtype para selecionar o tipo de comportamento durante a geração do relatório.
72
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
Se houver bandas com componentes que devam ser incrementados e os outros QRChildBand
movidos para baixo pode se usar uma banda filha. É também bastante útil quando houver bandas muito longas e múltiplas páginas. Permite agrupar bandas e fornecer um controle para cabeçalhos, rodapés e
QRGroup
quebras de página. Imprime textos estáticos e outros que não provenham de banco de dados. O texto
QRLabel
a ser impresso deve ser colocado na propriedade Caption. Pode se dividir o texto em múltiplas linhas e páginas. 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,
QRDBText
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.
Imprime as informações do sistema tais como título do relatório, número de QRSysData
páginas e outros. 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
QRMemo
relatório. Pode se expandir verticalmente assim que for necessário e dividir em múltiplas páginas
QRExprMemo
QRRichText
Pemite gerar conteúds usando expressões do Quick Report.
Permite adicionar Rich Text embutido no seu relatório.
Fornece uma forma de quebrar dados para o acesso dos campos DBRichText nos QRDBRichText
QRShape
relatórios.
Desenha formas simples tais como retângulos, círculos e linhas em um relatório.
Mostra imagens em um relatório. Suporta todos os tipos de formatos de imagem QRImage
da classe TPicture. Imprime imagens armazenadas em campos binários (BLOB). Imprime todos os
QRDBImage
formatos gráficos suportados pelo C++ Builder.
Permite combinar mais de um relatório num relatório único. QRCompositeReport
QRPreview
Permite efetuar um preview do relatório na tela antes da impressão.
73
L
U
I
S
F
E
R
N
QRTextFilter
A
N
D
O
E
S
P
I
N
O
S
A
C
O
C
I
A
N
Permite exportar os conteúdos do relatório em formato texto.
Permite exporta os conteúdos do relatório em um arquivo de banco de dados QRCSVFilter
QRHTMLFilter
QRChart
delimitado por vírgulas.
Permite exportar os conteúdos do relatório em HTML.
Permite incluir um componente TChart dentro de um quadro Quick Report.
3.1.9. Dialogs 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
SaveDialog
OpenPictureDialog
Mostra uma janela de diálogo comum do Windows para selecionar e abrir arquivos (não abre arquivos de por si). Mostra uma janela de diálogo comum do Windows para selecionar e salvar arquivos (não salva arquivos de por si).
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.
74
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
Mostra uma janela de diálogo modal comum do Windows para selecionar e SavePictureDialog
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
ColorDialog
PrintDialog
PrinterSetupDialog
FindDialog
ReplaceDialog
Mostra uma janela de diálogo modal comum do Windows para especificar a família, tamanho e estilo da fonte de letra.
Mostra uma janela de diálogo modal comum do Windows para especificar a cor.
Mostra uma janela de diálogo modal comum do Windows para especificar as informações de impressão. Mostra uma janela de diálogo modal comum do Windows para configurar impressoras. Mostra uma janela de diálogo modal comum do Windows para especificar as strings a serem buscadas. Mostra uma janela de diálogo modal comum do Windows para especificar a string a ser buscada e substituída.
3.1.10. Win 3.1 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.
3.1.11. Samples 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.
75
L
U
I
F
S
E
R
N
A
N
D
O
E
S
P
I
N
O
S
A
C
O
C
I
A
N
3.1.12. ActiveX 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
VSSpell
Permite criar gráficos altamente personalizados.
Permite personalizar o verificador ortográfico.
Permite desenhar uma planilha eletrônica totalmente funcional mesmo em tempo de design F1Book
VtChart
(esta aplicação expira após um determinado número de edições).
Permite criar cartas em 3D (com duas variáveis).
76
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
3.2. Propriedades, Métodos e Gestores de Eventos 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.
3.2.1. As Propriedades 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.
77
L
U
I
S
F
E
R
N
A
N
D
O
E
S
P
I
N
O
S
C
A
O
C
I
A
N
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.
EXERCÍCIO 4: MODIFICAÇÃO E CONSULTA DAS PROPRIEDADES EM TEMPO DE EXECUÇÃO 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) frmPrincipal->Color = clWhite;
// Leitura // 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 } //------------------------------------------------------------
78
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
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.
3.2.2. Os Métodos 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.
EXERCÍCIO 5. MÉTODOS ASSOCIADOS AOS COMPONENTES 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.
79
L
U
I
S
F
E
R
N
A
N
D
O
E
S
P
I
N
O
S
C
A
O
C
I
A
N
Figura 3-16 - Uso do método Hide() nos objetos RadioButton.
3.2.3. Os Eventos 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.
EXERCÍCIO 6. GESTORES DE EVENTOS A seguir construiremos um gestor para o evento associado ao modificar o componente CheckBox de forma que quando estiver
80
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
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
81
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
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
3.3. Os Componentes Visuais e Nãovisuais 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.).
82
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
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.
83