| Nota |
|---|
|
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 |
|---|
|
Funcionalidade disponível a partir da release 12.1.2610. |
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á exibidano Browse da Rotina (chamado de Page Action) ou se continuará sendo exibida no menu dropdown tradicional.
Comportamento Anterior X Novo Comportamento (SmartX)
| Aviso |
|---|
| - 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.
|
|
| Dica |
|---|
| title | Com SmartX (12.1.2610+) |
|---|
| - 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.
|
|
|---|
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.
| Nota |
|---|
| title | Pontos 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. |
|
| Nota |
|---|
| title | Pontos 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 |
|---|
| language | cpp |
|---|
| theme | Midnight |
|---|
| title | Exemplo 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 |
|---|
| language | cpp |
|---|
| theme | Midnight |
|---|
| title | Exemplo 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 ) |
