• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

AMMMMMS

Comparar duas listbox

8 mensagens neste tópico

Estou com um problema.

Preciso de comparar duas listbox..A listbox 1 é feita com uma lista ligada e eu preciso que ao aparecer determinado tipo(p.tipo) na listbox2, o item da listbox1 seja removido..

Por exemplo, se eu tiver na listbox1 (3hamburger) e na listbox2 (1 hamburger), entao tera que desaparecer um hamburger da listbox 1..é um bocado complicado de perceber mas espero pela vossa ajuda. 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens razão, está bastante confuso.

Dá mais exemplos para ver se entramos no quadro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu vou explicar o exercicio..è um restaurante em que temos varios tipos de pedidos..um deles é um hamburger...e na listbox 1 aparece: PEDIDO 1: 2hamburgers por exemplo..entretanto vai chegar da cozinha esse pedido..e vai aparecer numa lista box a dizer que (2 hamburger) estao feitos..entao significa que o pedido esta concluido e tem que ser removido da listbox 1 pra ser entregue ao cliente(neste caso, passar para outra textbox a dizer"pedidos entregues")..nao sei mesmo como explicar mais :/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Onde é que entra a comparação das Listbox?

Ou estou a "aparvalhar" e não estou a entender, ou podes melhorar bastante a explicação :dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o que o que eu quero é: quando aparecer na listbox 2 o mesmo tipo de comida que na listbox 1, ela seja identificada..dai a comparaçao.. Por exemplo, se na listbox 2 aparecer: "2 hamburger" e se eu na listbox 1 tiver um pedido com 2 hamburger, entao posso eliminar o pedido..é um exercicio bastant complexo pk envolve a cozinha e a caixa de um restaurante..a listbox 2 sao items adicionados que a cozinha manda..e quando a cozinha envia para a caixa elimina.se da caixa..nao sei como explicar de outra maneira o exercicio..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se bem percebi o que tu queres e fazer uma "pilha".

Pegando no caso do restaurante:

Vejamos, tens a listbox1 que contem todos os pedidos que sao efectuados pelos empregados de mesa. Cada pedido ira ter um numero.

E o que tu queres e quando um pedido é produzido esse mesmo pedido passe para a listbox2.

Nao sei se tens que fazer uma comparacao, o que me parece e que a cozinha selecciona o pedido que acabou de produzir na listbox1 e depois clica num botao (por exemplo) e remove-o da listbox1 e coloca-o na listbox2.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso assim já faz mais sentido.

Como achei piada ao desafio, tens aqui uma solução abstracta acabadinha de sair do forno.

Espero que consigas retirar algo que te dê luz na tua implementação.

Se quiseres testar, num projecto novo, substituís todo o código do form por esse abaixo e corres a aplicação.

O output sai na ImmediateWindow, por isso certifica-te de que a tens visível e limpa.

Estou e estamos cá todos para dúvidas B)

(o facto de não ter nenhum comentário é propositado)

Public Class Form1
    Private Pedidos As New List(Of Comida)
    Private Cozinha As New List(Of Comida)
    Private WithEvents RotinaDaCozinha As New Timer With {.Enabled = True, .Interval = 8000}

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        FazerPedido("Massa com esparguete", 1, 30)
        FazerPedido("Sopa de sopa", 1, 10)
        FazerPedido("Fettucini de coiratos", 1, 50)
        FazerPedido("Sanduba de queijo", 1, 5)
        FazerPedido("Empadão de empadas", 1, 45)
    End Sub

    Private Sub FazerPedido(ByVal Nome As String, ByVal Quantidade As Integer, ByVal TempoPreparacao As Integer)
        Dim C As New Comida
        C.Nome = Nome
        C.Quantidade = Quantidade
        C.TempoPreparacao = TempoPreparacao
        AddHandler C.EstouPronto, AddressOf PratoPronto
        Pedidos.Add(C)
    End Sub

    Private Sub PratoPronto(ByVal QualPrato As Comida)
        Debug.WriteLine(QualPrato.Nome & " acabou de ser preparado!")
        Cozinha.Remove(QualPrato)
    End Sub

    Private Sub RotinaDaCozinha_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles RotinaDaCozinha.Tick
        If Pedidos.Count = 0 And Cozinha.Count = 0 Then Debug.WriteLine("A cozinha não tem mais pratos em preparação") : Exit Sub
        If Pedidos.Count = 0 Then Debug.WriteLine("A cozinha não tem pedidos pendentes...") : Exit Sub

        Dim C As Comida = Pedidos(0)
        Debug.WriteLine(C.Nome & " iniciou a preparação")
        Cozinha.Add(C)
        C.IniciaPreparacao()
        Pedidos.Remove(C)
    End Sub
End Class

Public Class Comida
    Public Nome As String
    Public Quantidade As Integer
    Public TempoPreparacao As Integer
    Public Event EstouPronto(ByVal QuemEstaPronto As Comida)
    Private WithEvents TMR As New Timer With {.Enabled = False, .Interval = 1000}
    Private TempoPassado As Integer = 0

    Private Sub TMR_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TMR.Tick
        TempoPassado += 1
        If TempoPassado >= TempoPreparacao Then
            TMR.Enabled = False
            RaiseEvent EstouPronto(Me)
        End If
    End Sub

    Public Sub IniciaPreparacao()
        TempoPassado *= Quantidade
        TMR.Enabled = True
    End Sub
End Class

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito obrigado pela ajuda..sou um bocado inexperiente nisto pk apenas comecei a programar ha cerca de 3 meses e esta complicado..de qualquer maneira quando precisar digo..

0

Partilhar esta mensagem


Link 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