Jump to content

[VB 6] ComboBox


_Planax_
 Share

Recommended Posts

Boa noite a todos.

A minha dúvida é a seguinte:

Queria criar condições em ComboBoxes. Por exemplo:

Na ComboBox1 tenho á escolha as opções "Entradas", "Bebidas", "Prato Principal", "Sobremesa".

Queria fazer com que, consoante a minha escolha na ComboBox1, a ComboBox2 apresentasse valores referentes apenas, por exemplo, a "Sobremesas"...

Estava a fazer assim, mas não está a funcionar:

Private Sub Combo1_Change()
    If Combo1.ItemData = 1 Then
        Combo2.AddItem "Pudim"
        Combo2.AddItem "Mousse de Chocolate"
        Combo2.AddItem "Tarte de Natas"
        Combo2.AddItem "Fruta da Época"
    End If
End Sub

Obrigado a todos, desde já.

Link to comment
Share on other sites

Olha  fazes assim:

  Private sub Combo2_Click()

 

      if Combo1.text="Pudim" them

        Combo2.AddItem = "Boca Doce"

        ... (assim por diante)

      endif

Qualquer coisa avisa ....

Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.

Link to comment
Share on other sites

Boas! Antes de mais obrigado pela resposta. 😉

O código funciona, mas ocorre um bug... Quando eu escolho a primeira vez uma opção na Combo1, na Combo2 aparece correctamente, porém se for escolher outro valor á Combo1, em vez de aparecer uma nova lista na Combo2,  aparece a anterior mais a nova...  :bored:

Private Sub Combo1_Click()
    If Combo1.Text = "Sapo ADSL" Then
        Combo2.AddItem "256kbps"
        Combo2.AddItem "512kbps"
        Combo2.AddItem "2Mb"
        Combo2.AddItem "4Mb"
        Combo2.AddItem "8Mb"
    Else:
        Combo1.Text = "Clix"
        Combo2.AddItem "2Mb"
        Combo2.AddItem "8Mb"
        Combo2.AddItem "16Mb"
    End If
End Sub
Link to comment
Share on other sites

Tens que limpar o combobox antes de clicares outras vez e para isso utilizas o seguinte comando.

Combo1.clear

Private Sub Combo1_Click()
   Combo2.clear
    If Combo1.Text = "Sapo ADSL" Then
        Combo2.AddItem "256kbps"
        Combo2.AddItem "512kbps"
        Combo2.AddItem "2Mb"
        Combo2.AddItem "4Mb"
        Combo2.AddItem "8Mb"
    Else:
        Combo1.Text = "Clix"
        Combo2.AddItem "2Mb"
        Combo2.AddItem "8Mb"
        Combo2.AddItem "16Mb"
    End If
End Sub

Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.

Link to comment
Share on other sites

:S Agora ao tentar adicionar mais ISPs para além do Sapo e da Clix reparei que com Ifs não vou lá... Ou pelo menos não estou a conseguir... Secalhar com "case" era melhor... Não? Mas não sei as syntaxes do Case no VB... Não dei nas aulas... Será que me podias explicar? Desculpa lá o incómodo...

Cumprimentos

Link to comment
Share on other sites

Depois de pelo meio o computador da escola me ter dado cabo da pen e de eu não ter backups do projecto, consegui pô-lo a funcionar de novo... E vinha esclarecer mais uma dúvida. De momento o código está assim:

Private Sub Option1_Click()
    Combo1.Clear
    Combo1.AddItem "Sapo ADSL"
    Combo1.AddItem "Clix"
    If Option1.Enabled Then
        Select Case Combo1.Text
            Case "Sapo ADSL"
                Picture1.Picture = LoadPicture("imagens\sapo.gif")
                Combo2.Clear
                Combo2.AddItem "256kbps"
                Combo2.AddItem "512kbps"
                Combo2.AddItem "2Mb"
                Combo2.AddItem "4Mb"
                Combo2.AddItem "8Mb"
            Case "Clix"
                Picture1.Picture = LoadPicture("imagens\clix.jpg")
                Combo2.Clear
                Combo2.AddItem "2Mb"
                Combo2.AddItem "8Mb"
                Combo2.AddItem "16Mb"
            Case "Oni"
                Picture1.Picture = LoadPicture("imagens\oniduo.jpg")
                Combo2.Clear
                Combo2.AddItem "OniDuo 512kbps"
                Combo2.AddItem "OniDuo 5Mb"
        End Select
    End If
End Sub

O problema é que ele não chega a fazer o case... O que é que eu estou a fazer mal?

Cumprimentos

Link to comment
Share on other sites

Ele só vai fazer esse case se tu tiveres a 1.ª Combo preenchida caso contraio ele não faz nada.

Lema: Se eu não saber de alguma coisa não se preocupem porque tento sempre ajudar alguma coisita, nem que seja, por palpites/sugestões.

Link to comment
Share on other sites

Não te faz nada porque isso está no evento errado... o que tu tás a fazer aí é o seguinte:

Carregas num OptionButton ... e vai apagar o conteudo da combo1 e adicionar os 2 items... e dps verificar no case o estado da combo1. Como foram adicionados os items, sem haver posterior interacçao com o utilizador, ou seja, não foi seleccionado nenhum item da combo1... o case n irá verificar nenhuma das condiçoes que lá tens. Para corrigires isso faz o seguinte:

Private Sub Option1_Click()
    Combo1.Clear
    Combo1.AddItem "Sapo ADSL"
    Combo1.AddItem "Clix"

Depois no evento Click da Combo1 metes o seguinte:

If Option1.Enabled Then
        Select Case Combo1.Text
            Case "Sapo ADSL"
                Picture1.Picture = LoadPicture("imagens\sapo.gif")
                Combo2.Clear
                Combo2.AddItem "256kbps"
                Combo2.AddItem "512kbps"
                Combo2.AddItem "2Mb"
                Combo2.AddItem "4Mb"
                Combo2.AddItem "8Mb"
            Case "Clix"
                Picture1.Picture = LoadPicture("imagens\clix.jpg")
                Combo2.Clear
                Combo2.AddItem "2Mb"
                Combo2.AddItem "8Mb"
                Combo2.AddItem "16Mb" 
            Case "Oni"
                Picture1.Picture = LoadPicture("imagens\oniduo.jpg")
                Combo2.Clear
                Combo2.AddItem "OniDuo 512kbps"
                Combo2.AddItem "OniDuo 5Mb"
        End Select
    End If

Ve lá se assim dá....

Link to comment
Share on other sites

Continua a não funcionar... :S Fiz algo mal?

Private Sub Option1_Click()
    Combo1.Clear
    Combo1.AddItem "Sapo ADSL"
    Combo1.AddItem "Clix"
End Sub

Private Sub Option2_Click()
    Combo1.Clear
    Combo1.AddItem "Netcabo"
    Combo1.AddItem "Netvisão"
End Sub

Private Sub Combo1_Change()
If Option1.Enabled Then
        Select Case Combo1.Text
            Case "Sapo ADSL"
                Picture1.Picture = LoadPicture("imagens\sapo.gif")
                Combo2.Clear
                Combo2.AddItem "256kbps"
                Combo2.AddItem "512kbps"
                Combo2.AddItem "2Mb"
                Combo2.AddItem "4Mb"
                Combo2.AddItem "8Mb"
            Case "Clix"
                Picture1.Picture = LoadPicture("imagens\clix.jpg")
                Combo2.Clear
                Combo2.AddItem "2Mb"
                Combo2.AddItem "8Mb"
                Combo2.AddItem "16Mb"
            Case "Oni"
                Picture1.Picture = LoadPicture("imagens\oniduo.jpg")
                Combo2.Clear
                Combo2.AddItem "OniDuo 512kbps"
                Combo2.AddItem "OniDuo 5Mb"
        End Select
        
        Else: Option2.Enabled
                Select Case Combo1.Text
                    Case Combo1.Text = "Netcabo"
                    Combo2.Clear
                    Combo2.AddItem "256kbps"
                    Combo2.AddItem "512kbps"
                    Combo2.AddItem "2Mb"
                    Combo2.AddItem "4Mb"
                    Combo2.AddItem "8Mb"
                Case Combo1.Text = "Netvisão"
                    Combo2.Clear
                    Combo2.AddItem "2Mb"
                    Combo2.AddItem "8Mb"
                    Combo2.AddItem "16Mb"
                End Select
    
    End If
End Sub
Link to comment
Share on other sites

Uma dica para que n voltes a cometer este mesmo erro. Se não estiver a funcionar algo que achas que deva funcionar, experimenta por um breakpoint na primeira linha de codigo associado ao evento, e quando correres, se ele parar nessa linha qd fizeres a operaçao que tens a fazer é porque estás a trabalhar no evento correcto ( ha excepções como é obvio ).

Link to comment
Share on other sites

E para acabar com as perguntas, com o projecto à beira da conclusão, peço que me ajudem:

Private Sub Combo2_Click()
    If Option1.Enabled Then
        Select Case Combo2.Text
        
            Case "256kbps"
                Text3 = 256 / 8
                Text5 = 128 / 8
                Text4 = ((256 / 8) * 0.76)
                Text6 = ((128 / 8) * 0.76)
                
            Case "512kbps"
                Text3 = 512 / 8
                Text5 = 128 / 8
                Text4 = ((512 / 8) * 0.76)
                Text6 = ((128 / 8) * 0.76)
                
            Case "2Mb"
                Text3 = 2048 / 8
                Text5 = 128 / 8
                Text4 = ((2048 / 8) * 0.76)
                Text6 = ((128 / 8) * 0.76)
                
            Case "4Mb"
                Text3 = 4096 / 8
                Text5 = 256 / 8
                Text4 = ((4096 / 8) * 0.76)
                Text6 = ((256 / 8) * 0.76)
                
            Case "8Mb"
                Text3 = 8192 / 8
                Text5 = 389 / 8
                Text4 = ((8192 / 8) * 0.76)
                Text6 = ((384 / 8) * 0.76)
            
            Case "16Mb"
                Text3 = 16384 / 8
                Text5 = 400 / 8
                Text4 = ((8192 / 8) * 0.76)
                Text6 = ((400 / 8) * 0.76)
        End Select
       End If
    'Else
        If Option2.Enabled Then
            Select Case Combo2.Text
            
                Case "256kbps"
                    Text3 = 256 / 8
                    Text5 = 128 / 8
                    Text4 = ((256 / 8) * 0.8)
                    Text6 = ((128 / 8) * 0.8)
                    
                Case "512kbps"
                    Text3 = 512 / 8
                    Text5 = 128 / 8
                    Text4 = ((512 / 8) * 0.8)
                    Text6 = ((128 / 8) * 0.8)
                    
                Case "2Mb"
                    Text3 = 2048 / 8
                    Text5 = 128 / 8
                    Text4 = ((2048 / 8) * 0.8)
                    Text6 = ((128 / 8) * 0.8)
                    
                Case "4Mb"
                    Text3 = 4096 / 8
                    Text5 = 256 / 8
                    Text4 = ((4096 / 8) * 0.8)
                    Text6 = ((256 / 8) * 0.8)
                    
                Case "8Mb"
                    Text3 = 8192 / 8
                    Text5 = 389 / 8
                    Text4 = ((8192 / 8) * 0.8)
                    Text6 = ((389 / 8) * 0.8)
            End Select
        'End If
    End If
End Sub

Porque raio só faz ele, para qualquer escolha da combo2 a parte "If Option2.Enabled Then" ?

PS- Se eu tirar aqueles comentários e fizer o progama ter Else, ele faz o opsto, só faz a parte do If Option1.Enabled Then. :S

PS2- Como defino um breakpoint? :$

Obrigado a todos

Link to comment
Share on other sites

Mete assim:

Private Sub Combo2_Click()
    If Option1.Enabled = True Then
        Select Case Combo2.Text
        
            Case "256kbps"
                Text3 = 256 / 8
                Text5 = 128 / 8
                Text4 = ((256 / 8) * 0.76)
                Text6 = ((128 / 8) * 0.76)
                
            Case "512kbps"
                Text3 = 512 / 8
                Text5 = 128 / 8
                Text4 = ((512 / 8) * 0.76)
                Text6 = ((128 / 8) * 0.76)
                
            Case "2Mb"
                Text3 = 2048 / 8
                Text5 = 128 / 8
                Text4 = ((2048 / 8) * 0.76)
                Text6 = ((128 / 8) * 0.76)
                
            Case "4Mb"
                Text3 = 4096 / 8
                Text5 = 256 / 8
                Text4 = ((4096 / 8) * 0.76)
                Text6 = ((256 / 8) * 0.76)
                
            Case "8Mb"
                Text3 = 8192 / 8
                Text5 = 389 / 8
                Text4 = ((8192 / 8) * 0.76)
                Text6 = ((384 / 8) * 0.76)
            
            Case "16Mb"
                Text3 = 16384 / 8
                Text5 = 400 / 8
                Text4 = ((8192 / 8) * 0.76)
                Text6 = ((400 / 8) * 0.76)
        End Select
    Else
            Select Case Combo2.Text
            
                Case "256kbps"
                    Text3 = 256 / 8
                    Text5 = 128 / 8
                    Text4 = ((256 / 8) * 0.8)
                    Text6 = ((128 / 8) * 0.8)
                    
                Case "512kbps"
                    Text3 = 512 / 8
                    Text5 = 128 / 8
                    Text4 = ((512 / 8) * 0.8)
                    Text6 = ((128 / 8) * 0.8)
                    
                Case "2Mb"
                    Text3 = 2048 / 8
                    Text5 = 128 / 8
                    Text4 = ((2048 / 8) * 0.8)
                    Text6 = ((128 / 8) * 0.8)
                    
                Case "4Mb"
                    Text3 = 4096 / 8
                    Text5 = 256 / 8
                    Text4 = ((4096 / 8) * 0.8)
                    Text6 = ((256 / 8) * 0.8)
                    
                Case "8Mb"
                    Text3 = 8192 / 8
                    Text5 = 389 / 8
                    Text4 = ((8192 / 8) * 0.8)
                    Text6 = ((389 / 8) * 0.8)
            End Select
    End If
End Sub

Se não funcionar, anexa aí o projecto que é mais simples de resolver

Link to comment
Share on other sites

Bem, não funciona da forma que tu queres por uma razao muito simples. Tu tens If option1.Enable = True ... quando o que pretendes é verificar se está seleccionada ou nao. O .Enable permite saber se o objecto está Activo ou nao, ou seja, se o utilizador consegue ou não utiliza-lo. Altera o "Option1.Enable = True" para "Option1.Value = True"

Cumps

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.