Multi select Listbox

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Multi select Listbox

Mensagem por asimoes »

Pessoal,

Tem como fazer multi seleção com o componente listbox ?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Multi select Listbox

Mensagem por Toledo »

Alexandre, incluir no listbox:

Código: Selecionar todos

STYLE LBS_MULTIPLESEL
Abraços
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Multi select Listbox

Mensagem por asimoes »

Toledo,

Funcionou!!!

Agora pra pegar os selecionados sabes como ?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Multi select Listbox

Mensagem 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
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Multi select Listbox

Mensagem 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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Multi select Listbox

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Multi select Listbox

Mensagem por asimoes »

Toledo,

Você sabe como remover uma seleção ( o destaque da linha ? )
Sem ser pelo click do mouse
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Multi select Listbox

Mensagem por Toledo »

Vixi, não sei não!

Abraços
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Responder