Jump to content
Daniela C

[Resolvido] Dúvida gestão de restaurante

Recommended Posts

Daniela C

Olá caros amigos , tudo bem  :) ? preciso da vossa ajuda...

Estou a fazer um trabalho em vb para  final de curso , ou seja , PAP.

Gostava que a partir de uma picture box que tem a sua legenda , ao clicar aparece-se na listview os dados sobre ela que estão na legenda (nome, preço). Juntamente anexo uma imagem para perceberem melhor.

imagemoje.png

Obrigado

Share this post


Link to post
Share on other sites
Andrepereira9

Olá Daniela C

Gostava que a partir de uma picture box que tem a sua legenda , ao clicar aparece-se na listview os dados sobre ela que estão na legenda (nome, preço). Juntamente anexo uma imagem para perceberem melhor.

Como é que meteste a legenda?. Criaste uma label a parte ou é alguma opção que a picturebox tem??


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Daniela C

Olá Daniela C

Como é que meteste a legenda?. Criaste uma label a parte ou é alguma opção que a picturebox tem??

Obrigado por responder, sim criei uma label a parte..

Share this post


Link to post
Share on other sites
Andrepereira9

Boas.

No evento .Click da PictureBox, podes ir buscar o valor da label a ela associada

Dim aux As String() = Split(Label1.Text, " -") ' Divide o texto da label1 em 2 partes, cortadas pelo -
ListView1.Items.Add(aux(0)) ' Adiciona o Nome do Prato
ListView1.Items.Add(aux(1)) ' Adiciona o Preço

Ou então, indicas quais os valores a apresentar para essa picture box

ListView1.Items.Add("Canja de Galinha") ' Adiciona o Nome do Prato
ListView1.Items.Add("1.20€") ' Adiciona o Preço


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Daniela C

Boas.

No evento .Click da PictureBox, podes ir buscar o valor da label a ela associada

Dim aux As String() = Split(Label1.Text, " -") ' Divide o texto da label1 em 2 partes, cortadas pelo -
ListView1.Items.Add(aux(0)) ' Adiciona o Nome do Prato
ListView1.Items.Add(aux(1)) ' Adiciona o Preço

Ou então, indicas quais os valores a apresentar para essa picture box

ListView1.Items.Add("Canja de Galinha") ' Adiciona o Nome do Prato
ListView1.Items.Add("1.20€") ' Adiciona o Preço

Muito obrigado era mesmo isto, mas agora queria que me aparecesse dois títulos (nome e preço) em que a canja aparecesse no nome e o preço da canja no preço.

Resumindo dividir por tabelas na mesma linha

Share this post


Link to post
Share on other sites
Andrepereira9

Peço desculpa por só te responder agora. Tive que me ausentar

Se ainda não conseguiste deixo aqui uma forma de fazer

'******************************************************************'
'Podes fazer isto nas propriedades da ListView no Separador View e separador Columns
'Ou então, mete este código fora do evento onde adicionas o preço, senão vai estar sempre a adicionar colunas

' Muda a visão para a visão de detalhes para veres os valores das colunas...
ListView1.View = View.Details
'Adiciona duas colunas ao ListView
ListView1.Columns.Add("Nome ")
ListView1.Columns.Add("Preço")
        '*******************************************************************'

'Adicona a linha com o Nome e Preço
ListView1.Items.Add(New ListViewItem(New String() {"Canja de Galinha", "1.20 €"}))


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Daniela C

Peço desculpa por só te responder agora. Tive que me ausentar

Se ainda não conseguiste deixo aqui uma forma de fazer

'******************************************************************'
'Podes fazer isto nas propriedades da ListView no Separador View e separador Columns
'Ou então, mete este código fora do evento onde adicionas o preço, senão vai estar sempre a adicionar colunas




---------



' Muda a visão para a visão de detalhes para veres os valores das colunas...
ListView1.View = View.Details
'Adiciona duas colunas ao ListView
ListView1.Columns.Add("Nome ")
ListView1.Columns.Add("Preço")
        '*******************************************************************'

'Adicona a linha com o Nome e Preço
ListView1.Items.Add(New ListViewItem(New String() {"Canja de Galinha", "1.20 €"}))

Muito obrigado por a sua disponibilidade. Tirando o resto das minhas duvidas, seria possivel por exemplo, criar uma nova coluna "Quantidade" e quando clicasse duas vezes na "canja" aparecia-me na quantidade o numero dois em vez de aparecer nas colunas duas vezes canja repetido? Obrigado pela sua compreensao

Share this post


Link to post
Share on other sites
Andrepereira9

Muito obrigado por a sua disponibilidade.

Podes tratar-me por tu. Dispenso Formalidades  ;):P

Private Sub ListView1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseClick
    ListView1.SelectedItems.Item(0).SubItems(2).Text += 1  '  SubItems(2), o 2 significa que é a 3º coluna que queremos mexer, mas como o index começa em 0, então temos de subtrair 1.
End Sub


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Daniela C

Podes tratar-me por tu. Dispenso Formalidades  ;):P

Private Sub ListView1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseClick
    ListView1.SelectedItems.Item(0).SubItems(2).Text += 1  '  SubItems(2), o 2 significa que é a 3º coluna que queremos mexer, mas como o index começa em 0, então temos de subtrair 1.
End Sub

Percebi a lógica, mas secalhar nao me expliquei bem, o que gostava que fizesse era por exemplo:

semttulobun.png

Cliquei 2 vezes na Canja, e gostava em vez de aparecer 2 vezes a canja aparece-se o numero 2 na "Quantidade" Percebeu?

Mais uma vez obrigado  :cheesygrin:

Share this post


Link to post
Share on other sites
Andrepereira9

Testei aqui e funcionou

Dim existe As Boolean = False
If ListView1.Items.Count = 0 Then
     ListView1.Items.Add(New ListViewItem(New String() {"Canja de Galinha", "1.20 €", "1"}))
Else
          For Each item As ListViewItem In ListView1.Items
               If item.Text.ToString = "Canja de Galinha" Then
                    ListView1.Items(item.Index).SubItems(2).Text += 1
                    existe = True
                    Exit For
               Else
                    existe = False
               End If
           Next

     If existe = False Then
          ListView1.Items.Add(New ListViewItem(New String() {"Canja de Galinha", "1.20 €", "1"}))
    End If

End If


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Daniela C

Testei aqui e funcionou

Dim existe As Boolean = False
If ListView1.Items.Count = 0 Then
     ListView1.Items.Add(New ListViewItem(New String() {"Canja de Galinha", "1.20 €", "1"}))
Else
          For Each item As ListViewItem In ListView1.Items
               If item.Text.ToString = "Canja de Galinha" Then
                    ListView1.Items(item.Index).SubItems(2).Text += 1
                    existe = True
                    Exit For
               Else
                    existe = False
               End If
           Next

     If existe = False Then
          ListView1.Items.Add(New ListViewItem(New String() {"Canja de Galinha", "1.20 €", "1"}))
    End If

End If

Era mesmo isto! Muito Obrigado foi uma grande ajuda, para a minha ultima duvida:

Tenho uma label por baixo da listview, como farei para que esteja sempre a fazer os calculos? Sobre o total que aparece na listview?

Dependendo do preço e da quantidade...

É que sou nova nesta linguagem e ainda estou a aprender, está a ser uma grande ajuda  ;)

Share this post


Link to post
Share on other sites
Andrepereira9

Em vez de estares a repetir o código por todas as Pictureboxes, e como eu não conheço nenhum evento da listview que detecte que foi alterado um valor via código, podes criar uma Função 'Actualiza_Preco' e depois é só chamares

 Private Function actualiza_preco()
Dim preco, quant, total As Double

For Each item As ListViewItem In ListView1.Items
     preco = Val(ListView1.Items(item.Index).SubItems(1).Text)
     quant = Val(ListView1.Items(item.Index).SubItems(2).Text)

      total += preco * quant

Next

Label2.Text = total.ToString + " €"
End Function

Depois para chamares a  basta escreveres o nome da função

Ex:

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
   actualiza_preco()
End Sub


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Daniela C

Em vez de estares a repetir o código por todas as Pictureboxes, e como eu não conheço nenhum evento da listview que detecte que foi alterado um valor via código, podes criar uma Função 'Actualiza_Preco' e depois é só chamares

 Private Function actualiza_preco()
Dim preco, quant, total As Double

For Each item As ListViewItem In ListView1.Items
     preco = Val(ListView1.Items(item.Index).SubItems(1).Text)
     quant = Val(ListView1.Items(item.Index).SubItems(2).Text)

      total += preco * quant

Next

Label2.Text = total.ToString + " €"
End Function

Depois para chamares a  basta escreveres o nome da função

Ex:

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
   actualiza_preco()
End Sub

Já está, Muito Obrigado por a sua ajuda, foi muito boa.

Estou bastante agradecida.  ;):P

Obrigado mais uma vez  :cheesygrin:

Share this post


Link to post
Share on other sites
Andrepereira9

De Nada  ;):P Sempre ás ordens  :cheesygrin:

PS:Este tópico é para VBA (Office,...)

O que estas a utilizar é VB.Net (Microsoft Visual Studio)

Se tiveres mais alguma dúvida, cria no seguinte quadro Quadro VB.Net


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Daniela C

De Nada  ;):P Sempre ás ordens  :cheesygrin:

PS:Este tópico é para VBA (Office,...)

O que estas a utilizar é VB.Net (Microsoft Visual Studio)

Se tiveres mais alguma dúvida, cria no seguinte quadro Quadro VB.Net

Pois, tem razão nem tinha reparado! Da próxima vez nao me enganarei!

Obrigado  :)

Share this post


Link to post
Share on other sites
Elrosnum

Boas tardes =]

Este tópico realmente salvou-me a vida porque estou a fazer uma coisa parecida...

Dim existe As Boolean = False
If ListView1.Items.Count = 0 Then
     ListView1.Items.Add(New ListViewItem(New String() {"Canja de Galinha", "1.20 €", "1"}))
Else
          For Each item As ListViewItem In ListView1.Items
               If item.Text.ToString = "Canja de Galinha" Then
                    ListView1.Items(item.Index).SubItems(2).Text += 1
                    existe = True
                    Exit For
               Else
                    existe = False
               End If
           Next

     If existe = False Then
          ListView1.Items.Add(New ListViewItem(New String() {"Canja de Galinha", "1.20 €", "1"}))
    End If

End If

Agora a minha pergunta é a seguinte, será que não é possivel adicionar mais em quantidade mas não a clicar na listview, mas sim ao clicar no botão por exemplo?

Obrigado desde já =]

Share this post


Link to post
Share on other sites
Andrepereira9

Sim. É só meter no evento .click de 1 botão :P


A informática chegou para resolver problemas que antes não existiam

Quem ri por último é porque está conectado a 52 Kbs.

Share this post


Link to post
Share on other sites
Elrosnum

Boas a todos =]

Inicialmente até foi o que fiz e até resultou, ou seja, eu ao clicar num botão ele adiciona sempre mais um à quantidade, mas depois depaei-me com um problema que é, ao clicar num outro botão ele simplesmente não adiciona =X

Um bocado estranho mas não consegui resolver...

O que fiz depois foi, meter na mesma no evento click da listview e clicava lá, tudo bem, tbm funca, mas por exemplo eu como tenho 32 botões nesse form, cada um tem o seu preço e se clico num outro botão adiciona o outro prato, mas se quiser adicionar 1 na quantidade de um só prato, ele adiciona-me nas duas =X

O meu código é este:

Dim existe As Boolean = False
        If ListView1.Items.Count = 0 Then
            ListView1.Items.Add(New ListViewItem(New String() {"Sopa de Peixe", "Sopas", " 1 ", "2.50 €"}))
            actualiza_preco()
        Else
            For Each item As ListViewItem In ListView1.Items
                If item.Text.ToString = "Sopa de Peixe" Then
                    ListView1.Items(item.Index).SubItems(2).Text += 1
                    existe = True
                    actualiza_preco()
                ElseIf item.Text.ToString = "Sopa de Tomate" Then
                    ListView1.Items(item.Index).SubItems(2).Text += 1
                    existe = True
                    actualiza_preco()
                ElseIf item.Text.ToString = "Sopa de Legumes" Then
                    ListView1.Items(item.Index).SubItems(2).Text += 1
                    existe = True
                    actualiza_preco()
                Else
                    existe = False
                End If
            Next

Espero ter-me feito entender =]

Cumpz...

Share this post


Link to post
Share on other sites
miguel55

boas,

alguém me pode dizer na imagem, o que está escrito por cima das picture box ( label's ) ?

obrigado.

Share this post


Link to post
Share on other sites
NunoDinis

Painel de Reservas - Ementa - Balcão - Empregados - ... - ... - Caixa Diária - Sair - ... - Bebidas - Fechar... - Imprimir ...

Hard stuff...


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
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

×
×
  • 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.