miguel55 Posted May 21, 2013 at 01:41 PM Report #508215 Posted May 21, 2013 at 01:41 PM (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 May 21, 2013 at 01:57 PM by ribeiro55
ribeiro55 Posted May 21, 2013 at 01:58 PM Report #508217 Posted May 21, 2013 at 01:58 PM Somar o quê? Tens de te explicar melhor... 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"
miguel55 Posted May 21, 2013 at 02:21 PM Author Report #508220 Posted May 21, 2013 at 02:21 PM 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.
ribeiro55 Posted May 21, 2013 at 02:53 PM Report #508226 Posted May 21, 2013 at 02:53 PM (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 May 21, 2013 at 02:55 PM 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"
miguel55 Posted May 21, 2013 at 03:07 PM Author Report #508229 Posted May 21, 2013 at 03:07 PM (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 May 21, 2013 at 03:28 PM by ribeiro55
ribeiro55 Posted May 21, 2013 at 03:31 PM Report #508235 Posted May 21, 2013 at 03:31 PM 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"
miguel55 Posted May 21, 2013 at 03:42 PM Author Report #508241 Posted May 21, 2013 at 03:42 PM 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!)
ribeiro55 Posted May 21, 2013 at 03:48 PM Report #508243 Posted May 21, 2013 at 03:48 PM (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 May 21, 2013 at 03:51 PM 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"
bioshock Posted May 22, 2013 at 02:17 PM Report #508345 Posted May 22, 2013 at 02:17 PM 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
miguel55 Posted May 23, 2013 at 08:07 AM Author Report #508448 Posted May 23, 2013 at 08:07 AM 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?
bioshock Posted May 23, 2013 at 08:24 AM Report #508459 Posted May 23, 2013 at 08:24 AM (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 May 23, 2013 at 08:25 AM by bioshock
miguel55 Posted May 23, 2013 at 09:07 AM Author Report #508473 Posted May 23, 2013 at 09:07 AM 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?
bioshock Posted May 23, 2013 at 09:45 AM Report #508481 Posted May 23, 2013 at 09:45 AM Aproveitas o código que te foi dado e adicionas ou removes de uma listview (por exemplo) os produtos. ListView1.Items.Add(DirectCast(sender, Checkbox).Tag.ToString()) http://www.macoratti.net/vbn_lstv.htm
ribeiro55 Posted May 23, 2013 at 09:59 AM Report #508493 Posted May 23, 2013 at 09:59 AM https://wiki.portugal-a-programar.pt/dev_net/vb.net/listviews_36_utilidades_directas/ 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"
bioshock Posted May 23, 2013 at 10:02 AM Report #508494 Posted May 23, 2013 at 10:02 AM Porque foi o 1º link no google e porque não fazia ideia que havia esse artigo na wiki.
Nelson Sousa Posted May 23, 2013 at 02:03 PM Report #508551 Posted May 23, 2013 at 02:03 PM 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
Tiago Simões Marques Posted May 26, 2013 at 10:29 PM Report #509076 Posted May 26, 2013 at 10:29 PM (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 May 26, 2013 at 10:29 PM by Tiago Simões Marques Tiago Simões Marques
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now