Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

PMSF

Checkbox a seleccionar todos os elementos da listbox

Mensagens Recomendadas

PMSF

boa tarde;

tenho uma form com uma listbox e uma checkbox

na listbox adicionei alguns itens. A função da checkbox é ao seleccioná-la ela também selecciona todos os itens da listbox; e ao tirar o check que ela limpe as selecções feitas na listbox.

ela faz isso; o meu problema é que quando "checkamos" ou "deschekamos" em vez de aparecer o nome dos itens colocados aparece -1 ou 0 conforme a sitação.

Podem me ajudar?!

cumprimentos,

Pedro

o meu código é o seguinte:

Private Function todosselect()
CbFirma.List(0) = True
CbFirma.List(1) = True
CbFirma.List(2) = True
CbFirma.List(3) = True
CbFirma.List(4) = True
CbFirma.List(5) = True
CbFirma.List(6) = True
CbFirma.List(7) = True
CbFirma.List(8) = True
CbFirma.List(9) = True
CbFirma.List(10) = True
CbFirma.List(11) = True
CbFirma.List(12) = True
CbFirma.List(13) = True
CbFirma.List(14) = True
CbFirma.List(15) = True
CbFirma.List(16) = True
CbFirma.List(17) = True
End Function

Private Function nenhumselect()
CbFirma.List(0) = False
CbFirma.List(1) = False
CbFirma.List(2) = False
CbFirma.List(3) = False
CbFirma.List(4) = False
CbFirma.List(5) = False
CbFirma.List(6) = False
CbFirma.List(7) = False
CbFirma.List(8) = False
CbFirma.List(9) = False
CbFirma.List(10) = False
CbFirma.List(11) = False
CbFirma.List(12) = False
CbFirma.List(13) = False
CbFirma.List(14) = False
CbFirma.List(15) = False
CbFirma.List(16) = False
CbFirma.List(17) = False
End Function
Private Sub CBtodos_Click()
If CBtodos = True Then todosselect Else
If CBtodos = False Then nenhumselect
End Sub

Private Sub UserForm_Initialize()
'ListBox CbFirma
CbFirma.AddItem "Gabriel"
CbFirma.AddItem "Lidia"
CbFirma.AddItem "Pedro"
CbFirma.AddItem "Rute"
CbFirma.AddItem "Natercia"
CbFirma.AddItem "Ambrosio"
CbFirma.AddItem "Filipe"
CbFirma.AddItem "José"
CbFirma.AddItem "Sara"
CbFirma.AddItem "Catarina"
CbFirma.AddItem "Tiago"
CbFirma.AddItem "Sofia"
CbFirma.AddItem "Hugo"
CbFirma.AddItem "Rosa"
CbFirma.AddItem "André"
CbFirma.AddItem "Cátia"
CbFirma.AddItem "Carla"
CbFirma.AddItem "Isabel"


CBtodos = False
End Sub

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
FreiNando

Ao fazeres CbFirma.List(0) = True, estás a alterar o valor do item da lista.

Para selecionar deves usar a propriedade Selected ex.: CbFirma.Selected(0) = True.

A  propriedade MultiSelect determina o modo de selecção:

  (0) fmMultiSelectSingle  - Apenas um item pode ser selecionado;

  (1) fmMultiSelectMulti - Varios items podem ser selecionado, e o utilizador clicka para marcar ou desmarcar;

  (2) fmMultiSelectExtended - Varios items , mas o utilizador tem de usar o ctrl ou shift para selecionar vários.

Uma forma desmarcar todos é mudar esta propriedade para  fmMultiSelectSingle e depois para fmMultiSelectMulti.

No teu código para simplificar  deves utilizar um ciclo:

Private Function todosselect()
      Dim I as Integer
      
      For I=0 To CbFirma.ListCount-1
           CbFirma.List(0) = True
      Next I
End Function


O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PMSF

uma coisa tão simples; mas ainda não conhecia :P

só uma correcção (para se alguém tentar utilizar): na versão simplificada do código deve-se utilizar:

Private Function todosselect()
     Dim I as Integer

     For I=0 To CbFirma.ListCount-1
          CbFirma.Selected(I) = True
     Next I
End Function

Ainda estou muito verde nestas andanças, obrigado pelas dicas :biggrin:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
FreiNando

e sim podia ter simplificado; mas ainda estou muito verde nestas andanças para pensar nestes promenores

Os ciclos não são promenores,

em conjunto com as condições fazem parte das bases em praticamente todas a linguagens de programação.


O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.