Jump to content

Recommended Posts

Posted (edited)

como se soma este codigo ?

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
       Dim uni As Decimal


       uni = Val(InputBox("Número de unidades: "))
       TextBox1.Text = uni * Val(CheckBox1.Tag)

   End Sub

   Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
       Dim uni As Decimal


       uni = Val(InputBox("Número de unidades: "))
       TextBox1.Text = uni * Val(CheckBox2.Tag)
Edited by ribeiro55
Posted

Somar o quê?

Tens de te explicar melhor...

O objectivo era somar a checkbox 1 com a checkbox 2, ambas têm valores previamente atribuidos através da "tag".

Ao selecionar essas 2 checkbox's o valor total da soma das duas apareceria através de uma textbox ou através de uma msgbox.

Posted (edited)

Só se estiverem as duas seleccionadas?

Vou presumir que só queres somar se estiver seleccionada.

Se os valores estão na Tag e queres somar sempre os dois, porque não fazê-lo no mesmo sítio e ao mesmo tempo?

    Private Sub CheckBoxes_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged,CheckBox2.CheckedChanged
       Dim uni As Decimal
       uni = Val(InputBox("Número de unidades: "))
       Dim tmpVal as Decimal = 0
       If CheckBox1.Checked Then tmpVal+=(uni*Val(CheckBox1.Tag))
       If CheckBox2.Checked Then tmpVal+=(uni*Val(CheckBox2.Tag))
       TextBox1.Text = tmpVal

   End Sub

No entanto, informo-te desde já que tens aí péssimas práticas e fraquíssima "resistência" a erro.

Edited by ribeiro55

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"

Posted (edited)

Só se estiverem as duas seleccionadas?

Vou presumir que só queres somar se estiver seleccionada.

Se os valores estão na Tag e queres somar sempre os dois, porque não fazê-lo no mesmo sítio e ao mesmo tempo?

    Private Sub CheckBoxes_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged,CheckBox2.CheckedChanged
       Dim uni As Decimal
       uni = Val(InputBox("Número de unidades: "))
       Dim tmpVal as Decimal = 0
       If CheckBox1.Checked Then tmpVal+=(uni*Val(CheckBox1.Tag))
       If CheckBox2.Checked Then tmpVal+=(uni*Val(CheckBox2.Tag))
       TextBox1.Text = tmpVal

   End Sub

No entanto, informo-te desde já que tens aí péssimas práticas e fraquíssima "resistência" a erro.

O código está funcional contudo ele está a somar e subtrair valores ao mesmo tempo 😞

Edited by ribeiro55
Posted

Só se estiver seleccionada.

Novamente, não faço ideia de como estás a utilizar as checkboxes.

Se não interessa se está checked ou não, e interessa saber qual foi alterada, não estou a perceber porque usaste checkboxes e não botões, por exemplo...

Tens de explicar melhor o contexto da utilização. Já percebemos que não é um comportamento padrão.

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"

Posted
Em 21/05/2013 às 16:31, ribeiro55 disse:

Só se estiver seleccionada.

Novamente, não faço ideia de como estás a utilizar as checkboxes.

Se não interessa se está checked ou não, e interessa saber qual foi alterada, não estou a perceber porque usaste checkboxes e não botões, por exemplo...

Tens de explicar melhor o contexto da utilização. Já percebemos que não é um comportamento padrão.

http://imageshack.us/a/img94/4512/asdpch.jpg

Sendo isto um forma para seleção de refeições/aperitivos, necessito de somar as doses e unidades dos mesmos.

Então aconselhas-me a realizar isto de que forma? (Sou iniciante :c, todas as criticas e soluções são bem vindas e aceites!)

Posted (edited)

Já temia alguma coisa desse género.

Não podes fazer isso dessa forma.

É necessário existir consciência não só do valor unitário (presumo que seja o que está na Tag) mas também da quantidade.

Aconselho-te a espreitares a nossa Wiki, nomeadamente o artigo sobre Estruturas, Dictionary(Of) e talvez também o artigo da ListView.

Edited by ribeiro55

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"

Posted

Se percebi bem a questão, tu estás-lhe a dar uma solução válida, só tem é de haver uns ajustes.

Public Class Form1
Private valor As Double = 0.0
Private Sub checkboxs_changed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged
	If (DirectCast(sender, CheckBox).Checked = False) Then
		valor -= DirectCast(sender, CheckBox).Tag
	Else
		valor += DirectCast(sender, CheckBox).Tag
	End If
	Label1.Text = "Valor: " & valor
End Sub
End Class
Posted

Se percebi bem a questão, tu estás-lhe a dar uma solução válida, só tem é de haver uns ajustes.

Public Class Form1
Private valor As Double = 0.0
Private Sub checkboxs_changed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged
	If (DirectCast(sender, CheckBox).Checked = False) Then
		valor -= DirectCast(sender, CheckBox).Tag
	Else
		valor += DirectCast(sender, CheckBox).Tag
	End If
	Label1.Text = "Valor: " & valor
End Sub
End Class

 Private Sub CheckBoxes_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged
    valor = Val(InputBox("Numero unidades: "))
    If (DirectCast(sender, CheckBox).Checked = False) Then
	    valor -= DirectCast(sender, CheckBox).Tag
    Else
	    valor += DirectCast(sender, CheckBox).Tag
    End If
    TextBox1.Text = "Valor: " & valor

   End Sub

Ok a este código acrescentei apenas a linha da inputbox que pergunta ao utilizador a quantiade/unidade que deseja. Contudo se designar que deseja apenas 1 unidade o cálculo é executado pelo programa de uma forma correta mas se designar que deseja 2 unidades ,o programa de um preço de 0,50 € uni. diz que passará a ser de 2,5€.

Como posso fazer para resolver a situação?

Posted (edited)

Não podes fazer da forma que estás a fazer. A variável valor tem que ser pública como eu coloquei, porque se por algum momento alterares os valores, nunca vais conseguir ter o valor actual - a menos que insiras o valor actual em algum lado..

Public Class Form1
	Private valor As Double = 0.0
	Private Sub checkboxs_changed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged
               Dim unidades As Integer = Val(InputBox("Numero unidades: "))
			If (DirectCast(sender, CheckBox).Checked = False) Then
					valor -= unidades * DirectCast(sender, CheckBox).Tag
			Else
					valor += unidades * DirectCast(sender, CheckBox).Tag
			End If
			Label1.Text = "Valor: " & valor
	End Sub
End Class

Não testei mas deve funcionar.

Edited by bioshock
Posted

Não podes fazer da forma que estás a fazer. A variável valor tem que ser pública como eu coloquei, porque se por algum momento alterares os valores, nunca vais conseguir ter o valor actual - a menos que insiras o valor actual em algum lado..

Public Class Form1
	Private valor As Double = 0.0
	Private Sub checkboxs_changed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged
			Dim unidades As Integer = Val(InputBox("Numero unidades: "))
			If (DirectCast(sender, CheckBox).Checked = False) Then
					valor -= unidades * DirectCast(sender, CheckBox).Tag
			Else
					valor += unidades * DirectCast(sender, CheckBox).Tag
			End If
			Label1.Text = "Valor: " & valor
	End Sub
End Class

Não testei mas deve funcionar.

Working ^^, obrigado pela ajuda!

Já agora se me puderem ajudar apenas em mais um pequeno detalhe, queria fazer a listagem dos produtos que foram selecionados e sua respectiva quantidade. Qual a forma mais simples que tenho para o poder fazer?

Posted

Já temia alguma coisa desse género.

Não podes fazer isso dessa forma.

É necessário existir consciência não só do valor unitário (presumo que seja o que está na Tag) mas também da quantidade.

Aconselho-te a espreitares a nossa Wiki, nomeadamente o artigo sobre Estruturas, Dictionary(Of) e talvez também o artigo da ListView.

Eu iria por essa dica.

Imagine se ao final a pessoa queira uma lista do que foi consumido?

Numa solução também não muito "elegante", talvez fosse o caso de trocar-se as checkboxs por textbox onde se colocaria as quantidades, e, só se consideraria as de valor >0(zero).

O mais correto mesmo seria utilizar-se de 2 tabelas, uma principal(Comanda, Ordem de Atendimento, etc,), e, outra tabela com os detalhes(itens) tais como preço, nome, quantidade de cada produto da comanda.

Ah..Estou supondo que você deseja controlar o consumo de clientes num restaurante.

Um Abraço,

Nelson Sousa

Posted (edited)

Eu iria por essa dica.

Imagine se ao final a pessoa queira uma lista do que foi consumido?

Numa solução também não muito "elegante", talvez fosse o caso de trocar-se as checkboxs por textbox onde se colocaria as quantidades, e, só se consideraria as de valor >0(zero).

O mais correto mesmo seria utilizar-se de 2 tabelas, uma principal(Comanda, Ordem de Atendimento, etc,), e, outra tabela com os detalhes(itens) tais como preço, nome, quantidade de cada produto da comanda.

Ah..Estou supondo que você deseja controlar o consumo de clientes num restaurante.

Eu concordo, deves ter varias tabelas, ate porque depois se quiseres aumentar funcionalidades ao software, tens mais por onde pegar.

Por exemplo para o caso da restauração dar para colocar produtos por mesas.

Espero ter ajudado.

Edited by Tiago Simões Marques

Tiago Simões Marques

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.