VOLTAR RESULTADO DE SOMA

JOZEPHH 23/07/2014 00:25:07
#439751
Ola boa noite, estou em dificudade em fazer com que uma soma volte ao resultado anterior e ou anteriores:

2+2=4
4+2=6
6+1=7
quando eu clicar no botao uma vez ele volta pro resultado 6, se eu apertar o mesmo ele volta pra 4 e por ai vai.
Entao pensei em ir salvando os ultimos resultados em uma listbox, entao apertar o botao e ele ir retornando os valores, mas nao acertei fazer o codigo.
Desde ja agradeço.
JABA 23/07/2014 12:09:14
#439771
Resposta escolhida
Você pode guardar o resultado de cada operação num List, array, etc., e depois se basear no indice para saber a ordem em que foram feitos.

Exemplo:

dim vetor(3) as integer

vetor(0) = 2+2
vetor(1) = 4+2
vetor(2) = 6+1
PEGUDO 23/07/2014 15:12:25
#439781
Aí, irmão,
Vê se este exemplo aí te serve.
JABA 23/07/2014 20:00:16
#439795
Pegudo, seu código ficou muito extenso, daí eu dei uma melhorada.
O código desse projeto aqui só mostra os resultados das operações.
JABA 23/07/2014 20:47:35
#439797
Aqui está mostrando os operandos também na hora de avançar ou retroceder, confira aí.
JOZEPHH 23/07/2014 21:37:45
#439802
Ola mestres, desculpas mas uso o vb6 ainda, eh o que tenho, foi mal se postei na parte do forum errado, desde ja agradeço, obrigado!
JABA 23/07/2014 22:03:07
#439804
A ideia no primeiro comentário serve também para Vb6.
Encerre o tópico para não termos mais problemas, por favor!
JOZEPHH 24/07/2014 00:20:19
#439807
Preciso dele completinho, assim nao deu pra me entender ainda.
Aki meu codigo com a soma, depois de fazer algumas somas, preciso que ele volte resultado anteriores obrigado:

Private Sub Command1_Click()

Text1.Text = Format(CCur(Text1 + 20), [Ô]Currency[Ô])

End Sub
com a list1 ficaria otimo.
JABA 24/07/2014 01:21:30
#439808

Cara, estou sem o vb6, mas a lógica é parecido com isso aqui:

[ô]Você pode usar um array ou collection em vb6
Private lista As New List(Of String)
Private indice As Integer

Public Function Calcular(x As Decimal, y As Decimal) As Decimal
lista.Add(Cstring(x) & [Ô]@[Ô] & Cstring(y) & [Ô]@[Ô] & x+y)
indice = lista.Count - 1
Return x+y
End Function

Public Function GetOperando1() As Decimal
Return CDec(Split(lista(indice), [Ô]@[Ô])(0))
End Function

Public Function GetOperando2() As Decimal
Return CDec(Split(lista(indice), [Ô]@[Ô])(1))
End Function

Public Function GetResultado() As Decimal
Return CDec(Split(lista(indice), [Ô]@[Ô])(2))
End Function

Public Sub Avancar()
If indice < lista.Count - 1 Then indice = indice + 1
End Sub

Public Sub Retroceder()
If indice > 0 Then indice = indice - 1
End Sub

JOZEPHH 24/07/2014 10:33:41
#439815
Obrigado, mas não conseguir fazer rodar no vb6.
JOZEPHH 24/07/2014 11:31:26
#439820
Conseguir fazer funcionar com esse codigo aqui, mas ainda preciso fazer ele parar quando chegar no ultimo valor, para que nao fique limpo nem a list1 nem o text1., obrigado.

Private Sub Command1_Click()
Text1.Text = Format(CCur(Text1 + 10), [Ô]Currency[Ô])
List1.AddItem Text1.Text, 0

End Sub



Private Sub Command3_Click()
Text1.Text = List1.List(1)
List1.RemoveItem (0)
End Sub
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas