Página 1 de 1

Selecionar/Desselecionar itens numa ListBox e reordenar iten

Enviado: 06 Set 2019 às 10:39
por JCabral
Boa tarde

No seguimento de um post anterior, venho pedir ajuda para um problema que não estou a conseguir resolver.

Assim anexo um exemplo onde explico o que o exemplo já faz e o que está a faltar.

No código a parte de desseleccionar, o que não sei fazer, está em " Case False ' Desslecionei - ONDE TENHO DUVIDAS"

Obrigado desde já pela ajuda

Jorge Cabral

Re: Selecionar/Desselecionar itens numa ListBox e reordenar

Enviado: 07 Set 2019 às 14:17
por eduardogrigull
Olá, veja se resolve... Aqui parece ter funcionado... Jogue o código no "Case False"
Ficou meio longo mas funciona
Código: Selecionar todos
'Procurar o registro nos Labels
            For k = 1 To 4
                
                If RECURSOS.lstbFO.List(RECURSOS.lstbFO.ListIndex) = Me.Controls("lblRec" & k + 1).Caption Then
                    RecData(k + 1, 0) = Empty
                    RecData(k + 1, 1) = Empty
                    Me.Controls("lblRec" & k + 1).Caption = Empty
                    Me.Controls("ComboBox" & k + 1).Value = Empty
                    GoTo Proximo
                End If
                
            Next
Proximo:
            'Reordenar matriz e labels
                'Arrumar matriz
                If RecData(2, 0) = Empty Then
                    For k = 2 To 4
                        RecData(k, 0) = RecData(k + 1, 0)
                        Me.Controls("lblRec" & k).Caption = Me.Controls("lblRec" & k + 1).Caption
                    Next
                    RecData(5, 0) = Empty
                    Me.Controls("lblRec5").Caption = Empty
                    
                    For k = 2 To 4
                        RecData(k, 1) = RecData(k + 1, 1)
                        Me.Controls("ComboBox" & k).Value = Me.Controls("ComboBox" & k + 1).Value
                    Next
                    RecData(5, 1) = Empty
                    Me.Controls("ComboBox5").Value = Empty
                    
                ElseIf RecData(3, 0) = Empty Then
                    For k = 3 To 4
                        RecData(k, 0) = RecData(k + 1, 0)
                        Me.Controls("lblRec" & k).Caption = Me.Controls("lblRec" & k + 1).Caption
                    Next
                    RecData(5, 0) = Empty
                    Me.Controls("lblRec5").Caption = Empty
                    
                    For k = 3 To 4
                        RecData(k, 1) = RecData(k + 1, 1)
                        Me.Controls("ComboBox" & k).Value = Me.Controls("ComboBox" & k + 1).Value
                    Next
                    RecData(5, 1) = Empty
                    Me.Controls("ComboBox5").Value = Empty
                
                ElseIf RecData(4, 0) = Empty Then
                    
                    RecData(4, 0) = RecData(5, 0)
                    RecData(5, 0) = Empty
                    Me.Controls("lblRec4").Caption = Me.Controls("lblRec5").Caption
                    Me.Controls("lblRec5").Caption = Empty
                    RecData(4, 1) = RecData(5, 1)
                    RecData(5, 1) = Empty
                    Me.Controls("ComboBox4").Value = Me.Controls("ComboBox5").Value
                    Me.Controls("ComboBox5").Value = Empty
                
                ElseIf RecData(5, 0) = Empty Then
                    RecData(5, 0) = Empty
                    Me.Controls("lblRec5").Caption = Empty
                    RecData(5, 1) = Empty
                    Me.Controls("ComboBox5").Value = Empty
                End If

Selecionar/Desselecionar itens numa ListBox e reordenar iten

Enviado: 09 Set 2019 às 09:22
por JCabral
Obrigado eduardogrigull,

A partir do seu código, que foi muito inspirador já que não estava a conseguir sair deste problema, fiz algumas simplificações que parecem estar a funcionar.
Não sei se será possível simplificar mais ainda, deixo isso para os outros Gurus daqui do forum :D .
Muito obrigado.
Código: Selecionar todos
'Procurar o registro nos Labels
            For k = 2 To 5
               
                If RECURSOS.lstbFO.List(RECURSOS.lstbFO.ListIndex) = Me.Controls("lblRec" & k).Caption Then
                    RecData(k, 0) = Empty
                    RecData(k, 1) = Empty
                    Me.Controls("lblRec" & k).Caption = Empty
                    Me.Controls("ComboBox" & k).Value = Empty
 
'Reordenar matriz e labels
 
                    If k < 5 Then
                        For ik = k To 4
                            RecData(ik, 0) = RecData(ik + 1, 0)
                            Me.Controls("lblRec" & ik).Caption = Me.Controls("lblRec" & ik + 1).Caption
                            RecData(ik, 1) = RecData(ik + 1, 1)
                            Me.Controls("ComboBox" & ik).Value = Me.Controls("ComboBox" & ik + 1).Value
                        Next ik
                    End If
                    
                    RecData(5, 0) = Empty
                    Me.Controls("lblRec5").Caption = Empty
                    RecData(5, 1) = Empty
                    Me.Controls("ComboBox5").Value = Empty
                    Exit Sub
                    
                End If

Selecionar/Desselecionar itens numa ListBox e reordenar iten

Enviado: 09 Set 2019 às 10:44
por eduardogrigull
Ficou bem melhor... Acho que mais simples não fica. Eu tentei fazer o mais rápido possível, ai acontece de o código ficar longo kkk :D