login  Naam:   Wachtwoord: 
Registreer je!
 Forum

rekenmachine (Opgelost)

Offline kickasgamer - 02/01/2008 19:51
Avatar van kickasgamerPHP ver gevorderde ik ben visual basic aan het leren, en een vriend van mij heeft me een "opdracht" gegeven. Een rekenmachine maken

nu heb ik een vraag, ik heb als de layout gemaakt een tekst box en alle knopjes

[IMG]http://img220.imageshack.us/img220/3707/formto9.jpg[/IMG]

maar nu hoe ga ik alles afhandelen ?
dat is waar ik vast zit en moet dus op "=" gedrukt worden maar hoe gaat de verwerking dan ?

liefst een uitleg met tips en voorbeelden en geen volledige code (zodat ik ook leer hoe alles werkt ) of verwijs naar tutorials en en uitleg bv

alvast bedankt 

66 antwoorden

Gesponsorde links
Offline Flex1986 - 02/01/2008 20:01
Avatar van Flex1986 Gouden medaille

Senior Member
http://www.goog...=firefox-a

astublieft
Offline Abbas - 02/01/2008 20:08
Avatar van Abbas Gouden medaille

Crew .NET
Kijk eens bij mijn tutorials, daar staat er een over het begin met Forms. Bij een van de uitgebreidere voorbeelden staat een mini - rekenmachine. Misschien dat je daar iets mee bent. KLIK voor de tutorial! 
Offline Bart - 02/01/2008 20:10
Avatar van Bart PHP expert Nog makkelijker?
http://www.tuto...content.12
Offline gerits - 02/01/2008 20:14 (laatste wijziging 02/01/2008 20:16)
Avatar van gerits Lid je maakt een
public getal1 as integer
public getal2 as integer
public operator as char

en dan bij op =-knop
dim uitkomst as integer
select operator
case +
uitkomst = getal1 + getal2

en zo verder

en dan kan je nog gaan controlere of getal1 al ingevuld is en dan getal1 gelijkstelle aan uitkomst zoda ge een 3de of zelfs 4de getal er kan bij bewerken

voor het gebruik van de meeste vb.net mogelijkhede:
http://www.drea..._sheet.pdf
altijd makkelijk om bij te hebben...
Offline Abbas - 02/01/2008 20:23
Avatar van Abbas Gouden medaille

Crew .NET
Citaat:
Nog makkelijker?
Hier maak je al gebruik van functies. Hij is nog maar net bezig met VB.NET dus denk ik dat je het meer basic nog moet houden hoor. 
Offline kickasgamer - 02/01/2008 20:43
Avatar van kickasgamer PHP ver gevorderde jadie tutorial had ik gedaan, en dat ging goed, maar er zijn een paar verschillen:
- nu gebruik ik alleen maar buttons en egen invoer textboxen
- nu ben ik ook niet zeker hoeveel getallen er gaan zijn aangezien de gebruiker nu de controle heeft hoeveel invoer hij geeft
Offline Abbas - 02/01/2008 20:47
Avatar van Abbas Gouden medaille

Crew .NET
Heb je mn tutorial bekeken? Hier wordt vrij eenvoudig gewerkt. Is er iets dat je nog niet snapt?
Offline kickasgamer - 02/01/2008 20:49
Avatar van kickasgamer PHP ver gevorderde nu moet ik de invoer krijgen van buttons en niet van textboxen (werkt dat het zelfde of niet ?)

en in de tutorial is het een rekenmachine met 2 text boxen, dus maximaal 2 getallen. maar nhu met die buttons enz, kan de gebruiker meer dan 2 getallen geven

hoe controleer ik dat ?
Offline Stijn - 02/01/2008 21:34
Avatar van Stijn PHP expert In visual studio moet je gewoon dubbelklikken op je knop en dan wordt er een even routine gemaakt. Dus als je gaat klikken op die knop dan wordt die routine (code) uitgevoerd.

Dus als je dubbelklikt op de knop 1 en je zet in je code dat de uitkomst verhoogt moet worden met 1, dan gaat hij dat uitvoeren als je op 1 klikt.
Offline Soebam - 02/01/2008 21:54
Avatar van Soebam HTML ver gevorderde Mocht je interesse hebben, mijn eerste VB programma was ook een grafische rekenmachine en ik heb de source en executable enzo ooit online gezet, weet niet meer waar voor. Maar hier staan ze nog:


http://soebam.runningrangers.net/rekenmachine.zip

Misschien heb je er wat aan, maar let op dit is geen goede voorbeeld code (neem ik aan), want het was mijn eerst programma, zonder tutorial ofzo, en ik ben niet echt een programmeur...
Offline kickasgamer - 02/01/2008 22:00 (laatste wijziging 03/01/2008 11:14)
Avatar van kickasgamer PHP ver gevorderde @stijn1989: ja maar ik heb niet alleen optellen in mijn script ook *,/,- dus ik weet niet goed hoe ik de afhandeling moet gaan doen + het kunnen ook getallen zijn zoals 1482, en dan zou het niet correct zijn om bij de uit komst 1, 4, 8 en 2 op te tellen
@soebam: zeer interessant ik ga het ook direct bekijken ik hoop dat ik er iets va kan opsteken, maar alvast bedankt 

ik heb de zip uitgepakt maar er zitten allemaal onbekende bestanden in, ondanks dat ik visual basic 2008 express heb geinstaleert

EDIT: vraag is opgelost 
EDIT2: ik heb wel nog een nieuw vraagje, hoe maak ik een waarde leeg, want als ik reken en ik heb een uitkomst met ik de 2 waardes leeg maken zodat ik met andere getallen kan gaan rekenen, hoe doe ik dat ?
Offline Abbas - 03/01/2008 11:20 (laatste wijziging 03/01/2008 11:34)
Avatar van Abbas Gouden medaille

Crew .NET
Vrij logisch, volg even mee. We gaan je code even af:

1. Je drukt eender welk getal in en dit komt in het tekstvak
2. Je drukt op "+"
3. Bij de variabele "totaal" wordt het getal vanuit het tekstvak bijgeteld
4. Je drukt een nieuw getal in
5. Je drukt op "="
6. ??? Waar tel je dat laatste getal er nog bij ???

Doe ook nog een optelling van wat er in het tekstvak staat als je op "=" klikt.

  1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  2. totaal = totaal + Val(TextBox1.Text)
  3. TextBox1.Clear()
  4. End Sub
  5.  
  6. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
  7. 'Hier nog een keer optellen
  8. totaal = totaal + Val(TextBox1.Text)
  9. TextBox1.Text = totaal.ToString()
  10. End Sub

Hopelijk is het duidelijk! 

Antwoord op je EDIT2:

Ik heb ooit eens het Windows-rekenmachine nagemaakt. Ik vond dat ook een vervelend stuk en heb het eenvoudig opgelost. Misschien niet de mooiste manier maar het werkt. Je plaatst "onder" je tekstvak een label en als je op "=" klikt zorg je dat het label zichtbaar wordt en het tekstvak niet. In feite achter dus. Je maakt bij het klikken op "=" je tekstvak leeg en plaatst het resultaat in het label, dit mag ook een ander tekstvak zijn.

  1. Public Class Form1
  2.  
  3. Dim totaal As Integer
  4.  
  5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  6. TextBox2.Visible = False
  7. TextBox1.Visible = True
  8. TextBox1.Text &= 1
  9. End Sub
  10.  
  11. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  12. TextBox2.Visible = False
  13. TextBox1.Visible = True
  14. TextBox1.Text &= 3
  15. End Sub
  16.  
  17. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  18. totaal = totaal + Val(TextBox1.Text)
  19. TextBox1.Clear()
  20. End Sub
  21.  
  22. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
  23. totaal = totaal + Val(TextBox1.Text)
  24. TextBox2.Text = totaal.ToString()
  25. totaal = 0
  26. TextBox1.Clear()
  27. TextBox1.Visible = False
  28. TextBox2.Visible = True
  29. End Sub
  30. End Class


Ik heb rap iets ineengeflapt en zo ziet ongeveer de code eruit. Bij het klikken op de "=" bereken je het totaal, zet die in het tweede tekstvak en maakt hem visible, het eerste tekstvak niet-visible en leeg en zet je totaal op nul. Bij het klikken van een getal begin je gewoon opnieuw. 
Offline kickasgamer - 03/01/2008 11:46
Avatar van kickasgamer PHP ver gevorderde bedankt voor de uitleg, na een klein beetje dnk werk was ik al zelf bij de eerst oplossing gekomen, maar is het niet gewoon mogelijk om bv $getal1 = "" te doen zoals bij php?

want nu ging het zo 1 + 1 = 2 --> +1 (was dan 1+1+1+1= 4)
dus ik zou gewoon een lege waarde moeten hebben

als het echt niet zou gaan gebruik ik wel de werkzijze van jou titjes

maar al bedankt voor al de uitleg 
Offline Abbas - 03/01/2008 11:56
Avatar van Abbas Gouden medaille

Crew .NET
Ik zet totaal toch ook terug op 0. Maar je wil je resultaat laten zien dus kan je niet de waarde van het tekstvak leegmaken. Je moet zorgen dat je tekstvak leeg is en toch je resultaat in dat vak kunnen laten zien. Wat je ook kan doen is wanneer je op "=" klikt een boolean op True zetten en wanneer je op een getal-knop klikt kijken of de boolean True of False is en als het True is eerst het tekstvak leegmaken en anders gewoon doen wat je al deed.
Offline kickasgamer - 03/01/2008 12:02
Avatar van kickasgamer PHP ver gevorderde ik denk dat ik het dan gewoon zo ga doen,
*gebruiker klikt obv op nummer 1
-nummer 1 verschijnt
- de "+" wordt ingedrukt en nummer 1 verdwijnt
- nummer 2 wordt in gedrukt en de + verdwijnt
- er wordt op "=" gedrukt en nummer 2 verdwijnt
- de uitkomst verschijnt en nummer 1 wordt gelijk gesteld aan 0 zodat ik kan verder rekenen

maar ik vraag me nu af of dit normaal gaat werken
Offline Abbas - 03/01/2008 12:08
Avatar van Abbas Gouden medaille

Crew .NET
En als je nu op een getal klikt komt dat bij de uitkomst er bij, niet opgeteld maar ernaast. Stel in je tekstvak staat 12 als uitkomst en je zet totaal op 0 en al wat je wilt. Toch als je dan nu op 3 klikt komt er in het tekstvak 123 te staan! 
Offline kickasgamer - 03/01/2008 13:45 (laatste wijziging 03/01/2008 13:58)
Avatar van kickasgamer PHP ver gevorderde ja maar ik werk met 2 waardes he totaal 2 waar de uitkomst instaat en totaal1 (die ik leeg maar en waar het volgende getaal instaat

werkt dat dan niet ?
Offline Abbas - 03/01/2008 14:10
Avatar van Abbas Gouden medaille

Crew .NET
Nee want het resultaat staat in het tekstvak en kan je niet leegmaken. Maar als je het dan niet leegmaakt en opnieuw een getal invoert zal dat getal bij in het tekstvak komen zoals ik daarnet al zei. Met hoeveel variabelen je ook werkt, probeer maar! 
Offline kickasgamer - 03/01/2008 14:16
Avatar van kickasgamer PHP ver gevorderde tja ik ben nu het een en ander nog aan het proberen ja 

maar ik maak zowiezo mijn textbox (display) leeg via deze functie
  1. display.Clear()
Offline Abbas - 03/01/2008 14:38
Avatar van Abbas Gouden medaille

Crew .NET
Ok, en hoe ga je het resultaat laten zien? 
Offline kickasgamer - 03/01/2008 14:43
Avatar van kickasgamer PHP ver gevorderde ja eerst wordt het resultaat getoont dat is dan totaal2, als dan op de volgende bewerking wordt geduwd (bv + of iets anders) wordt eerst het vakje leeg gemaakt

zo werkt het toch he 
Offline Abbas - 03/01/2008 14:49
Avatar van Abbas Gouden medaille

Crew .NET
Hetgeen je nu zegt had je daarvoor al in je code, zelfs zonder die tweede variabele (totaal2). Mar wat als je dan na op "=" gedrukt te hebben opnieuw een getal ingeeft om een nieuwe berekening te doen, dus niet terug eender welke bewerking? 
Offline kickasgamer - 03/01/2008 14:55
Avatar van kickasgamer PHP ver gevorderde ja ik heb dus het idee om ook met -, x, / te werken laten vallen. anders werd het veel te complex. Maar nu moet ik nog juist zie op te lossen dat ik geowon kan verder rekenen
Offline Abbas - 03/01/2008 15:05
Avatar van Abbas Gouden medaille

Crew .NET
Nee nee je moet het idee niet laten vallen, je bent goed op weg! Alle begin is wat moeilijk. Doe het eerst alleen met + en dan de rest er bij, dat is gemakkelijker om te doen. En doe het dan zoals ik al zei: als er op "=" geklikt wordt zet je een boolean op true en als er dan op een getal geklikt wordt zet je het tekstvak leeg, zo niet doe je het zoals je het al had. Als het niet lukt geef ik je m'n volledige code met commentaar erbij. Maar ik wil dat je eerst even zelf nadenkt en probeert, zo leer je het het best! 
Offline kickasgamer - 03/01/2008 15:17 (laatste wijziging 03/01/2008 15:47)
Avatar van kickasgamer PHP ver gevorderde ja zeker als ik zelf zoek gaat leer je het beter, ik ga nu dan proberen al eerst met die bolean enz en daarna zie ik wel wat ik doe 

EDIT: wat doe ik verdeer met die bolean, ikz et die op true en moet ik die dan ergens controleren. Ik dacht een controle te plaatsen na een button click
Offline Abbas - 03/01/2008 15:59
Avatar van Abbas Gouden medaille

Crew .NET
Ja, bij het klikken van de "="-knop zet je die op true en als je dan op een getal-knop klikt kijk je of die op true staat. Zo ja, maak je je tekstvak leeg. Zo nee, doe je niets.
Offline kickasgamer - 03/01/2008 18:14
Avatar van kickasgamer PHP ver gevorderde nu is mijn code zo, is dat goed ?
  1. Private Sub nr0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nr0.Click
  2. If verder_nieuw = True Then
  3. display.Clear()
  4. End If
  5.  
  6. display.Text = display.Text & nr0.Text
  7. End Sub
Offline Abbas - 03/01/2008 18:28
Avatar van Abbas Gouden medaille

Crew .NET
Ja, en regel 2-4 zet je bij elke getal-knop! Goed op weg...
Offline kickasgamer - 03/01/2008 18:31 (laatste wijziging 03/01/2008 18:39)
Avatar van kickasgamer PHP ver gevorderde ok, thanks effe verder denken dan ;)

EDIT: alles werkt nu met die boolean waarde, wat zou ik het beste als volgt doen ?
Offline Abbas - 03/01/2008 18:48
Avatar van Abbas Gouden medaille

Crew .NET
Wat heb je nog te doen aan je rekenmachine? 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.205s