03-Componentes-C++BuilderV10

Page 1

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


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.