Jump to content

Comparar duas listbox


AMMMMMS
 Share

Recommended Posts

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. 

Link to comment
Share on other 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 :/

Link to comment
Share on other 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..

Link to comment
Share on other 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.

Link to comment
Share on other 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

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

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.