Páginas filhas
  • LGX - LCHOICE

Versões comparadas

Chave

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

Pagetitle
LGX - LChoice
LGX - LChoice
(EM CONSTRUÇÃO...)
Componente com duas listas de seleção que permite realizar operações de transferência de itens entre as listas.


Hierarquia



Métodos GET


Métodos acessíveis através da função _ADVPL_get_property que permite recuperar os valores do componente.


Expandir
titleGET INDEX_SELECTED

Método GET: INDEX_SELECTED

Retorna a ordem do índice selecionado na lista.

Sintaxe



Bloco de código
_ADVPL_get_property( < l_listbox_reference >, "INDEX_SELECTED" ) => INTEGER

Retorno



TipoDescrição
INTEGER

Índice do item selecionado.



Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
DEFINE l_index_selected SMALLINT

LET l_index_selected = _ADVPL_get_property( l_listbox_reference ,"INDEX_SELECTED")



Expandir
titleGET ITEM_SELECTED

Método GET: ITEM_SELECTED

Retorna o valor do texto do item atual selecionado na lista.

Sintaxe



Bloco de código
_ADVPL_get_property( < l_listbox_reference >, "ITEM_SELECTED" ) => CHAR

Retorno



TipoDescrição
CHAR

Valor do índice atual selecionado na lista.


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
DEFINE l_index_value CHAR(50)

LET l_index_value = _ADVPL_get_property(l_listbox_reference,"ITEM_SELECTED")



Expandir
titleGET ITEM_AT

Método GET: ITEM_AT

Retorna o valor do texto de um determinado item da lista.

Sintaxe



Bloco de código
_ADVPL_get_property( < l_listbox_reference >, "ITEM_AT", < nIndex > ) => INTEGER

Parâmetros



NomeTipoDescriçãoObrigatório?
nIndex
INTEGER

Número do índice da lista que deseja retornar o conteúdo de texto.

(informação) Quando não for informado o número do índice, irá considerar o índice do item atual selecionado da lista.

Não

Retorno



TipoDescrição
CHAR

Conteúdo do texto registrado para o índice da lista informado.


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
DEFINE l_index_value CHAR(50)

#Retornar o texto do item 2 da lista
LET l_index_value = _ADVPL_get_property( l_listbox_reference ,"ITEM_AT",2)



Expandir
titleGET ITEM_COUNT

Método GET: ITEM_COUNT

Retorna a quantidade total de itens contidos na lista.

Sintaxe



Bloco de código
_ADVPL_get_property( < l_listbox_reference >, "ITEM_COUNT") => INTEGER


Retorno



TipoDescrição
INTEGER

Quantidade total de itens contidos na lista.


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
DEFINE l_index_count INTEGER

#Retornar o total de itens da lista
LET l_index_count = _ADVPL_get_property( l_listbox_reference ,"ITEM_COUNT")




Métodos SET


Métodos acessíveis utilizando a função _ADVPL_set_property que permite alterar e manipular os valores do componente.


Expandir
titleSET ADD_ITEM

Método SET: ADD_ITEM

Adiciona um item na lista de seleção.

Sintaxe



Bloco de código
_ADVPL_get_property( < l_listbox_reference >, "ADD_ITEM",< uValue >, < cDescription > ) =>

Parâmetros



NomeTipoDescriçãoObrigatório?
cDescription
CHAR

Conteúdo texto a ser exibido para o item na lista de seleção.

Sim
uValue
QUALQUER
Valor a ser assumido quando este item estiver selecionado. 

(informação) Este valor não é obrigatório, mas é o valor que é atribuído para a variável associada ao componente através da propriedade VARIABLE.  Quando não informado assume o mesmo valor definido no parâmetro cDescription.
Não


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
#Adicionar o item de valor "C" que apresenta o texto na lista como "Cancelado"
CALL _ADVPL_set_property( l_listbox_reference ,"ADD_ITEM","Cancelado","C")



Expandir
titleSET CLEAR

Método SET: CLEAR 

Remove todos os itens da lista de seleção.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_listbox_reference >,"CLEAR")


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
#Remove todos itens da lista de seleção
CALL _ADVPL_set_property( l_listbox_reference ,"CLEAR")




Expandir
titleSET REMOVE_ITEM

Método SET: REMOVE_ITEM

Remove um item da lista de seleção.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_listbox_reference >,"REMOVE_ITEM",< nIndex >)

Parâmetros



NomeTipoDescriçãoObrigatório?
nIndex
INTEGERÍndice do item que será removido.Sim


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
#Remove o item 3 da lista de seleção
CALL _ADVPL_set_property( l_listbox_reference ,"REMOVE_ITEM",3)




Expandir
titleSET SELECT_ITEM

Método SET: SELECT_ITEM 

Seleciona um determinado item da lista de seleção através do índice informado.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_listbox_reference >,"SELECT_ITEM", < nIndex > )

Parâmetros



NomeTipoDescriçãoObrigatório?
nIndexINTEGERÍndice do item da lista de seleção que deverá ser selecionado.Sim

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
#Seleciona o 1o item da lista de seleção
CALL _ADVPL_set_property( l_listbox_reference ,"SELECT_ITEM",1)    




Expandir
titleSET ORDER

Método SET: ORDER

Indica a ordenação dos valores na lista de seleção.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_listbox_reference >,"ORDER", < cORDER > )

Parâmetros



NomeTipoDescriçãoObrigatório?
cORDERCHAR

Ordenação dos itens na lista conforme o conteúdo de texto exibido em cada item.

    ASC - Ordem Ascendente

    DESC - Ordem Descendente

Sim

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
#Ordenar a lista pelo conteúdo apresentado em ordem ascendente
CALL _ADVPL_set_property( l_listbox_reference ,"ORDER","ASC")  




Expandir
titleSET ITEM_MOVE_UP

Método SET: ITEM_MOVE_UP

Mover um determinado item da lista uma posição acima da atual.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_listbox_reference >,"ITEM_MOVE_UP", < nIndex > )

Parâmetros



NomeTipoDescriçãoObrigatório?
nIndexINTEGER

Posição do item na lista a ser reposicionado uma posição para cima.

Sim

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
#Mover o item 2 da lista uma posição acima
CALL _ADVPL_set_property( l_listbox_reference ,"ITEM_MOVE_UP",2)  




Expandir
titleSET ITEM_MOVE_DOWN

Método SET: ITEM_MOVE_DOWN

Mover um determinado item da lista uma posição abaixo da atual.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_listbox_reference >,"ITEM_MOVE_DOWN", < nIndex > )

Parâmetros



NomeTipoDescriçãoObrigatório?
nIndexINTEGER

Posição do item na lista a ser reposicionado uma posição para baixo.

Sim

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
#Mover o item 1 da lista uma posição abaixo
CALL _ADVPL_set_property( l_listbox_reference ,"ITEM_MOVE_DOWN",1)  




Expandir
titleSET GO_TOP

Método SET: GO_TOP

Posicionar no primeiro item da lista.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_listbox_reference >,"GO_TOP")

Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
#Posicionar o cursor no 1o item da lista
CALL _ADVPL_set_property( l_listbox_reference ,"GO_TOP")  




Expandir
titleSET GO_BOTTOM

Método SET: GO_BOTTOM

Posicionar no último item da lista.

Sintaxe



Bloco de código
_ADVPL_set_property(< l_listbox_reference >,"GO_BOTTOM")


Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
#Posicionar o cursor no último item da lista
CALL _ADVPL_set_property( l_listbox_reference ,"GO_BOTTOM")  





Exemplo



Bloco de código
languageruby
themeConfluence
linenumberstrue
DEFINE m_dialog_reference VARCHAR(10)
DEFINE m_choice_reference VARCHAR(10)

DEFINE ma_left, ma_right ARRAY [10] OF RECORD
                         item_value CHAR(30)
                         END RECORD

#------------------------#
 FUNCTION lchoice_test()
#------------------------#
   DEFINE l_layoutmanager_reference VARCHAR(10)
   DEFINE l_statusbar_reference     VARCHAR(10)
   DEFINE l_menubar_reference       VARCHAR(10)
   DEFINE l_confirm_button          VARCHAR(10)
   DEFINE l_panel                   VARCHAR(10)
   DEFINE l_index                   SMALLINT

   CALL fgl_setenv("ADVPL","1")

   #Instancia janela de diálogo
   LET m_dialog_reference = _ADVPL_create_component(NULL,"LDIALOG")
   CALL _ADVPL_set_property(m_dialog_reference,"ENABLE_ESC_CLOSE",FALSE)
   CALL _ADVPL_set_property(m_dialog_reference,"TITLE","Ordem das Divisões")

   #Instancia barra de status/mensagens na janela de diálogo
   LET l_statusbar_reference = _ADVPL_create_component(NULL,"LSTATUSBAR",m_dialog_reference)

   #Instancia componente para renderização de componentes em relação ao posicionamento em tela
   LET l_layoutmanager_reference = _ADVPL_create_component(NULL,"LLAYOUTMANAGER",m_dialog_reference)
   CALL _ADVPL_set_property(l_layoutmanager_reference,"MARGIN",FALSE)
   CALL _ADVPL_set_property(l_layoutmanager_reference,"COLUMNS_COUNT",1)
   CALL _ADVPL_set_property(l_layoutmanager_reference,"MIN_WIDTH",600)
   CALL _ADVPL_set_property(l_layoutmanager_reference,"MIN_HEIGHT",340)

   #Instancia uma barra de menu na janela de diálogo
   LET l_menubar_reference = _ADVPL_create_component(NULL,"LMENUBAR",l_layoutmanager_reference)

   #Adiciona um botão CONFIRMAR na barra de menu
   LET l_confirm_button = _ADVPL_create_component(NULL,"LMENUBUTTON",l_menubar_reference)
   CALL _ADVPL_set_property(l_confirm_button,"IMAGE","CONFIRM_EX")
   CALL _ADVPL_set_property(l_confirm_button,"EVENT","lchoice_exit")

   #Adiciona um painel logo a seguir do menu para que possa incluir o componente LChoice
   LET l_panel = _ADVPL_create_component(NULL,"LPANEL",l_layoutmanager_reference)
   CALL _ADVPL_set_property(l_panel,"ALIGN","CENTER")
   CALL _ADVPL_set_property(l_panel,"SIZE",540,280)

   #Cria o componente LChoice de multipla escolha
   LET m_choice_reference = _ADVPL_create_component(NULL,"LCHOICE",l_panel)

   #Determina que os itens devem sempre ser reorganizados na lista quando forem movimentados
   CALL _ADVPL_set_property(m_choice_reference,"REORGANIZE_RECORD",TRUE)

   #Dimensiona o componente
   CALL _ADVPL_set_property(m_choice_reference,"SIZE",540,280)
   CALL _ADVPL_set_property(m_choice_reference,"ALIGN","CENTER")

   #Esconde os botões para trocar os itens de posição no listbox direito
   CALL _ADVPL_set_property(m_choice_reference,"SHOW_MOVE_BUTTONS",TRUE)

   #Define a descrição (texto) do label esquerdo
   CALL _ADVPL_set_property(m_choice_reference,"LEFT_LABEL_TEXT","Titulo ESQUERDA")

   #Define a descrição (texto) do label direito
   CALL _ADVPL_set_property(m_choice_reference,"RIGHT_LABEL_TEXT","Título DIREITA")

   #Habilita o componente LChoice
   CALL _ADVPL_set_property(m_choice_reference,"ENABLE",TRUE)

   #Determina as funções de controle de movimentação de itens entre as listas para identificar movimentos não permitidos.
   CALL _ADVPL_set_property(m_choice_reference,"LEFT_MOVE_EVENT","lchoice_checkCanMoveLeft")
   CALL _ADVPL_set_property(m_choice_reference,"RIGHT_MOVE_EVENT","lchoice_checkCanMoveRight")

   LET ma_left[01].item_value = 'valor 01'
   LET ma_left[02].item_value = 'valor 02'
   LET ma_left[03].item_value = 'valor 03'
   LET ma_left[04].item_value = 'valor 04'
   LET ma_left[05].item_value = 'valor 05'
   LET ma_left[06].item_value = 'valor 06'
   LET ma_left[07].item_value = 'valor 07'
   LET ma_left[08].item_value = 'valor 08'
   LET ma_left[09].item_value = 'valor 09'
   LET ma_left[10].item_value = 'valor 10'

   #Determinar as variaveis que irão armazenar o conteúdo das listas da direita e esquerda, indicando o total de linhas preenchidas em cada lista.
   CALL _ADVPL_set_property(m_choice_reference,"LEFT_VARIABLE",ma_left,"item_value",10)
   CALL _ADVPL_set_property(m_choice_reference,"VARIABLE",ma_right,"item_value",0)

   #Ativar a janela de diálogo
   CALL _ADVPL_set_property(m_dialog_reference,"ACTIVATE",TRUE)
 END FUNCTION

#---------------------------------------#
 FUNCTION lchoice_checkCanMoveLeft()
#---------------------------------------#
   DEFINE l_idx_selected SMALLINT

   #Identificar o indice atual selecionado na lista da direita
   LET l_idx_selected = _ADVPL_get_property(m_choice_reference, "RIGHT_INDEX_SELECTED")

   IF ma_right[l_idx_selected].item_value = "valor 05" THEN
      CALL LOG_message("Movimentação não permitida.","WARNING","Este item nao pode ser retornado para esquerda.","",0)     
      
      #Cancela a movimentação       
      RETURN FALSE
   END IF

   #Desmarca item selecionado na lista da direita e reorganiza dados
   CALL _ADVPL_set_property(m_choice_reference,"REORGANIZE_RECORD",TRUE)   
   CALL _ADVPL_set_property(m_choice_reference,"RIGHT_SELECT_ITEM",l_idx_selected)
   CALL _ADVPL_set_property(m_choice_reference,"LEFT_ORDER","ASC")   

   #Autoriza a movimentação 
   RETURN TRUE
 END FUNCTION

#---------------------------------------#
 FUNCTION lchoice_checkCanMoveRight()
#---------------------------------------#
   DEFINE l_idx_selected SMALLINT      
 
   #Identificar o indice atual selecionado na lista da esquerda
   LET l_idx_selected = _ADVPL_get_property(m_choice_reference, "LEFT_INDEX_SELECTED")

   IF ma_right[l_idx_selected].item_value = "valor 03" THEN
      CALL LOG_message("Movimentação não permitida.","WARNING","Este item nao pode ser movido para direita.","",0)
      #Cancela a movimentação
      RETURN FALSE
   END IF

   #Desmarca item selecionado na lista da esquerda e reorganiza dados
   CALL _ADVPL_set_property(m_choice_reference,"REORGANIZE_RECORD",TRUE)   
   CALL _ADVPL_set_property(m_choice_reference,"LEFT_SELECT_ITEM",l_idx_selected)
   CALL _ADVPL_set_property(m_choice_reference,"RIGHT_ORDER","ASC")   
   
   #Autoriza a movimentação
   RETURN TRUE
 END FUNCTION

#-------------------------#
 FUNCTION lchoice_exit()
#-------------------------#
   #Fecha a janela de diálogo
   CALL _ADVPL_set_property(m_dialog_reference,"ACTIVATE",FALSE)
 END FUNCTION