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

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.

Funcionalidade disponível a partir da release 12.1.2610.

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.

Antes do SmartX, todas as opções adicionadas por PE apareciam exclusivamente no Menu de Ações (Outras Ações) da rotina, agrupadas em um dropdown. Com o SmartX, é possível definir se uma opção será exibida no Browse da Rotina (chamado de Page Action) ou se continuará sendo exibida no menu dropdown tradicional. 


Comportamento Anterior X Novo Comportamento (SmartX)


  • Opções adicionadas via PE apareciam exclusivamente no menu de ações da rotina (dropdown), sem possibilidade de destaque visual diferenciado.
  • Não havia distinção visual entre uma ação principal e uma ação secundária — todos os itens recebiam o mesmo tratamento visual.
  • Em rotinas não-MVC, o array de retorno do PE utilizava posições fixas para configurar cada propriedade do item de menu.
  • Rotinas MVC utilizavam o comando ADD OPTION, porém sem suporte ao parâmetro 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 MVC utilizam a flag PAGEACTION diretamente ao final da instrução ADD OPTION.
  • Rotinas não-MVC utilizam a 10ª posição do array de retorno com valor .T. para indicar que o item é uma PageAction.



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 das rotinas tiveram seu comportamento alterado 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.

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

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.

#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 )
#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. Browse da Rotina.