Manual Forms 9i
Sumário
1. Oracle Forms................................................................................................................... 4
1.1 Tipos de Módulos ..................................................................................................... 4
1.2 Módulo Form ............................................................................................................ 4
1.3 Abrindo uma sessão Oracle Forms Builder .............................................................. 5
1.4 Criando um novo módulo form................................................................................. 6
1.5 Conectando-se ao banco ........................................................................................... 6
1.6 Trocando o nome de um módulo form ..................................................................... 7
2. Blocos ............................................................................................................................. 8
2.1 Criando um bloco...................................................................................................... 8
2.2 Especificando a criação de um bloco de controle..................................................... 8
2.3 Especificando a criação de um bloco baseado em uma origem de dados, usando a
Data Block Wizard.......................................................................................................... 9
2.4 Escolha do tipo de origem de dados ......................................................................... 9
2.5 Especificação da origem dos dados do tipo Table or View .................................... 10
2.6 Etapa final da criação do bloco de dados................................................................ 11
2.7 Usando o Layout Wizard para especificação dos itens do bloco............................ 12
2.8 Funcionalidades da criação de um bloco Base Table ............................................. 16
2.9 Removendo um bloco ............................................................................................. 17
2.10 Propriedades de um bloco..................................................................................... 17
2.11 Salvando um módulo form.................................................................................... 19
2.12 Executando um módulo form................................................................................ 19
3. Relacionamento entre Blocos ....................................................................................... 21
3.1 Criando um relacionamento entre dois Blocos ....................................................... 21
3.2 Construindo um módulo form mestre detalhe ........................................................ 21
3.3 Executando um módulo form mestre detalhe ......................................................... 22
3.4 Propriedades de relacionamento ............................................................................. 23
4. Frames........................................................................................................................... 24
5. Itens tipo Texto ............................................................................................................. 25
5.1 Criando um item tipo texto ..................................................................................... 25
5.2 Propriedades de um text item.................................................................................. 25
5.3 Alterando cores e fontes.......................................................................................... 26
5.4 Controlando os dados em um text item................................................................... 26
5.5 Formatando itens..................................................................................................... 26
5.6 Alterando o comportamento de navegação............................................................. 27
5.7 Alterando o relacionamento do item com o banco de dados .................................. 27
5.8 Adicionando funcionalidades a um item................................................................. 28
5.9 Adicionando funções de grupo e fórmulas a um item ............................................ 28
5.10 Labels associados do item..................................................................................... 29
6. LOVs e Editores............................................................................................................ 30
6.1 Conceito de Lista de Valores (LOV) ...................................................................... 30
6.2 Utilizando uma LOV em momento de execução.................................................... 30
6.3 Definindo uma Lista de Valores (LOV) ................................................................. 30
2
6.4 Criando uma Lista de Valores (LOV)..................................................................... 31
6.5 Propriedades da LOV.............................................................................................. 32
6.6 Mapeamento colunas da LOV para itens do bloco ................................................. 33
6.7 Associando uma LOV a um item tipo texto............................................................ 33
6.8 Conceito de Editor .................................................................................................. 34
6.9 Utilizando um Editor em momento de execução.................................................... 34
6.10 Associando um Editor a um item tipo texto.......................................................... 34
7. Outros tipos de Itens ..................................................................................................... 36
7.1 Check-box ............................................................................................................... 36
7.2 Passos para criar um item tipo Check-box no Layout Editor ................................. 36
7.3 Propriedades específicas de um item tipo Check-box ............................................ 36
7.4 Tratando valores nulos em itens tipo Check-box.................................................... 37
7.5 List .......................................................................................................................... 37
7.6 Criando um item tipo List ....................................................................................... 38
7.7 Propriedades específicas de um item tipo List........................................................ 38
7.8 Tratando valores nulos em itens tipo Lista ............................................................. 39
7.9 Radio Groups .......................................................................................................... 39
7.10 Propriedades específicas de um item tipo Radio Groups...................................... 40
7.11 Tratando valores nulos em um Radio Groups....................................................... 41
8. Itens tipo Não Input ...................................................................................................... 42
8.1 Itens tipo Display .................................................................................................... 42
8.2 Itens tipo Button...................................................................................................... 42
9. Windows, Canvas e Viewport....................................................................................... 44
9.1 Propriedades de uma Window ................................................................................ 44
9.2 Conceito de content canvas..................................................................................... 44
9.3 Stacked canvas ........................................................................................................ 45
9.4 Canvas Toobar ........................................................................................................ 45
9.5 Tab Canvas.............................................................................................................. 45
10. Triggers ....................................................................................................................... 46
10.1 Trigger Type ......................................................................................................... 46
11. Produzindo Triggers.................................................................................................... 47
11.1 Criando uma Trigger pelo Object Navigator ........................................................ 47
11.2 Suplementando validações.................................................................................... 47
13. Executando um Form no modo Debug ....................................................................... 49
14. Respondendo a interações com itens .......................................................................... 50
15. Triggers de Consulta ................................................................................................... 51
15.1 Trigger PRÉ-QUERY ........................................................................................... 51
15.2 Trigger POST-QUERY......................................................................................... 51
15.3 POST-QUERY e WHEN-VALIDATE-ITEM ..................................................... 52
16.Validações.................................................................................................................... 52
16.1 Utilizando LOVs para validações ......................................................................... 53
16.2 Utilizando Triggers para Validações .................................................................... 53
17. Aplicações Multi-Form............................................................................................... 54
17.1 Buit-in OPEN_FORM .......................................................................................... 54
17.2 Built-in CALL_FORM ......................................................................................... 54
3
1. Oracle Forms
Oracle Forms é o principal produto do Developer/2000. Com o Form Builder é
possível:
• Criar aplicações que utilizem diversos de dados, e principalmente o banco de
dados Oracle.
• Construir aplicações rapidamente utilizando os Wizards.
• Construir aplicações que são portáveis para vários ambientes.
• Facilmente copiar ou mover objetos e suas propriedades entre os componentes e
as aplicações.
• Usar tipos familiares e comuns de ferramentas Developer/2000, como editor de
layout, navegador objetos e ambiente PL/SQL de desenvolvimento.
1.1 Tipos de Módulos
Uma aplicação Oracle Forms pode ser composta de muitos módulos. Podem ser
criados quatro tipos de módulos:
Módulo
Descrição
Form
Apresenta os objetos e os dados que os usuários podem ver ou interagir.
Itens de dados em um Form são organizados em registros. Telas (janelas)
com blocos pertencentes ou não a tabelas do Banco de Dados que
proporcionam consultas, inserções, atualizações e deleção de linhas.
Menu
É composto por uma hierarquia de menus, cada qual com itens
selecionáveis. Interface hierárquica com o objetivo de prover um método
simples de emitir comandos para a aplicação.
Library
É o conjunto de subprogramas PL/SQL armazenados centralizados,
proporcionando reutilização.
Object Libraries É um conjunto de diferentes objetos armazenados pelo desenvolvedor para
assim referenciar ou copiá-los em um módulo forms. Biblioteca de objetos,
armazena objetos criados pelo desenvolvedor, para serem copiados ou
referenciados a módulos forms.
1.2 Módulo Form
Módulos Forms consistem no corpo principal de uma aplicação Oracle Forms.
Consistem de vários tipos de objetos e alguns desses objetos são visíveis ao usuário no
momento da execução. São eles:
• Itens - São objetos que apresentam valores de dados ao usuário ou, dependendo
do tipo de item, permitem ao operador interagir com o form. Itens estão
logicamente agrupados em blocos e visivelmente arranjados em canvas.
• Bloco - É o dono lógico de um item. Em um bloco os itens estão logicamente
relacionados. Eles podem, por exemplo, pertencer a colunas de uma mesma tabela
ou fazer parte de um mesmo ciclo de navegação.
4
•
Canvas - É a superfície onde os objetos visuais estão arranjados. Um módulo
Form pode ter vários canvas. Por default todos os canvas ficam na mesma janela,
mas podemos alocar janelas separadas para cada canvas.
Quando um form é executado, a navegação é feita através dos seus conteúdos por
meio de itens e blocos, não por canvas. Cada item tem uma posição seqüenciada dentro
do bloco, e cada bloco tem uma posição seqüenciada no form.
Para mover para o próximo item do bloco, o foco será mudado para o próximo
item da seqüência, esteja ele onde estiver. Se o próximo item está em um canvas
diferente, então este canvas será mostrado automaticamente.
Similarmente, podemos mover para o próximo bloco (ou bloco anterior). Se o
primeiro item neste bloco reside em um outro canvas, então aquele canvas é mostrado
automaticamente.
Se já sabes o item que vai ser movido, então a aplicação pode permitir que você
clique diretamente com o mouse. Também pode-se programar comandos dentro da
aplicação para permitir a navegação em outros modos.
1.3 Abrindo uma sessão Oracle Forms Builder
5
Para abrir uma sessão, siga os seguintes passos:
• Clicar Iniciar/Programas/Oracle9 Developer Suite/Forms Developer/Form
Builder
1.4 Criando um novo módulo form
1.5 Conectando-se ao banco
6
1.6 Trocando o nome de um módulo form
7
2. Blocos
Bloco é o dono lógico de um item, os armazena e contém propriedades que afetam
ao funcionamento dos quais. Um bloco pode ser de controle, sem ser baseado a uma
origem de dados ou ser Base Table, baseado a uma tabela, view ou array.
2.1 Criando um bloco
2.2 Especificando a criação de um bloco de controle
• Siga os passos para a criação de um bloco...
• Selecione a opção Build a new data block manually.
• Clique OK.
Um Control Block é um bloco que não está associado a nenhuma tabela base. Em
outras palavras a propriedade Base Data Block é NULL. Use um bloco de controle para
colocar botões que poderão ser colocados em um canvas ou em um toolbar.
8
2.3 Especificando a criação de um bloco baseado em uma origem de
dados, usando a Data Block Wizard
Tela de boas vindas do Data Block Wizard
Um diálogo avisando que o Wizard irá criar um bloco com especificações que
devem ser preenchidas nos próximos diálogos.
2.4 Escolha do tipo de origem de dados
•
•
Table or View: Tabela ou View do banco;
Store Procedure: Array em forma de record retornado de uma procedure
de banco.
9
2.5 Especificação da origem dos dados do tipo Table or View
1. Escolha o tipo da origem de dados do bloco, tabela ou view, caso não saiba,
pressione o botão Browser e escolha uma opção da lista;
2. Mova as colunas que deseja incluir no bloco, as arrastando ou através dos
botões;
3. Marque o CheckBox Enforce data inteagrity, para quando criar um bloco,
também criar triggers relativas as constraints de controle de banco;
4. Clique no botão Next para seguir para a próxima página do Assistente, ou
Finish para concluir as opções até aqui.
1
3
2
4
10
2.6 Etapa final da criação do bloco de dados
Na seguinte página do Assistente selecione uma das opções:
• Create the data block, then call the Layout Wizard: após criar o bloco
executa o Assistente de criação de Layout;
• Just create the data block: não executa o Assistente de Layout, deixando
para que o usuário faça mais tarde.
11
2.7 Usando o Layout Wizard para especificação dos itens do bloco
Seleção do canvas no qual será adicionado os itens do bloco.
Selecione em qual canvas deseja posicionar os dados do bloco:
• Selecione um Canvas já existente na lista;
• Ou (New Canvas: criará um novo canvas)
12
Seleção dos itens do bloco que serão incluídos no layout
Acerto dos pronpts e tamanho dos itens
Seleção do estilo dos prompts em relação aos itens
• Form: Label à esquerda do Item;
13
•
Tabular: Label à cima do item.
Especificação do scrollbar e argumentos de agrupamento de tela
• Frame Titler: Descrição do frame envolvendo os dados do bloco.
• Records Displayed: Número de records mostrados no bloco.
14
•
•
Distance Between Records: Espaçamento entre os records do Item.
Display Scrollbar Check Box: Se o bloco deve possuir uma barra de
rolagem dos registros.
Conclusão das especificações de geração de itens do bloco
E finalmente e mostrada uma página de conclusão bastando pressionar o botão
Finish.
15
2.8 Funcionalidades da criação de um bloco Base Table
Na criação de um bloco base table e forms arranja e modifica as propriedades de
canvas, frames e itens, automaticamente conforme as especificações da origem dos dados
e de Layout Wizard setadas ao criar o bloco, facilitando e agilizando ainda mais na
construção de uma aplicação.
Algumas tarefas efetuadas pelo forms ao criar o bloco:
• Cria um bloco e seta suas propriedades para as definições defoult da
tabela, view ou array.
• Cria um item tipo Text para cada coluna da tabela base marcada para
inclusão.
• Seta as propriedades para cada Text item de acordo com a especificação da
coluna correspondente.
• Cria um prompt tipo label para cada item, o default é o nome da coluna.
• Arranja os itens da tabela base no frame específico do canvas de acordo
com as propriedades de layout.
É possível programar um bloco não base table para acessar dados originados de
várias tabelas escrevendo triggers, mas um bloco base table pode ter semente uma tabela
base.
Para a tabela base, o Oracle Forms automaticamente:
16
• Cria itens em um bloco para corresponder a colunas em uma tabela.
• Produz códigos em um form para empregar regras das constraints da
tabela.
• Gera SQL no momento de execução (SQL implícito) para inserir,
atualizar, apagar e pesquisar linhas na base table, baseada nas ações do
usuário.
No momento de execução pode ser usado chaves de função padrão, botões, ou
opções de menu para iniciar pesquisa, inserir, atualizar ou apagar dados na tabela base, e
as subseqüentes de transação.
2.9 Removendo um bloco
•
•
•
•
Selecione o bloco desejado no Object Navigator.
Clique no ícone Delete no Object Navigator.
Um alert box solicita a confirmação.
Clicar em Yes.
2.10 Propriedades de um bloco
Através das propriedades de um bloco pode-se controlar o comportamento e a
aparência dos blocos. Para acessar a paleta de propriedades, selecione o bloco no
navegador, clique com o botão direito sobre o mesmo e escolha a paleta de propriedades.
Segue a definição das principais propriedades do bloco:
General Properties
Descrição
Especifica o nome interno do objeto. Todo objeto deve ter um
nome válido que seja compatível com as convenções de
nomenclatura do Oracle. Aplica-se a todos os Objetos.
Subclass Information Durante a existência de uma aplicação, pode ser necessário
atualizar informação sobre a origem de um objeto de sub-classe.
Por exemplo, se o nome do objeto de origem mudou, Form Builder
estará incapacitado de localizar o objeto quando você compila um
módulo que se refira a ele. Similarmente, mover um módulo de
origem a partir do sistema de arquivos para o banco de dados,
invalidará referência a aquele módulo. Você pode atualizar a
informação sobre objetos de origem sub-classe, definindo a
Propriedade Subclass Informatiom.
A definição de um objeto sub-classe inclui informação sobre
objetos de origem no qual ele é baseado, incluindo o nome do
objeto de origem, o nome do módulo de origem e o local de
armazenamento.
Nota: Tomar cuidado quando modificar essa propriedade. Se
digitar o nome ou o local de origem do objeto incorretamente, as
propriedades herdadas do objeto irão se reverter aos valores padrão
Name
17
para o tipo de objeto.
Navigation
Navigation Style
Records Properties
Descrição
Determina como uma operação Next Item ou Previous Item, é
processada quando o foco está no último item navegável ou no
primeiro item navegável no bloco respectivamente. Aplica-se a
blocos.
Descrição
Current
Record Especifica o atributo visual nomeado usado quando um item é parte
Visual
Attribute do registro atual. Aplica-se a form, block e item.
Group
Number of Records Especifica o número mínimo de registros em buffer de memória
Buffered
durante uma pesquisa em um bloco.
Default = NULL; que indica que o mínimo valor permitido é o
valor definido para a propriedade Records Displayed + 3.
Number of Records Especifica o número máximo de registros que um bloco pode
Displayed
mostrar de uma vez. O padrão é 1. Definir o número máximo de
registros exibidos para mais de 1, cria um registro multi-bloco.
Especifica se todos os registros seguindo o critério de pesquisa,
Query All Records
deverão ser trazidos para o data block quando uma pesquisa é
executada. Aplica-se a blocos.
Database Properties
Descrição
Database Data Block Define se o bloco é baseado em tabela, procedure, transactional
trigger ou sub-query
Define se aplicações e usuários finais podem fazer pesquisas no
Query Allowed
bloco.
Query Data Source Especifica o nome da origem de dados para pesquisa no bloco. Essa
Name
propriedade vale quando o tipo é tabela, sub-query ou procedure.
WHERE
clause As propriedades padrão WHERE Clause e ORDER BY Clause
ORDER BY clause
especificam cláusulas standard SQL clauses para o comando
padrão SELECT associado a um data block. Essas cláusulas são
automaticamente incorporadas ao comando Select que o Form
Builder constrói e emite sempre que o operador da aplicação
executa uma pesquisa no bloco.
Define se registros podem ser inseridos no bloco.
Insert Allowed
Update Allowed
Define se registros podem ser atualizados no bloco.
Delete Allowed
Especifica se registros podem ser apagados do bloco.
18
Scroll Bar
Properties
Show Scroll Bar
Descrição
Scroll Bar Canvas
Define se deve ser criada uma scroll bar para o bloco que está
sendo criado.
Canvas no qual a Scroll Bar deve ser exibida.
Scroll Bar Tab Page
Tab Canvas onde a scroll bar aparece.
2.11 Salvando um módulo form
Duas formas para salvar um módulo:
• Selecionando File -> Save As ou
• Clicando no ícone Save
As duas opções causam o aparecimento do diálogo File para o salvamento inicial.
Então deve entrar com o nome do arquivo e clicar em OK.
2.12 Executando um módulo form
Pode-se executar um módulo sem sair do Form Builder:
• Selecionando Program -> Run Form <CTRL + R> ou
• Clicando no ícone Run.
19
Quando você termina a sua sessão Runform, retorna ao Oracle Forms Buider.
20
3. Relacionamento entre Blocos
Relacionamento é uma relação entre dois blocos através de uma chave primária e
uma chave estrangeira das tabelas nas quais os blocos estão baseados.
Para suportar relacionamentos entre blocos e suas tabelas bases, pode ser definido
um bloco com detalhe (detail) do outro. Isso permite usar valores de chave primária e
chave estrangeira para conectar os blocos e sincronizar os dados que eles mostram.
O bloco Mestre é aquele baseado na tabela que possui a chave primária e o bloco
detalhe é aquele baseado na tabela que possui a chave estrangeira.
• O relacionamento Mestre Detalhe equivale a um relacionamento 1:M no
diagrama Entidade Relacionamento.
• Um bloco detalhe pode ser um bloco mestre em relação a outro bloco.
• Um bloco mestre pode ter mais de um bloco detalhe.
3.1 Criando um relacionamento entre dois Blocos
O Oracle Forms Application consiste em mais de um bloco. Isso pode ser para:
• Separar o ciclo de navegação de um grupo de itens do outro.
• Mapear cada bloco em uma tabela de banco de dados diferente (você pode
ter uma tabela base por bloco).
• Produzir um form master-detail, com um master block e blocos de detalhe
correspondente que são relacionados com o master.
Existem duas formas de criar relacionamentos:
- Implícita: quando você cria um módulo form com blocos associados
Mestre Detalhe o objeto tipo Relação (Relation) é criado
implicitamente.
- Explicita: se a relação não é estabelecida na criação dos blocos você
pode criar a relação posteriormente.
Alguns pontos a serem considerados quando agrupa-se blocos em uma aplicação:
Blocos no mesmo Módulo Form
Blocos em diferentes Módulos Forms
Podem ser diretamente conectados em
um relacionamento Máster-Detail
Navegação entre blocos manuseada por
funcionalidade padrão
Não pode ser conectado por relações
interbloco padrão
Navegação entre blocos de diferentes
forms são programadas pelo designer
3.2 Construindo um módulo form mestre detalhe
•
•
Criar o bloco mestre normalmente.
Criar o bloco detalhe setando as opções de relacionamento:
o Clique no botão Create Relationship;
21
o Ao mostrar lista de blocos selecione o bloco mestre;
o Se necessário corrija a condição de join.
3.3 Executando um módulo form mestre detalhe
Características de execução
• Consultando o bloco mestre, automaticamente são consultados os registros
correspondentes no bloco detalhe.
• Inserindo um registro no bloco detalhe automaticamente, ele estará
associado ao registro mestre corrente.
• A tentativa de deleção de um registro mestre é impedida caso um registro
detalhe associado exista.
• As características de um relacionamento mestre detalhe podem ser
alteradas através das propriedades.
22
3.4 Propriedades de relacionamento
Ao alterar as propriedades de uma relação o comportamento das deleções e das
coordenações é afetado.
Segue as principais propriedades:
Master Deletes
Propriedade
Non Isolated
Cascading
Isolated
Uso
Previne a deleção do registro do bloco mestre quando registros
detalhes para esse mestre existem.
Deleta os registros detalhes em cascata quando o registro mestre é
deletado. Obs.: a mensagem de Commit mostra somente o número
de registros deletados do bloco mestre, embora os registros detalhe
também sejam deletados.
Deleta somente o registro mestre.
Coordenação de consultas
Propriedade
Uso
Força a coordenação dos blocos de maneira à sempre que o registro
mestre for trocado os correspondentes registros detalhes serão
apresentados.
Deferred with Auto Adia a consulta dos registros detalhes associados ao registro mestre
Query
de maneira que eles sejam consultados automaticamente no
momento em que o cursor se posicionar no bloco detalhe.
Deferred
winhout Adia a consulta dos registros detalhes associados ao registro mestre
Auto Query
de maneira que eles sejam consultados no momento em que o
cursor se posicionar no bloco detalhe e for executada uma consulta
no bloco detalhe.
Provent Masterless Garante que um bloco detalhe não pode ser consultado ou utilizado
Operations
para inserção de registros quando não existe um registro mestre.
Default
Join Condition
Propriedade
Condição de join
Uso
Condição de ligação entre blocos.
Obs.: utilize nomes de blocos e itens ao invés de nomes de tabelas e
colunas na expressão de condição
23
4. Frames
Frames é o dono lógico de um grupo de itens do bloco, no canvas, onde pode-se
referenciar os itens deste bloco diretamente pelo frame, podendo assim dimensioná-los, e
preenchê-los automaticamente na área do mesmo. Também é possível setar algumas
propriedades comuns nos itens do mesmo, pelo frame.
Frame
4.1 Propriedades de um frame
Propriedade
Descrição
Name
Nome do frame.
Update Layout
Forma de controle do frame com os itens englobados por ele:
Automatically: dimensiona e controla os itens automaticamente, ao
setar propriedades no frame, são repassadas aos itens e bloco;
Manually: o frame passa a não mais fazer efeito nos respectivos
itens e bloco, mas o Layout Wizard consegue alterá-lo;
24
Locked: o frame passa a não mais fazer efeito nos respectivos itens
e bloco, e o Layout Wizard não consegue alterá-lo.
Estilo de Layout:
Form: Label à esquerda do item;
Tabular: Label à cima do item.
Layout Style
5. Itens tipo Texto
Um item de texto ou text item é um objeto de interface que permite consultar,
inserir, atualizar e deletar dados. Um item de texto geralmente corresponde a uma coluna
na tabela de banco de dados.
O tipo de item determina as propriedades disponíveis na paleta de propriedades
que é usada para definir, alterar ou examinar as características dos itens.
5.1 Criando um item tipo texto
Pode-se criar um item do tipo texto de quatro formas:
• Convertendo um item existente em Item de texto.
• Usando a text item tool no editor de layout.
• Usando o ícone Create no Object Navigator.
• Criando um novo bloco Base Table , usando o wizard e selecionando a
opção para layout, os respectivos Text Itens serão criados implicitamente.
Para criar um item tipo Text, deves seguir os passos seguintes:
• Entre no Layout Editor. Selecione Tools/Layout Editor
• Clique no ícone Text Item do Toolbar no layout editor
• Clique no Canvas, e o Text Item deve aparecer.
• Dê um duplo clique no Text Item, e o Property Palette deve aparecer.
• Defina as propriedades conforme sua necessidade.
5.2 Propriedades de um text item
Propriedade
Item Type
Canvas
Visible
Visual Atribute Group
Number of Itens Displayed
Descrição
Define o tipo de item que você deseja criar
Determina em qual canvas o item deverá
ser mostrado
Determina se o item deve ou não ser
mostrado
Especifica o nome de um atributo visual
previamente definido
Define o número de ocorrências de um item
25
5.3 Alterando cores e fontes
Utilize a propriedade Visual Attribute Group para selecionar cores e fontes para o
item de texto. Um atributo visual é uma seleção de propriedades de display que você
pode aplicar a um objeto Oracle Forms. Há três diferentes tipos de atributos visuais:
• Default
• Custom
• Named
5.4 Controlando os dados em um text item
Use as seguintes propriedades de dados de um item de texto para controlar o
modo como os dados serão mostrados e inseridos:
Data Properties
Descrição
Synchronize with Item Especifica o nome de um item a partir do qual este item copia
seu valor. Esta propriedade significa que pode ter dois itens em
um bloco que simultaneamente representam o mesmo valor.
Data Type
Determina o tipo de dado Oracle permitido como entrada para
este item.
Maximum Length
Define o número máximo de caracteres permitidos para este
item. Geralmente corresponde a largura da coluna da tabela
base.
Required
Determina se o item é obrigatório.
Format Mask
Define o formato da máscara para o item.
Initial Value
Especifica o valor default para o item a cada novo registro.
Copy Value from Item Especifica o bloco e o item utilizado como fonte para o valor
deste item. Utilizado quando da existência de relações entre
blocos.
5.5 Formatando itens
A propriedade de formato de máscara permite especificar o formato no qual o
usuário vê o valor do item. Utilize o formato de sintaxe padrão de SQL para datas e
números, por exemplo DD/MM/YY e 99,999.99.
Para definir um valor default para cada item utilize uma das seguintes opções:
Tipo
Valor
Variável de sistema
Descrição e exemplo
Valor simples. Exemplo:340.
Exemplo de utilização de variáveis de sistema:
$$DATE$$ - data do sistema operacional no
formato DD-MON-YY
26
$$DATETIME$$ - data do sistema operacional no
formato DD-MON-YYYY hh:mi:[ss]
$$TIME$$ - hora do sistema operacional no
formato hh:mi:[ss]
$$DBDATE$$ - data do Banco de dados no formato
DD-MON-YY $$DBDATETIME$$ - data do
Banco de dados no formato DD-MON-YYYY
hh:mi:[ss]
$$DBTIME$$ - hora do Banco de dados no formato
hh:mi:[ss]
Exemplo de utilização de itens do módulo form:
:PEDIDOS.CODIGO
Exemplo de utilização de valores de seqüências:
:SEQUENCE.PEDIDOS_CODIGO_SQ.NEXTVAL
Item do Form
Sequence
5.6 Alterando o comportamento de navegação
Pose-se alterar a seqüência de navegação dos itens no Object Navigator. Como as
entradas de itens são mostradas na ordem de navegação basta selecionar o item e arrastálo para a posição desejada na seqüência de navegação.
Propriedades:
Navigation
Enabled
Keyboard
Navigable
Next
Navigation
Item
Previous
Navigation
Item
Descrição
Determina se é possível navegar e manipular o item com o mouse
Determina se é possível navegar para o item com as teclas de função
ou itens de menu
Especifica o nome do item que é definido como “previous navigation
item” a respeito do item atual. Por padrão esse é o item com a próxima
menor seqüência no form como indicado pela ordem dos itens no
objeto navegador. Entretanto pode definir essa propriedade para
redefinir o item anterior para finalidades de navegação.
Especifica o nome do item que é definido como “next navigation item”
a respeito do item atual. Por padrão esse é o item com a próxima maior
seqüência no form como indicado pela ordem dos itens no objeto
navegador. Entretanto pode definir essa propriedade para redefinir o
próximo item para finalidade de navegação.
5.7 Alterando o relacionamento do item com o banco de dados
Pode-se alterar a maneira como o item interage com a coluna correspondente na
tabela base do Banco de dados, setando as seguintes propriedades:
Database Properties
Descrição
27
Database Item
Column Name
Primary Key
Insert Allowed
Query Allowed
Update Only if NULL
Indica o item corresponde a uma tabela do banco de dados
Estabelece que um item corresponde a uma coluna na tabela
associada ao data block.
Indica que o item é um item de tabela base em um data block
e que corresponde a uma coluna de chave primária na tabela
base. Form Builder exige que os valores das chaves primárias
sejam únicos.
Determina se o item permite a inserção de valores. Esta
propriedade se aplica somente para novos registros.
Determina se o item permite a utilização de critérios de
consulta sobre ele.
Determina se o item permite atualização somente quando o
valor corrente é nulo (NULL). Esta propriedade se aplica
somente a registros já existentes.
5.8 Adicionando funcionalidades a um item
Adicione à funcionalidade padrão de um item de texto, introduzindo algumas das
características adicionais:
Funcional Properties
Descrição
Justification
Determina o critério de alinhamento do item
Multi-Line
Determina se o item pode armazenar mais de uma linha de
texto. Utilizado para colunas VARCHAR2 e LONG
Wrap Style
Determina se um item multi-line continua na próxima linha.
None: não continua
Character: continua normalmente
Word: continua sem truncar
Cancel Data
Determina se o valor do item digitado deve ser possível ao
usuário
Automatic Skip
Determina se o cursor automaticamente pula para o próximo
item ao completar o item
5.9 Adicionando funções de grupo e fórmulas a um item
É possível adicionar funções e fórmulas a um item, usando as seguinte
propriedades:
Calculation
Properties
Calcalation Mode
Descrição
Especifica o que será adicionado ao item:
28
Formula
Summary Function
Summarized Block
Summarized Item
Fórmula: Habilita uma fórmula ao item
Summary: Habilita uma função de grupo ao item
Especifica a fórmula do item
Relação das funções de grupo que será assimilada ao item:
Avg: média
Count: quantidade
Max: Valor máximo
Min: Valor mínimo
Stddev: Desvio padrão
Sum: Soma
Variance: Variância
Especifica o bloco no qual será executada a função de grupo
Especifica o item no qual será executada a função de grupo
Para sumarizar um item deve-se seguir o seguinte critério:
• O item sumarizado deve estar no bloco do sumarizados
• O item sumarizado deve estar em um bloco de controle, o qual deve possuir a
propriedade Single Record para Yes, e o bloco sumarizado deve estar com a
propriedade Query All Records como Yes
5.10 Labels associados do item
Pronpt Properties
Prompt
Prompt Justification
Descrição
Descrição do label do item
Estabelece que um item corresponde a uma coluna na tabela
associada ao data block.
29
6. LOVs e Editores
LOVs e Editores são objetos em um módulo form que cada um abre sua própria
janela quando ativados no momento de execução. Eles são definidos em nível form, o que
significa que podem ser usados para suportar itens em qualquer bloco do módulo form.
6.1 Conceito de Lista de Valores (LOV)
Uma LOV oferece ao operador do form, uma LOV dinâmica. O operador pode
reduzir as linhas exibidas na lista por simples técnicas de auto-redução ou por strings de
busca. Cada linha em uma LOV pode apresentar vários valores de campo, com
cabeçalhos de colunas acima. As LOVs podem ser:
• Dinâmicas – as entradas da lista de valores podem refletir os valores
disponíveis, exatamente no momento em que se solicitou a lista;
• Independentes – pode-se chamar uma mesma lista de vários itens, desde
que a mesma lista esteja associada a esses itens;
• Flexíveis – pode-se usar a mesma LOV para suportar vários itens, se
apropriando;
• Eficiente – pode-se definir LOVs que utilizem valores já carregados
anteriormente, evitando vários acessos ao Banco de Dados. Esta opção
somente deve ser utilizada quando os valores da lista são estáticos.
6.2 Utilizando uma LOV em momento de execução
•
•
•
•
Posicione o cursor no item que possui a lista de valores associada.
Pressione a tecla [List] ou selecione a opção Edit-> Display List do menu
ou clique no botão que aciona a lista de valores, se houver algum definido
para esta função
Escolha um dos valores oferecidos pela lista. Pode-se digitar caracteres
para auto-reduzir a lista ou entrar com um argumento de pesquisa no
campo Find
Clique em OK ou dê duplo clique na opção escolhida para recuperar o
valor da lista
6.3 Definindo uma Lista de Valores (LOV)
Existem três objetos envolvidos na criação de uma LOV:
• Record Group – objeto utilizado para armazenar o array de valores
representados pela lista. Pode ser criado antes ou fazer parte do processo
de criação da LOV.
30
• LOV – lista de valores propriamente dita. Apresenta os valores, a partir do
Record Group, que poderão ser selecionados e passados para os itens do
form.
• Text Itens – item tipo texto do form associado à lista de valores (LOV), a
partir do qual a lista de valores poderá ser chamada.
6.4 Criando uma Lista de Valores (LOV)
Selecione a entrada LOVs no Object Navigation e clique no ícone Create. A
janela de diálogo para a criação de um LOV deverá ser apresentada.
Elemento
Radio Gruop
Select (Button)
Query Text
Descrição
Indica a origem dos dados que comporão a lista de valores:
Existing Record Group – se o Record Group base para este
LOV já foi criado anteriormente.
V2-Style TABLE COLUMN Values – raramente utilizado,
esta opção existe para manter compatibilidade com
SQL*Form V2.
New Record Group based on the Query bellow –
normalmente a mais utilizada, será criado um Record Group
baseado no texto da Query definido para este LOV.
Botão utilizado para ver a lista de record Groups, no caso de
se optar por utilizar um Record Group já existente.
Área multi-line onde se entra com o comando SQL
(SELECT) para compor os valores do Record Group que será
criado para este LOV.
Utilize esta opção na criação de uma LOV baseada em um
novo Record Group associado a uma consulta (SELECT).
31
6.5 Propriedades da LOV
Após a criação da LOV é importante definir outras prioridades importantes.
Propriedade
Name
Title
Column
Mapping
Properties
Automatic Select
Automatic Display
Automatic Refresh
Automatic Skip
Descrição
Define um nome apropriado para a LOV
Define um título
Clicando no botão More é apresentada à janela Column
Mapping
Determina se a LOV deve fechar e retornar valores
automaticamente quando só existe uma entrada
Determina se a LOV deve ser chamada automaticamente
quando o cursor entrar no item associado ao LOV
Yes: o Record Group re-executa a consulta toda vez que a
LOV é chamada.
No: o Record executa a consultas somente na primeira vez
que a LOV é chamada
No retorno da LOV o cursor se posiciona automaticamente no
32
Automatic Position
Filter Before Display
próximo Item.
Tenta posicionar a LOV próximo ao item
Determina se será apresentado um diálogo que permite entrar
com um critério de pesquisa antes da LOV ser chamada. Este
critério é utilizado como restrição adicional na primeira
coluna da cláusula SELECT
6.6 Mapeamento colunas da LOV para itens do bloco
Pode-se montar a lista de valores e especificar que o valor de uma ou mais
colunas da LOV retornem em um item especificado no forms, setando as seguintes
propriedades:
Propriedade
Column Name
Return Item
Display Width
Column Title
Descrição
Coluna a ser mapeada
Define o valor a ser retornado, podem ser:
Bloco.item (item do form)
GLOBAL.nome_variável (variável global)
PARAMETER.nome_parametro (parâmetro do form)
<Em Branco> (nenhum valor é retornado)
Largura da coluna na janela LOV. O valor () determina que a
coluna fique invisível enquanto o valor fica disponível para
ser retornado.
Cabeçalho para a coluna na janela LOV.
6.7 Associando uma LOV a um item tipo texto
Após a criação de uma LOV, deve-se associá-la a um item, especificando o nome
da LOV nas propriedades do item.
Passos para associar uma LOV a um Item:
• Selecione o item no Object Navigator
• No Properties Palette do item selecione a propriedade LOV
• Escolha a LOV para este item a partir da lista apresentada
• Para apresentar a LOV em coordenadas diferentes determine:
• List X Position
• List Y Position
• Para não permitir valores digitados que não estejam na lista, deve-se setar
a propriedade Validate from List como Yes.
33
6.8 Conceito de Editor
Um Editor é um tipo de objeto utilizado para prover ao operador um editor
customizado para itens multi-line, ou seja, um editor permite que o operador veja
múltiplas linhas de um item de texto simultaneamente, search-and-replace (busca e
modifica) texto no item, e geralmente, modifica um valor de um item a partir desta janela
separada.
Todo item de texto tem o editor padrão disponível, mas é possível desenhar o seu
próprio editor para modificações para aqueles itens que tem requisitos especiais.
Prevalecendo o editor padrão para um item de texto pode-se:
• Prover uma janela de edição grande para itens com valores textuais
potencialmente grandes;
• Opcionalmente usar um sistema editor externo.
6.9 Utilizando um Editor em momento de execução
Para acionar o Editor:
• Posicione o cursor no item que possui o editor associado;
• Pressione a tecla [Edit] ou selecione a opção Edit ->Edit do menu ou
clique no botão que aciona o editor, se houver algum definido para esta
função;
• Edite o texto na janela do Editor;
• Clique em OK para salvar suas mudanças no item tipo texto.
6.10 Associando um Editor a um item tipo texto
Depois de criar um Editor pode associá-lo a um item especificando o nome do
Editor nas propriedades do item.
Passos para associar um Editor a um Item:
• Selecione o item no Object Navigator;
• Na properties Palette do item selecione a propriedade Editor;
• Escolha o Editor para este item a partir da Lista;
• Null – o item utiliza o editor default do Oracle Forms;
• SYSTEM_EDITOR – o item utiliza o editor do sistema operacional;
• <nome_editor> - o item utiliza um editor criado pelo Oracle Forms
Builder.
• Para apresentar o Editor em coordenadas diferentes determine:
• Editor X Position
• Editor Y Position
34
35
7. Outros tipos de Itens
7.1 Check-box
É um objeto de interface de dois estados que indica se um certo valor está ON ou
OFF. O estado display de uma Check Box é sempre ou Checked ou Unchecked (checado
ou não checado). Pode usar as Check Boxes para aumentar a interface com o usuário
convertendo itens existentes que tem dois possíveis estados.
7.2 Passos para criar um item tipo Check-box no Layout Editor
•
•
•
•
•
•
•
•
Acesse o Layout Editor;
Clique no ícone Check Box na tool bar do Layout Editor;
Clique no canvas na posição que deseja que o Check Box seja mostrado;
Dê um duplo clique no item tipo Check Box que você criou para acessar o
Property Pallete;
Entre com um valor default para o item;
Entre com um label para o Check Box;
Entre com os valores para os estados “Checked” e “Unchecked”;
Defina a propriedade Check Box Mapping of Other Values.
7.3 Propriedades específicas de um item tipo Check-box
36
Propriedade
Item Type
Label/Prompt
Value when Checked
Descrição
Determina o tipo de dado do item.
Define o label e o Prompt adjacente ao item Check Box.
Especifica o valor que está associado ao estado “checked” do
item. O valor deve ser compatível com a Data Type
especificado.
Value
when Especifica o valor que está associado ao estado “Unchecked”
Unchecked
do Item. O valor deve ser compatível com o Data Type
especificado.
Check Box Mapping of Determina como outros valores são processados em uma
Other Values
consulta, quando os registros forem diferentes dos valores
associados à “Checked” e “Unchecked”:
Not Allowed – são ignorados.
Checked – são associados a “Checked” e se forem salvos
convertidos para este valor.
Unchecked – são associados a “Unchecked” e se forem salvos
serão convertidos para este valor.
7.4 Tratando valores nulos em itens tipo Check-box
Se a coluna em que o item está baseado permite nulo, podem ser tratados:
• Setando a propriedade Check Box Mapping of Other Values;
• Setando o estado “Checked” ou “Unchecked”. Para representar nulo
(NULL), basta permitir que o valor não seja preenchido;
• Ignorando o Check Box no modo Enter Query.
7.5 List
Um List Item é um objeto de interface que exibe uma seleção de opções prédefinidas, cada uma correspondendo a um valor de dados específico. Usa-se o item da
lista em tempo de execução para selecionar um valor simples. Escolha da Lista ou
elementos são mutuamente exclusivos, um e somente um selecionado por vez.
Os três estilos de List Itens são:
Estilo
Pop List
T-List
Descrição
Item com um botão icônico conjugado do lado direito. Clique
no Pop List para ver a lista de elementos pré-definidos. Não é
permitida a digitação de valores.
Item com um scroll bar conjugado ao lado direito. Utilize o
37
Combo Box
scroll bar para ver a lista de elementos.
Item com um botão icônico ao seu lado direito, mas não
conjugado. Clique no botão para ver a lista de elementos.
Permite a digitação de valores.
7.6 Criando um item tipo List
Um List Item pode ser criado:
• Convertendo um item existente;
• Usando a ferramenta Check Box no editor de Layout;
• Usando o ícone Create no Object Navigator.
Para converter um item para List Item, basta seguir os passos:
• Acesse o Property Pallete para o item que você deseja converter;
• Altere o tipo de item para List Item;
• Selecione a propriedade Elements in List. Clique em More..., o diálogo
List Elements irá aparecer;
• Entre com o primeiro elemento que deseja que apareça na lista;
• Entre com o valor para o elemento corrente selecionado na lista de
elementos na propriedade List Item Value;
• Entre com um valor default para o Item;
• Defina a propriedade Mapping of Other Values.
Para criar um tipo List Item no Layout Editor, basta seguir os passos:
• Acesse o Layuot Editor;
• Clique no ícone List Item na tool bar do Layuot Editor;
• Clique no canvas na posição que você deseja que o List Item seja
mostrado;
• Dê um duplo clique no item tipo List que você criou, para acessar o
Property Pallete;
• Selecione a propriedade Elements in List. Clique em More..., o diálogo
List Elemensts irá aparecer;
• Entre com o primeiro elemento que deseja que apareça na lista;
• Na propriedade List Item Value, entre com o valor para o elemento
corrente;
• Entre com os outros elementos e valores repetindo os dois passos
anteriores.
• Entre com um valor default para o item;
• Defina a propriedade Mapping of Other Values.
7.7 Propriedades específicas de um item tipo List
38
Propriedade
Item Type
List Style
Descrição
Determina o tipo de dado do item.
Determina o estilo de interface da lista. Escolha entre PopList, T-List ou Combo-Box.
Mapping of Other Determina como os outros valores são processados. Escolha
Values
entre:
Deixar o valor em branco – ignora outros valores além dos
definidos na lista. No processamento de consultas, os
registros com valores diferentes dos associados à lista são
ignorados.
Associar com o um dos elementos da lista ou definir um valor
– no processamento de consultas, os registros com valores
diferentes dos associados à lista são associados ao elemento
da lista especificado. Se forem salvos os valores serão
convertidos para o valor associado.
Elements in List
Clique no botão More... para abrir o diálogo List Elements.
List Elements – especifica o label do elemento da lista.
List Item Value – especifica o valor associado ao elemento
corrente da lista de elementos.
7.8 Tratando valores nulos em itens tipo Lista
Se a coluna em que o item está baseado permite nulos pode-se tratá-los criando
explicitamente um elemento da lista associado ao valor nulo (NULL).
Se este não for criado, o Oracle Forms criará implicitamente um elemento para
representar os nulos.
• Pop List – mostra um elemento vazio.
• T-list – mostra a lista sem nenhum elemento vazio.
• Combo-Box – mostra um elemento vazio.
7.9 Radio Groups
Radio Groups são um conjunto de radio buttons. Cada radio button apresenta um
valor diferente. Os radio buttons pertencentes a um Radio Group são mutuamente
exclusivos.
Os benefícios de um Radio Goup são:
• Mostrar mais do que dois valores estáticos;
• Prover uma alternativa aos itens tipo List com dois ou três escolhas;
• Prover uma alternativa aos itens tipo Check Boxes diferentes de
SIM/NÃO, ON/OFF, YES/NO, etc.
39
7.10 Propriedades específicas de um item tipo Radio Groups
Miscellaneous
Descrição
Properties
Data Type
Determina o tipo de dado do item.
Mapping of Other Determina como os outros valores são processados. Escolha
Values
entre:
Deixar o valor em branco – ignora outros valores além dos
definidos na lista. No processamento de consultas, os
registros com valores diferentes dos associados aos Radio
Buttons são ignorados.
Associar com o nome de um Radio Button ou definir um
valor – no processamento de consultas, os registros com
valores diferentes dos das lista são associados ao Radio
Button especificado. Se forem salvos serão convertidos para o
valor associado ao elemento da lista..
40
7.11 Tratando valores nulos em um Radio Groups
Se a coluna em que o item está baseado permite valores nulos você pode tratá-los:
• Criando explicitamente um elemento da lista associado ao valor nulo
(null);
• Deixando a propriedade Ignore Mapping of Other Values não preenchida;
• Associando Ignore Mapping of Other Values com um dos Radio Buttons
pelo seu nome ou pelo valor especificado.
41
8. Itens tipo Não Input
8.1 Itens tipo Display
Display é um tipo de item similar ao item tipo Text com exceção de que não pode
ser editado ou navegado em momento de execução. Um item Display é utilizado somente
para leitura (consulta). Seu valor deve ser atribuído por programação.
Os itens tipo Display são usados para:
• Mostrar informações adicionais baseadas em dados não existentes na
tabela base do bloco;
• Mostrar valores derivados;
• Conservar valores em memória.
8.2 Itens tipo Button
Button é um objeto de interfaces que é pressionado para iniciar uma ação. Um
botão é geralmente apresentado como um retângulo com um label ou um ícone.
42
43
9. Windows, Canvas e Viewport
Window - É similar a uma moldura de um quadro. O gerenciador de janelas do
sistema operacional provê os controles para janelas possibilitando funcionalidades como
scroll, movimentação e redimensionamento.
Canvas – Similar a uma tela em branco sobre o qual um desenho será pintado. É a
área sobre a qual são colocados itens, boilerplates textos e boilerplates images.
Viewport – É a área do canvas que é visível em momento de execução. O método
utilizado para determinar o tamanho da view depende do tipo de canvas. Um canvas
sempre é mostrado na janela a qual ele está associado.
9.1 Propriedades de uma Window
Physical Property
Propriedade
Width
Heigth
GUI Hint Property
Propriedade
Close Allowed
Move Allowed
Minimize Allowed
Minimize Title
Functional Property
Propriedade
Primary Canvas
Window Style
Modal
Descrição
Determina a largura da janela.
Determina a altura da janela.
Descrição
Habilita o botão close da janela, mas, para executá-lo é
necessário.
Determina se o usuário pode mover a janela em momento de
execução.
Determina se o usuário pode minimizar a janela.
Especifica o título da janela quando minimizadas.
Descrição
Especifica o nome do canvas a ser mostrado na janela quando
esta é chamada por programa.
Determina o estilo da janela. Escolha entre:
Document – a janela deve estar sempre dentro da MDI parent
Window.
Dialog – a janela pode ser movimentada ou ser
redimensionada para fora da MDI parent Window.
Determina se a janela é do tipo Modal, caso contrário este
será do tipo Modeless.
9.2 Conceito de content canvas
44
Um Content Canvas é um canvas que é a base para uma janela, ocupando todo o
seu conteúdo. Geralmente é criado pelo menos um Content Canvas para cada janela em
sua aplicação.
Somente um content canvas pode ser mostrado em uma janela por vez, em
momento de execução.
9.3 Stacked canvas
Um Stacked Canvas é um canvas que não é base para uma janela, compartilhando
a janela com um content canvas e qualquer número de outros stacked canvas. Geralmente
é menos que a janela em que ele parece.
9.4 Canvas Toobar
Um Toobar é um tipo especial de Canvas que é utilizado para criar e possuir
botões e outros objetos GUI utilizados freqüentemente como uma barra de ferramentas.
9.5 Tab Canvas
Um Tab canvas é também um tipo especial de canvas que é utilizado para melhor
organizar e mostrar informações separadas por páginas. Como os Stacked canvas tipo
Tab é mostrado em cima de um canvas do tipo content
45
10. Triggers
Uma Trigger é uma unidade de programa que é executada (disparada) quando
ocorre um evento.
O Oracle Forms permite a construção de poderosas facilidades sem a necessidade
de escrever código.
Uma Trigger permite adicionar e modificar a funcionalidade de um módulo de
uma forma procedural de maneira que processos detalhados de aplicação possam ser
definidos.
Toda trigger está associada a um evento específico. O Oracle Forms possui uma
grande variedade de eventos que associam-se a uma trigger.
As Triggers são escritas em PL/SQL como nas demais ferramentas do
Developer/2000.
Componentes de um Trigger.
Componentes
Trigger Type
Trigger Code
Trigger Scope
Descrição
Tipo de Triggers: especifica o evento que fará com que a
trigger dispare.
Corpo de Trigger: bloco PL/SQL que define a ação a ser
executada pela trigger.
Escopo da Trgger: determina o escopo sobre o qual os
eventos serão detectados pela trigger. Nível em que a trigger
está definida.
10.1 Trigger Type
Caracteriza o evento que faz com que a trigger dispare
A primeira parte do nome da trigger (prefixo) segue um padrão que permite a
identificação do tipo de trigger.
Todas as built-in triggers são associadas a um evento e seus nomes sempre
contém um prefixo seguido de hífens “_”.
Os tipos são
• PRE- : A trigger é disparada quando ocorre um evento antes de uma ação.
• POST- : A trigger é disparada quando ocorre um evento depois de uma
ação.
• WHEN- : A trigger é disparado em edição ao processamento padrão,
permite aumentar a funcionalidade.
• ON- : A trigger é disparado em substituição ao processamento padrão,
permite aumentar a funcionalidade.
• KEY- : A trigger é dispara em substituição ao processamento padrão de
uma tecla de função, permite aumentar a funcionalidade.
46
11. Produzindo Triggers
11.1 Criando uma Trigger pelo Object Navigator
•
•
•
•
No Navigator, selecione a entrada Triggers embaixo do Form, do Bloco ou
do Item que a trigger deve estar associada. O objeto que você escolher
determinará o escopo da trigger e os tipos de triggers disponíveis.
Clique no ícone Create, ou selecione o menu Program -> SmartTriggers,
deverá mostrar uma lista das triggers apropriadas para o objeto corrente.
Escolha o tipo de Trigger de uma lista de valores. Para ajudar a selecionar
o tipo de Trigger também pode utilizar além da LOV o recurso de auto
redução teclando as letras iniciais dos nomes da trigger.
Entre com o código PL/SQL da trigger no Source Pane do Editor.
11.2 Suplementando validações
WHEN-VALIDATE-ITEM Trigger
Esta trigger é disparada quando o Oracle Forms valida um item que esta marcado
como “changed”. Isto acontece se o operador altera o item ou se outra trigger altera o
valor deste item.
A trigger é disparada imediatamente após as validações padrão do Oracle Forms
para o item alterado. Esta validação geralmente ocorre quando o cursor navega para fora
do item.
Usos da Trigger Whem-Validate-Item:
• Incrementar a validação de um item para validações complexas que não
podem ser implementadas pelas propriedades de um item.
• Popular outros itens como: itens não base table e display itens
Exemplo:
• Trigger WHEN-VALIDATE-ITEM para o item QUANTIDADE no bloco
ITENS do form PEDIDOS.
DECLARE
v_ quanto NUMBER;
BEGIN
SELECT SUM (quantidade_em_estoque)
INTO v_quant
FROM estoque
WHERE codigo_do_produto = : itens.codigo_do_produto;
IF : itens.quantidade > v_quant THEM
: itens.quantidade : = v_quant;
47
MENSAGE (‘Não possui estoque !’);
END IF;
END;
48
13. Executando um Form no modo Debug
Passo 1
Ligue o Debug Mode no Builder. Clique no ícone Debug Mode no Toolbar do
Navigator ou selecione Porgram -> Debug Mode do Menu. Outra alternativa é setar
Debug Mode em Runtime Options selecionando Tools -> Preferences -> Pasta Runtime.
Passo 2
Gere o módulo form. Por Default a opção Built Before Running está setada,
bastando executar o módulo. Clique em Run.
Passo 2.1
Quando inicia o form PL/SQL Debugger é mostrado.
Passo 2.2
Selecione a trigger que você deseja depurar e entre com as ações de Debug,
definindo os pontos de Break (duplo clique na linha desejada). Saia do Debugger
clicando no botão Close e continue a execução do form.
Passo 3
A cada break point atingido o debugger é invocado de modo que possa monitorar
e interagir com o form, executando linha a linha a trigger depurada.
49
14. Respondendo a interações com itens
Existem alguns tipos de GUI Itens que o operador pode interagir clicando com o
mouse ou pressionando uma tecla de função. A maioria destes itens possui uma
funcionalidade default. Por exemplo, clicando em um Radio Button o operador pode
alterar o valor para um item tipo Radio Group.
Você pode customizar funcionalidades, por exemplo:
• Executar testes e ações apropriadas tão logo o operador clique em um
Radio Button, Uma Lista ou um Check Box.
• Mostrar a foto de um produto quando o operador clica no quadro (item do
tipo Image).
• Definir a funcionalidade de um botão.
Trigger
Evento que dispara a trigger
WHEN-BUTTONSeleção de um botão , através de um simples clique com o
PRESSED
mouse ou por uma tecla de função.
WHEN-CHECKEDTroca do estado de um item tipo checkbox com o mouse
CHANGED
ou com uma tecla de função
WHEN-RADIOSeleção de um botão diferente ou do corrente em um
CHANGED
Radio Group
WHEN-IMAGE-PRESSED Um clique simples ou dublo clique em um item tipo
Image
WHEN-IMAGEExecução de um duplo clique em um item tipo Image.
ACTIVATED
WHEN-LIST-CHANGED
Troca o valor de um item tipo List
WHEN-LIST-ACTIVATED Execução de um duplo clique em um elemento de uma TList.
50
15. Triggers de Consulta
15.1 Trigger PRÉ-QUERY
• Deve ser definida em nível de bloco ou superior.
• É disparada para consultas irrestritas ou restritas.
Em uma trigger PRE-QUERY pode:
• Testar condições para a consulta e falhar o processo caso as condições não
sejam satisfatórias;
• Adicionar um critério para a consulta, atribuindo um valor para itens base
table.
Exemplo:
• A trigger PRE-QUERY abaixo, no bloco PEDIDOS, possui uma restrição
de modo que a consulta só pode ser realizada se os itens CODIGO,
DATA_DO_PEDIDO ou DATA_PREVISAO_DE_ENTREGA forem
fornecidos. Isto evita consultas muito grandes.
IF NAME_IN (‘PEDIDOS.CODIGO’)
| | TO_CHAR (:pedidos.dta_do_pedido)
| | TO_CHAR (:pedidos.data_previsao_da_entrega) IS NULL
THEN
MESSAGE (‘O número ou a data do pedido devem ser preenchidos’);
RAISE FORM_TRIGGER_FAILURE;
END IF;
15.2 Trigger POST-QUERY
• Deve ser definida em nível de bloco ou superior.
• É disparada para cada registro retornado para o bloco como resultado da
consulta.
Utilize a trigger POST-QUERY para:
• Popular itens não base table a partir dos registros retornados por uma
consulta;
• Calcular estatísticas.
Exemplo:
• A trigger POST-QUERY abaixo para o bloco “ORDER”, seleciona a
contagem do número de itens para o pedido consultando e mostra o
número em um item não base table :Lineitem_count.
51
SELECT COUNT (*)
INTO :pedidos.total_de_itens
FROM itens
WHERE codigo_do_pedido = :pedidos.código;
15.3 POST-QUERY e WHEN-VALIDATE-ITEM
Quando a trigger POST-QUERY popula um item é efetuada, causando, caso tenha
sido definida, o disparo da trigger WHEN-VALIDATE-ITEM.
Exemplos:
• A seguinte procedure deriva o nome do produto a partir do código do
produto ITENS.CODIGO_DO_PRODUTO. O nome é colocado no item
ITENS.DESCRIÇÃO.
PROCEDURE Busca_Descricao_Produto IS
BEGIN
SELECT nome
INTO :itens.descricao
FROM produtos
WHERE codigo = itens.codigo._do_produto
END;
• A procedure Busca_Descricao_Produto é chamada pela trigger WHENVALIDATE-ITEM para o item ITENS_CODIGO_DO_PRODUTO que
falha a validação se o produto não for encontrado.
Busca_Descricao_Produto;
EXCEPTION
WHEN NO_DATA_FOUND_THEN
MESSAGE(‘Código do produto inválido’);
RAISE FORM_TRIGGER_FAILURE;
• A procedure Busca_Descricao_Produto é também chamada pela trigger
POST-QUERY para o bloco ITENS. Se o produto não for encontrado a
trigger não gerará falha pois a exceção está sendo tratada na trigger e não
está sendo forçada a exceção FORM_TRIGGER_FAILURE, portanto
como a POST-QUERY não gerará falha o registro será mostrado (porém
sem o valor para a descrição do produto ITENS.DESCRICAO).
Busca_Descricao_Produto
EXCEPTION
WHEN NO_DATA_FOUND THEN
MESSAGE (‘Este produto foi excluído’);
16.Validações
52
16.1 Utilizando LOVs para validações
•
•
•
Quando associa uma LOV a um item através da propriedade LOV, pode
opcionalmente utilizar o conteúdo da LOV para validar os dados entrados
para o item.
Faça isto setando a propriedade LOV for Validation para Yes. No
momento de validação o Oracle Forms automaticamente utiliza o valor do
item como uma string de pesquisa não sensitiva ao case para o conteúdo
da LOV.
É com certeza que na LOV criada tenha a coluna de validação como a
primeira mostrada e com o Display Width maior que 0. Por motivos de
performance não utilizar LOV for Validation em LOV’s muito grandes.
16.2 Utilizando Triggers para Validações
WHEN-VALIDATE-ITEM
Esta trigger é disparada quando o Oracle Forms valida um item que está marcado
como “changed”. Isto acontece se o operador altera o item ou se outra trigger altera o
valor deste item.
A trigger é disparada imediatamente após as validações padrão do Oracle Forms
para o item alterado. Esta validação geralmente ocorre quando o cursor navega para fora
do item.
WHEN-VALIDATE-RECORD
Esta trigger é disparada após a validação padrão do registro quando o operador
navega para outro registro. Assim que o Oracle Forms checa se todos os itens
obrigatórios do registro estão com status válido a trigger é disparada permitindo checks
adicionais envolvendo mais do que um dos itens do registro.
53
17. Aplicações Multi-Form
17.1 Buit-in OPEN_FORM
•
•
Esta é uma built-in restrita e não pode ser chamada em modo Enter Query.
A Built-in OPEN_FORM permite iniciar outro form em uma janela
Modeless, de modo que o operador possa trabalhar em ambos os forms ao
mesmo tempo, alternando as janelas. Esta built-in é normalmente a
maneira mais utilizada em aplicações Multi-Form.
• Pode iniciar outro form através de OPEN_FORM sem passar o controle
para ele imediatamente. Você também tem a opção de iniciar uma outra
sessão para o novo Form.
Sintaxe:
OPEN_FORM (‘nome_do_form’, ACTIVATE_MODE
, SESSION_MODE
, DATA_MODE
, lista_de_parâmetros);
Argumentos:
Parâmetro
Descrição
Nome_do_form
Nome do arquivo executável do módulo (sem o sufixo .FMX). O
Path default do Oracle Forms é utilizado, a menos que forneça
como parte do string de caracteres.
ACTIVE_MODE
ACTIVATE: default, torna o módulo iniciado ativo.
NO_ACTIVATE: mantém o módulo chamador ativo, não passa o
controle para o outro módulo imediatamente.
SESSION_MODE
NO SESSION (default): não inicia nova sessão.
SESSION: inicia nova sessão.
DATA_MODE
NO_SHARE_LIBRARY_DATA: (default) não usa library do
chamador.
SHARE_LIBRARY_DATA: permite usar library do chamador
Lista_de_parâmentros Nome do parâmetro entre aspas ou ID interno de um parâmetro
de uma lista de parâmetros.
17.2 Built-in CALL_FORM
•
•
Esta é uma built-in irrestrita e pode ser chamada em modo Normal ou
Enter Query.
A Built-in CALL_FORM passa o controle imediatamente o form
chamador dica suspenso até que o form chamado seja fechado, neste
momento o controle é retornado para o form chamador.
54
•
A Built-in CALL_FORM emite um SAVEPOINT antes de passar o
controle para o form chamado, de modo a preservar os Locks no form
chamado causar um Rollback.
• CALL_FORM é útil para iniciar outro form quando a ação tem que ser
completada antes que o form chamador possa continuar.
• Opcionalmente o form chamado pode ser iniciado em modo Query Only.
Sintaxe:
CALL_FORM (‘nome_do_form’, DISPLAY
, SWITCH_MENU
, QUERY_MODE
, lista_de_parametros);
Argumentos:
Parâmetro
Descrição
Nome_do_form
Nome do arquivo executável do módulo (sem o sufixo .FMX). O
Path default do Oracle Forms é utilizado, a menos que forneça
como parte do string de caracteres.
DISPLAY
HIDE: default, define que o form chamador deve ser escondido
enquanto o form chamado estiver executando.
NO_HIDE: define que o form chamador não deve ser escondido
enquanto o form chamado estiver executando.
QUERY_MODE
NO_QUERY_ONLY: default.
QUERY_ONLY: define que o form chamado deve executar em
modo Query Only.
SWITCH_MENU
NO_REPLACE: o forms chamado deve usar o seu próprio menu.
DO_REPLACE: o forms chamado deve usar o menu corrente.
55
Download

Manual Forms 9i