Histórico da Página
...
| Informações | ||
|---|---|---|
| ||
É de extrema importância que a definição dos parâmetros seja efetuada de acordo com a estrutura acima, inclusive os tipos de dados (logical e character) por extenso. A definição dos parâmetros é reconhecida pelo zoom de lista de valores e condição para validar se o método criado está correto ou não. |
Definição dos Parâmetros
Esta janela ....
Nas tabelas a seguir estão descritos os elementos desta janela:
PROPRIEDADE | PARÂMETROS | VALOR | Descrição |
Condição | pLogReturn | YES | Indica que o botão correspondente deverá ficar desabilitado/escondido. |
Condição | pLogReturn | NO | Indica que o botão correspondente deverá permanecer no seu estado atual. |
| Condição | PDesMessage | - | Não é utilizada. |
Lista de Valor | pLogReturn | YES | Indica que a validação do objeto ocorreu com sucesso. |
Lista de Valor | pLogReturn | NO | Indica que a validação do objeto não foi bem sucedida. Será apresentada uma mensagem de erro ao usuário. |
Lista de Valor | PDesMessage | - | Descrição da mensagem de erro ao usuário, quando pLogReturn = NO. |
Valor Inicial | PDesValue | - | Valor para inicialização do objeto (caracter). |
| Informações | ||
|---|---|---|
| ||
Caso exista a necessidade de utilizar métodos parecidos para Condição e lista de valores (exemplo: validar apenas se o usuário possui permissão para o estabelecimento), pode ser utilizado uma regra para condição diferente (<>) do retorno externo, no zoom de condições do objeto. Dessa forma, para ambas as propriedades podem ser utilizadas um único método. |
...
Definição Funções para uso nos Métodos
Para auxiliar na construção dos métodos dos programas de retorno externo, foi disponibilizada uma biblioteca de funções, por intermédio de uma include (sop/solib001.i), onde é possível acessar propriedades dos objetos da tela por meio de um apelido pré-definido pelo usuário.
Segue abaixo uma breve descrição das funções disponibilizadas nessa versão inicial da Biblioteca de Funções:
FUNCTION: getObjectHandle |
RETORNO: handle |
PARÂMETROS: INPUT Apelido (CHAR) |
DESCRIÇÃO: Retorna o Handle do objeto, conforme o Apelido informado. Caso o objeto não esteja disponível ou o apelido não referencie nenhum objeto, o retorno será "?". |
FUNCTION: getObjectName |
RETORNO: character |
PARÂMETROS: INPUT Apelido (CHAR) |
DESCRIÇÃO: Retorna o valor atual do objeto, conforme o Apelido informado. Caso o objeto não esteja disponível, não possua a propriedade valor ou o apelido não referencie nenhum objeto, o retorno será “?”. Observação: é importante lembrar que o retorno sempre é caracter. Para os casos de objetos do tipo data, inteiro, decimal e lógico, é necessário utilizar as funções DATE, INT, DEC, etc. |
FUNCTION: getObjectValue |
RETORNO: character |
PARÂMETROS: INPUT Apelido (CHAR) |
DESCRIÇÃO: Retorna o valor atual do objeto, conforme o Apelido informado. Caso o objeto não esteja disponível, não possua a propriedade valor ou o apelido não referencie nenhum objeto, o retorno será “?”. Observação: é importante lembrar que o retorno sempre é caracter. Para os casos de objetos do tipo data, inteiro, decimal e lógico, é necessário utilizar as funções DATE, INT, DEC, etc. |
FUNCTION: getCurrentObjectHandle |
RETORNO: handle |
PARÂMETROS: Não possui parâmetros |
DESCRIÇÃO: Retorna o Handle do objeto corrente. Para a propriedade “Lista de Valor”, o objeto corrente é o objeto que possui a propriedade “Lista de Valor”. Para a propriedade “Condição”, o objeto corrente é o objeto selecionado na regra de retorno externo no zoom de condição. Caso o objeto não esteja disponível o retorno será “?”. |
FUNCTION: getCurrentObjectName |
RETORNO: character |
PARÂMETROS: Não possui parâmetros |
DESCRIÇÃO: Retorna o nome do objeto corrente. Para a propriedade “Lista de Valor”, o objeto corrente é o objeto que possui a propriedade “Lista de Valor”. Para a propriedade “Condição”, o objeto corrente é o objeto selecionado na regra de retorno externo no zoom de condição. Caso o objeto não esteja disponível o retorno será “?”. |
FUNCTION: getCurrentObjectValue |
RETORNO: character |
PARÂMETROS: Não possui parâmetros |
DESCRIÇÃO: Retorna o valor atual do objeto corrente. Para a propriedade “Lista de Valor”, o objeto corrente é o objeto que possui a propriedade “Lista de Valor”. Para a propriedade “Condição”, o objeto corrente é o objeto selecionado na regra de retorno externo no zoom de condição. Caso o objeto não esteja disponível ou não possua a propriedade valor o retorno será “?”. Observação: é importante lembrar que o retorno sempre é caracter. Para os casos de objetos do tipo data, inteiro, decimal e lógico, é necessário utilizar as funções DATE, INT, DEC, etc. |
Exemplo de Programa de Retorno Externo
Segue abaixo um exemplo de um programa externo com alguns métodos de exemplo para validação de objetos em tela.
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
/********************************************************************************
** Copyright DATASUL S.A. (1997)
** Todos os Direitos Reservados.
**
** Este fonte e de propriedade exclusiva da DATASUL, sua reproducao
** parcial ou total por qualquer meio, so podera ser feita mediante
** autorizacao expressa.
*******************************************************************************/
/*******************************************************************************
** Programa..: soexp001.P
** Objetivo..: Retorno Externo para propriedades Condicao/Lista Valores SOP
** Data......: 01/10/2002
** Notas.....: Programa de exemplo de retorno externo.
** Contém o protótipo necessário para definicao de programas de
** retorno externo e definição dos métodos
** É possível adicionar novos métodos, conforme necessidade
********************************************************************************/
/* +++ definicao da biblioteca de funcoes +++ */
{sop\solib001.i}
/* +++ prototipacao dos metodos existentes - apenas para consulta +++ */
/* +++ FUNCTION getObjectHandle RETURNS HANDLE (vAlias AS CHAR) +++ */
/* +++ FUNCTION getObjectName RETURNS CHAR (vAlias AS CHAR) +++ */
/* +++ FUNCTION getObjectValue RETURNS CHAR (vAlias AS CHAR) +++ */
/* +++ FUNCTION getCurrentObjectHandle RETURNS HANDLE ( ) +++ */
/* +++ FUNCTION getCurrentObjectName RETURNS CHAR ( ) +++ */
/* +++ FUNCTION getCurrentObjectValue RETURNS CHAR ( ) +++ */
/* +++ definicao de variaveis +++ */
DEF NEW GLOBAL SHARED VAR v_cod_usuar_corren AS CHAR NO-UNDO.
/*******************************************************************************
Procedure exampleMethod01
Objetivo: Exemplo de validacao do usuario corrente
*******************************************************************************/
PROCEDURE exampleMethod01:
DEF OUTPUT PARAM pLogReturn AS LOGICAL NO-UNDO.
DEF OUTPUT PARAM pDesMessage AS CHARACTER NO-UNDO.
MESSAGE getCurrentObjectHandle() SKIP
getCurrentObjectName () SKIP
getCurrentObjectValue () SKIP
VIEW-AS ALERT-BOX INFO BUTTONS OK.
IF v_cod_usuar_corren <> getCurrentObjectValue() THEN
ASSIGN pLogReturn = NO
pDesMessage = "Usuário inválido. O usuário corrente deve ser "
+ v_cod_usuar_corren.
ELSE
ASSIGN pLogReturn = YES.
RETURN.
END PROCEDURE.
/*******************************************************************************
Procedure exampleMethod02
Objetivo: Exemplo de condicao para botao conforme usuario / data
*******************************************************************************/
PROCEDURE exampleMethod02:
DEF OUTPUT PARAM pLogReturn AS LOGICAL NO-UNDO.
DEF OUTPUT PARAM pDesMessage AS CHARACTER NO-UNDO.
MESSAGE getCurrentObjectHandle() SKIP getObjectHandle("data-atual") SKIP
getCurrentObjectName () SKIP getObjectName ("data-atual") SKIP
getCurrentObjectValue () SKIP getObjectValue ("data-atual") SKIP
VIEW-AS ALERT-BOX INFO BUTTONS OK.
/* +++ condicao para desabilitar/esconder botao +++ */
IF v_cod_usuar_corren <> getCurrentObjectValue()
OR DATE(getObjectValue("data-atual")) <> TODAY THEN
/* +++ desabilita o botao +++ */
ASSIGN pLogReturn = YES.
ELSE
/* +++ botao permanece no seu estado atual +++ */
ASSIGN pLogReturn = NO.
RETURN.
END PROCEDURE.
/*******************************************************************************
Procedure exampleMethod03
Objetivo: Exemplo de Valor Inicial para um objeto
*******************************************************************************/
PROCEDURE exampleMethod03:
DEF OUTPUT PARAM pDesReturn AS CHARACTER NO-UNDO.
MESSAGE getCurrentObjectHandle() SKIP
getCurrentObjectName () SKIP
getCurrentObjectValue () SKIP
VIEW-AS ALERT-BOX INFO BUTTONS OK.
/* +++ verifica qual o usuario +++ */
IF v_cod_usuar_corren <> getCurrentObjectValue() THEN
ASSIGN pDesReturn = "12345".
ELSE
ASSIGN pDesReturn = "55555".
RETURN.
END PROCEDURE. |
| Informações | |||||
|---|---|---|---|---|---|
| |||||
Dica - Para verificar os valores dos objetos da tela, é possível mostrar uma mensagem na tela dos resultados obtidos pelas funções para verificação.
|
| Informações | |||||
|---|---|---|---|---|---|
| |||||
Dica - Para métodos utilizados na lista de valores, é possível retornar uma mensagem ao usuário caso ocorra erros de validação.
|
| Informações | ||
|---|---|---|
| ||
Dica - Eventualmente pode ser construído um método de retorno externo para lista de valores e para condição que tenham o mesmo objetivo ou a mesma codificação. Mas como a lista de valores deve retornar YES para OK e a propriedade condição tem que retornar YES para desabilitar, no zoom de condição pode ser criada uma regra utilizando o mesmo método de validação, apenas com o tipo diferente (<>). Dessa forma, se o retorno externo for NO, o objeto é desabilitado ou escondido. |
| Informações | ||
|---|---|---|
| ||
Dica - Existe um programa já definido que pode servir de exemplo para utilização da construção do programa de retorno externo. O mesmo encontra-se no diretório FONTES/SOP/SOEXP001.ZIP. Aconselha-se ao usuário administrador abrir esse programa e efetuar a opção “Salvar Como” para criar um programa de retorno externo, conforme nomenclatura desejada pelo usuário administrador. |
...
Campo
...
Descrição
...
| title | Impotante: |
|---|
...
| title | Impotante: |
|---|
Janela Zoom - Opção
A opção ....
Na tabela a seguir estão descritos os elementos desta janela:
...
Campo
...
Descrição
PROCEDURE <metodo>:
DEF OUTPUT PARAM pDesValue AS CHARACTER NO-UNDO.
/*** lógica especifica ***/
...
...
...
RETURN.
...