Arquivo da tag: Oracle Forms 6i

Como abrir o navegador utilizando o Oracle Forms 6i?

Devido a limitação do Oracle Reports, muitos desenvolvedores Oracle Forms estão preferindo gerar o relatório em HTML e abrir uma janela do navegador para visualizar o arquivo gerado. Mas como abrir a janela do navegador, via programação, no Oracle Forms 6?

DECLARE
	
lint_referenciaNavegador PLS_INTEGER;

lstr_caminhoNavegador varchar2(200) := 'C:Arquivos de ProgramasInternet Exploreriexplore.exe';
lstr_URL  varchar2(200) := 'http://www.google.com.br/';

BEGIN

   lint_referenciaNavegador := DDE.App_begin(lstr_caminhoNavegador || ' ' || lstr_URL, DDE.App_Mode_Maximized);
  
END;

Como executar uma macro do Word, contendo parâmetros, através do Oracle Forms 6i

Devido a limitação do Oracle Reports, precisei gerar um documento diretamente no Word. Neste documento, criei uma macro que era responsável em escrever o documento e formatá-lo segundo o padrão definido por uma Lei específica. Para facilitar, isolei o código em uma função e bastava passar o título e o texto do corpo do documento que a macro fazia o resto.

O problema começou quando tive que abrir o documento e executar a macro através do Oracle Forms. Na Internet encontrei alguns exemplos ensinando como executar o Word, mas em lugar algum consegui encontrar como executar uma macro passando parâmetros. Após um dia tentando conseguir solucionar o problema, segue abaixo a solução:

No nosso exemplo, a macro se encontra no documento “C:modelo.doc” e sua execução deve ser feita invocando a assinatura abaixo:

Public Sub macroCriarDocumento (ByVal pstr_documentoTitulo as String, ByVal pstr_documentoCorpo as String)

Abaixo segue o código do Oracle Forms 6i, que é responsável em abrir o documento “C:modelo.doc e executar a macro “macroCriarDocumento” e seus parâmetros:

PROCEDURE gerarDocumentoDOC (pstr_documentoEndereco IN VARCHAR2, pstr_documentoTitulo VARCHAR2, pstr_documentoCorpo IN VARCHAR2) IS

	lobj_wordAplicativo OLE2.OBJ_TYPE;  -- Objeto do Word
	lobj_wordDocumentos OLE2.OBJ_TYPE;  -- Objeto de conjunto de documentos do Word
	lobj_wordDocumento OLE2.OBJ_TYPE;   -- Objeto do documento que será aberto
	lobj_wordArgumentos OLE2.LIST_TYPE; -- Objeto com lista de argumentos que será passado como parâmetro para o Word
	
	temp OLE2.LIST_TYPE;
	
BEGIN
	
	lobj_wordAplicativo := OLE2.CREATE_OBJ('Word.Application');    -- Cria o objeto do Word
	OLE2.SET_PROPERTY(lobj_wordAplicativo, 'Visible', 1);          -- Torna o objeto do Word visível
	
	lobj_wordDocumentos:=OLE2.GET_OBJ_PROPERTY(lobj_wordAplicativo, 'Documents'); -- Obtem referência ao conjunto de documentos
	
	-- ----------------------------------------------------------------------
	-- Abre documento modelo
	-- ----------------------------------------------------------------------

	lobj_wordArgumentos := OLE2.CREATE_ARGLIST;
	OLE2.ADD_ARG(lobj_wordArgumentos, 'C:modelo.doc'); -- Documento modelo com que contem a formatação pre-definida e as macros
	lobj_wordDocumento := OLE2.INVOKE_OBJ(lobj_wordDocumentos, 'Open', lobj_wordArgumentos); -- Abre o documento
	OLE2.DESTROY_ARGLIST(lobj_wordArgumentos);

	-- ----------------------------------------------------------------------
	-- Executa Macro contida no  modelo que irá escrever o documento e salvá-
	-- lo na pasta destino.
	-- ----------------------------------------------------------------------

	lobj_wordArgumentos := OLE2.CREATE_ARGLIST;
	OLE2.ADD_ARG(lobj_wordArgumentos, 'macroCriarDocumento');
	OLE2.ADD_ARG(lobj_wordArgumentos, pstr_documentoTitulo);
	OLE2.ADD_ARG(lobj_wordArgumentos, pstr_documentoCorpo);
	temp := OLE2.INVOKE_OBJ(lobj_wordAplicativo, 'Run', lobj_wordArgumentos);
	OLE2.DESTROY_ARGLIST(lobj_wordArgumentos);

	-- ----------------------------------------------------------------------
	-- Fecha o aplicativo Word e remove objetos da memória.
	-- ----------------------------------------------------------------------
	
	OLE2.RELEASE_OBJ(lobj_wordDocumento);
	OLE2.RELEASE_OBJ(lobj_wordDocumentos);
	OLE2.RELEASE_OBJ(lobj_wordAplicativo);
	

END;

Como modificar via código a altura ou largura de uma janela no Oracle Forms 6i?

Utilize o comando: SET_WINDOW_PROPERTY(‘Nome da Janela’, Nome da Propriedade, Valor da Propriedade);

Exemplo:

SET_WINDOW_PROPERTY(‘Window1’, HEIGHT, 600);
SET_WINDOW_PROPERTY(‘Window1’, WIDTH, 800);

Observação 01: o Oracle Forms 6i não é Case Sensitive, ou seja ela é uma linguagem não sensível ao caso.

Observação 02: o melhor local para colocar este código é no gatilho "WHEN-NEW-FORM-INSTACE", que está localizado no objeto "(Nível de Form)", ou seja, no gatilho que será disparado ao inicializar o formulário que se deseja formatar.

Como maximizar uma janela via código no Oracle Forms 6i?

Utilize o comando: SET_WINDOW_PROPERTY(‘Nome da Janela’, Nome da Propriedade, Valor da Propriedade);

Exemplo:

SET_WINDOW_PROPERTY(‘Window1’, Window_State, Maximize); — Maximiza a janela do aplicativo.
SET_WINDOW_PROPERTY(‘window1’, Window_State, Minimize); — Minimiza a janela do aplicativo.

Observação 01: o Oracle Forms 6i não é Case Sensitive, ou seja ela é uma linguagem não sensível ao caso.

Observação 02: o melhor local para colocar este código é no gatilho "WHEN-NEW-FORM-INSTACE", que está localizado no objeto "(Nível de Form)", ou seja, no gatilho que será disparado ao inicializar o formulário que se deseja formatar.