Página 1 de 1

Multi select Listbox

Enviado: 22 Nov 2017 20:14
por asimoes
Pessoal,

Tem como fazer multi seleção com o componente listbox ?

Multi select Listbox

Enviado: 22 Nov 2017 22:32
por Toledo
Alexandre, incluir no listbox:

Código: Selecionar todos

STYLE LBS_MULTIPLESEL
Abraços

Multi select Listbox

Enviado: 23 Nov 2017 00:06
por asimoes
Toledo,

Funcionou!!!

Agora pra pegar os selecionados sabes como ?

Multi select Listbox

Enviado: 23 Nov 2017 08:33
por Toledo
Alexandre, fiz um teste aqui, mas não descobri como pegar os itens selecionados. Pensei que Value, neste caso, seria uma array com os itens que foram selecionados, mas não é, value retorna apenas o último item selecionado.

Abraços

Multi select Listbox

Enviado: 23 Nov 2017 08:57
por asimoes
Toledo,

Obrigado.

Fiquei testando isso ontem e tive a ideia de guardar o value em um array, conforme selecione no listbox, ai já dá pra saber

Tipo:

Código: Selecionar todos

THREAD STATIC aLista := {}

nPos := ThisformOpsProc:oListOps:Value
nPosLista := aScan( aLista, {|AVAL|AVAL[1] == nPos } )
IF nPosLista = 0 
   aAdd( aListaX, { nPos } )
ELSE
   hb_ADel( aListaX, nPosLista, .T. )
ENDIF

Multi select Listbox

Enviado: 23 Nov 2017 10:58
por Toledo
Fiz um teste aqui, mas usando o ON CHANGE do ListBox.

Código: Selecionar todos

   @ 10,40 LISTBOX oList ITEMS oItems ;
             OF oModDlg                  ;
             INIT 1 ;
             SIZE 210, 220            ;
             ON CHANGE {|| ListSel(lastkey(),oList:Value) } ;
             STYLE LBS_MULTIPLESEL ;
             TOOLTIP "Teste ListBox"     

Código: Selecionar todos

Function ListSel(nkey_,nItem_)
If nKey_==0 .or. nKey_==32
   nEle_:=ASCAN(aListaX,{|e| e=nItem_})
   If nEle_>0
      hb_ADel(aListaX,nEle_,.T.)
   else
      aAdd(aListaX, nItem_)
   endif
endif
Return Nil
A aListaX declarei como Private (aListaX:={}) e adicionei seu conteúdo como uma array simples, não multi-dimensional, então para pegar os itens selecionados use:

Código: Selecionar todos

For i=1 to Len(aListaX)
   ? aListaX[i]
Next
Abraços,

Multi select Listbox

Enviado: 23 Nov 2017 12:36
por asimoes
Toledo,

Você sabe como remover uma seleção ( o destaque da linha ? )
Sem ser pelo click do mouse

Multi select Listbox

Enviado: 23 Nov 2017 17:30
por Toledo
Vixi, não sei não!

Abraços