Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Índice


Nota
iconfalse
titleSmartX - 12.1.2610

A partir da release 12.1.2610, a rotina passa a permitir a visualização do browser utilizando o SmartX.

Com essa alteração, a implementação de Pontos de Entrada (PE) relacionados à inclusão de opções de menu passa a ter um novo comportamento, especialmente no que se refere à forma como as ações são exibidas na interface.

Aviso
iconfalse
titleFase de testes

Funcionalidade disponível a partir da release 12.1.2610 e em rotinas com browser SmartX habilitado.

01. Visão Geral

...

O SmartX é a integração do framework POUI ao Protheus, permitindo que as rotinas sejam renderizadas em um browser moderno com componentes visuais mais ricos e responsivos. Com essa mudança, a forma como os Pontos de Entrada (PE's) customizam o menu de ações das rotinas foi atualizada para se adequar ao novo modelo de interface.

...

Comportamento Anterior X Novo Comportamento (SmartX)

warningtitle no menu de ações da rotina (dropdown)   o Rotinas MVC utilizavam o comando  do PE utilizava posições fixas para configurar cada propriedade do item de menu. Rotinas MVC utilizam a flag PAGEACTION 
  • Opções podem ser exibidas como Page Actions — botões de destaque visíveis diretamente no browse, fora do menu dropdown, facilitando o acesso às ações mais utilizadas pelo usuário.
  • A distinção entre ação de destaque e ação secundária é feita pelo parâmetro PAGEACTION, presente na definição de cada item do menu.
  •  Rotinas não-MVC utilizam a 10ª posição do array de retorno com valor .T. para indicar que o item é uma PageAction
    Antes
    Depois
    Antes do SmartX
    Opções adicionadas via PE apareciam exclusivamente
    no menu de Outras ações, sem possibilidade de destaque visual diferenciado.As opções podem ser exibidas como Page Actions, permitindo destacar botões diretamente no browse, fora do menu dropdown, facilitando o acesso às ações mais utilizadas.
    Não havia distinção visual entre uma ação principal e uma ação secundária
    , pois todos os itens recebiam o mesmo tratamento visual.A distinção entre ação principal e ação secundária passa a ser realizada através do parâmetro PAGEACTION, definido em cada item de menu.

    Em rotinas

    não-MVC,

    não existia a utilização da 10ª posição do array de retorno

    para definir o parâmetro responsável pela exibição do item como Page Action.

    Em rotinas não-MVC, a 10ª posição do array de retorno deve receber o valor .T. para indicar que o item será exibido como Page Action.
    Rotinas MVC utilizavam o comando
    ADD OPTION, porém sem suporte ao parâmetro
    PAGEACTION.
    Dica
    titleCom SmartX (12.1.2610+)
    Em rotinas MVC, o parâmetro PAGEACTION pode ser utilizado diretamente ao final da instrução
    ADD OPTION.
    Dica
    titleDica:

    Botões adicionados ao menu Ações do registro (sem a utilização do lPageAction ou PAGEACTION) normalmente representam funcionalidades que dependem de um registro selecionado para sua execução. Já os botões exibidos como Page Action (lPageAction = .T. ou utilização do PAGEACTION no ADD OPTION) geralmente representam funcionalidades independentes da seleção de registros, ficando disponíveis diretamente no browse para acesso rápido.

    02. Ponto de Entrada - Inclusão de Opções no Menu da Rotina

    ...

    Os Pontos de Entrada responsáveis pela inclusão de novas opções no menu nos menus das rotinas tiveram seu comportamento alteradoajustado com a adoção do SmartX. O novo padrão diferencia rotinas do tipo MVC e Não-MVC, cada uma com sua própria sintaxe e parâmetros.

    Nota
    titlePontos de Entrada - MVC

    Em rotinas MVC, o array de opções é recebido via PARAMIXB[1] e as opções são adicionadas com o comando ADD OPTION.

    do SmartX, conforme detalhado abaixo:

    Nota
    titlePontos de Entrada - Não-MVC

    Em rotinas Não-MVC, o array é criado do zero e as opções são adicionadas via aAdd(), utilizando posições fixas no array.

    Bloco de código
    languagecpp
    themeMidnight
    titleExemplo de PE - MVC
    #INCLUDE 'TLPP-CORE.TH'
    #INCLUDE 'FWMVCDEF.CH'
    
    User Function CT020ROT()
    
        Local aNovoItemMenu As Array
        Local lPageAction   As Logical
    
        aNovoItemMenu := PARAMIXB[ 1 ]
        lPageAction   := .T. // Indica que o Botão Será Adicionado ao PageAction do Browse da Rotina.
    
        // Opção no Menu - Ações de Registro.
        ADD OPTION aNovoItemMenu TITLE 'Teste SmartX'               ACTION 'Alert("Teste SmartX")' OPERATION MODEL_OPERATION_UPDATE ACCESS 0
    
        // Opção Exibida Diretamente no Browse da Rotina - Page Action.
        ADD OPTION aNovoItemMenu TITLE 'Teste SmartX - Page Action' ACTION 'Alert("Teste SmartX")' OPERATION MODEL_OPERATION_UPDATE ACCESS 0 PAGEACTION
    
    Return( aNovoItemMenu )
    Bloco de código
    languagecpp
    themeMidnight
    titleExemplo de PE - Não MVC
    #INCLUDE 'TLPP-CORE.TH'
    #INCLUDE 'FWMVCDEF.CH'  
    
    User Function CT240BUT()
    
        Local aNovoItemMenu As Array
        Local lPageAction   As Logical
    
        aNovoItemMenu := {}
        lPageAction   := .T. // Indica que o Botão Será Adicionado ao PageAction do Browse da Rotina.
    
        // Opção no Menu - Ações de Registro.
        aAdd( aNovoItemMenu, { 'Teste SmartX - Page Action', 'Alert( "Teste SmartX" )', 0, 9,,,,,, lPageAction } )
    
        // Opção Exibida Diretamente no Browse da Rotina.
        aAdd( aNovoItemMenu, { 'Teste SmartX', 'Alert( "Teste SmartX" )'			  , 0, 7 				   } )
    
    Return( aNovoItemMenu )

    03. Exemplo de Browse da Rotina

    ...

    Abaixo são demonstrados dois exemplos de inclusão de botões: um utilizando os parâmetros PAGEACTION/lPageAction, que exibe o botão diretamente no PageAction do browser, e outro sem a utilização desses parâmetros, no qual o botão é exibido dentro do menu Ações do registro

    ...

    Foram incluídos exemplos de rotinas que utilizam o PageAction, bem como casos em que ele não é aplicado, com o objetivo de demonstrar as diferenças entre as abordagens e esclarecer em quais cenários cada uma se mostra mais adequada.


    ...