Oracle Forms

Oracle Forms é um ambiente de desenvolvimento de aplicativos da Oracle Corporation que permite a criação de aplicativos de interface de usuário para o sistema de gerenciamento de banco de dados Oracle. Ele fornece uma plataforma para a criação de aplicativos de banco de dados com interface gráfica do usuário (GUI) e suporte a vários tipos de plataformas, incluindo Windows, Linux e Mac.

O Oracle Forms permite aos desenvolvedores criar aplicativos que podem se conectar ao banco de dados Oracle e realizar tarefas como inserir, atualizar e excluir dados, bem como executar consultas e processar transações. Ele também oferece uma série de ferramentas de desenvolvimento, como um editor de formulários visual, um editor de relatórios e um depurador, para ajudar os desenvolvedores a criar e testar os aplicativos rapidamente.

O Oracle Forms é amplamente utilizado em aplicativos de banco de dados empresariais, como sistemas de gerenciamento de recursos humanos, sistemas de gerenciamento de finanças e sistemas de gerenciamento de vendas e marketing. Ele também pode ser usado para criar aplicativos de desktop ou aplicativos web que se conectam ao banco de dados Oracle.

O objetivo principal do tutorial é dar uma visão geral do desenvolvimento utilizando o Oracle Forms Developer, com foco em exemplos práticos e tentando ser o mais didático possível. A medida do possível serão incluídos pequenos arquivos (fmb) com exemplos de utilização, servindo inclusive como repositório de soluções. 

Selecionando Multiplos Arquivos utilizando  WEBUTIL


O método Webutil_File.FILE_MULTI_SELECTION_DIALOG() é uma função da biblioteca Webutil que exibe uma caixa de diálogo para seleção de arquivos múltiplos. Você pode usá-lo em seu formulário Oracle Forms para permitir que o usuário selecione vários arquivos para upload.

Para usar o Webutil_File.FILE_MULTI_SELECTION_DIALOG(), siga os seguintes passos:

OBS : Webutil_File.FILE_LIST é um tipo do WEBUTIL que na verdade se comporta como uma tabela PL/SQL ( array ), que pode ser acessado utilizando procedimentos padrões. É possível contar quando elementos existem utilizando o COUNT e retornar o elemento utilizando a posição do elemento dentro da lista.

Exemplo:

DECLARE

v_files Webutil_File.FILE_LIST;  

BEGIN

--v_files := Webutil_File.FILE_MULTI_SELECTION_DIALOG();

--v_files := webutil_file.file_multi_selection_dialog ('c:\',NULL,'All Files|*.*|Gif Files|*.gif|JPEG Files|*.jpg|','Selecione os Arquivos');

v_files := webutil_file.file_multi_selection_dialog ('c:\',NULL,'CSV Files|*.csv','Selecione os Arquivos'); 

for i in 1..v_files.count loop

   :BL_TESTES_001.TI_LISTA := :BL_TESTES_001.TI_LISTA || v_files(i) ||chr(13)||chr(10);

end loop;

END;


Recuperar nome do forms que chamou form atual - Nome do form, nao do arquivo

DECLARE

  v_form_origem  varchar2(20);

BEGIN  

  v_form_origem := GET_APPLICATION_PROPERTY(CALLING_FORM);

END;

Incluir itens de Lista de Valores

Control+Shift+>

Excluir itens de Lista de Valores

Control+Shift+<

Controle Exibicao de Itens

-- Mostra / Esconde itens

set_item_property('NOMEITEM',visible,property_true); -- Mostra

set_item_property('NOMEITEM',visible,property_false); -- Esconde


-- Habilita / Desabilita itens

set_item_property('NOMEITEM',enabled,property_true); -- Habilita

set_item_property('NOMEITEM',enabled,property_false); -- Desabilita


Dica 1:

Não é possível esconder/desabilitar itens que estejam em foco, nesse caso , mudar foco para outro item via GO_ITEM quando possível


Dica 2:

Ao esconder e voltar a mostrar um item , o mesmo fica desabilitado, para corrigir, setar outras propriedades

set_item_property('NOMEITEM',visible,property_true); -- Mostra

set_item_property('NOMEITEM',enabled,property_true); -- Habilita

set_item_property('NOMEITEM',navigable,property_true); -- Navegavel


Controle Timers

-- Criando Timer. Pode ser criado em qualquer trecho de plsql. Triggers/Program Units

DECLARE 

  timer_id Timer; 

  tempo_timer NUMBER(5) := 5000; -- 5 segundos ( tempo em milisegundos )

BEGIN 

  timer_id := Find_Timer( 'NOMETIMER' ); 

  IF NOT Id_Null(timer_id) THEN 

     Delete_Timer(timer_id);

  END IF;

  timer_id := CREATE_TIMER('NOMETIMER', tempo_timer,REPEAT); 

END;


-- Trigger para tratar timer

WHEN-TIMER-EXPIRED

DECLARE

  expired_timer  CHAR(30);

BEGIN

  expired_timer := GET_APPLICATION_PROPERTY(TIMER_NAME);

  if rtrim(ltrim(upper(expired_timer))) = 'NOMETIMER' then

--

--

  end if;

END;


Sintaxe :

CREATE_TIMER(timer_name VARCHAR2, milliseconds NUMBER, iterate NUMBER);

timer_name : Nome do Timer

milliseconds :  Especifica a duração do Timer em milisegundos. 

Limites : 1 to 2147483648. Valores maiores que 2147483648 serão "arredondados" para 2147483648

Somente númros positivos

iterate : Especifica se o cronômetro deve repetir ou não após a expiração e usa as seguintes constantes como argumentos:

REPEAT : Indica que o timer deve repetir a cada expiração do tempo. Default. 

NO_REPEAT Indica que o timer somente irá disparar uma única vez quando da expiração do tempo.

Controle de abas


-- Exemplo WHEN-TAB-PAGE-CHANGED

DECLARE

  -- Recupera nome da aba ativa

  NM_ABA VARCHAR2(30) := GET_CANVAS_PROPERTY('NOMEDAPASTA',TOPMOST_TAB_PAGE);

BEGIN

  IF NM_ABA = 'NOMEABA1' THEN

---

---

  ELSIF NM_ABA = 'NOMEABA2' THEN

    ---

---

  END IF;

END;


-- Esconde / Mostra aba

SET_TAB_PAGE_PROPERTY('PASTAS.ABA',VISIBLE,PROPERTY_TRUE); -- Mostra Aba

SET_TAB_PAGE_PROPERTY('PASTAS.ABA',VISIBLE,PROPERTY_FALSE); -- Esconde Aba