Bau eines einfachen Taschenrechner´s mit Visual Basic

Werbung
Erstellt von Mirko Stegemann
Grundlagen Programmierung
Wir bauen eine Bedingung: Wahr oder Falsch also mit Ausgabe in einem Label
Wenn die Zahl in der Textbox 7 ist dann soll im Label der Hinweis „Zahl ist 7“erscheinen.
Wenn keine 7 drin ist sondern irgend ein anderes Zeichen dann soll im Label der Hinweis „Zahl ist nicht 7 sondern
...“ erscheinen
Option Explicit
Dim Zahl
Privat Sub Text1_Change()
Zahl = Text1.Text
IF Zahl = 7 Then
MsgBox “ Zahl ist 7 “
Else
Label1 = “ Zahl ist nicht 7 sondern “ & Zahl
End IF
End Sub
Freitag, 22. Februar 2002
Bau eines einfachen Taschenrechner´s mit Visual Basic
Option Explicit
Private Sub durch_Click()
If (zahl2) <> 0 Then
ergebniss = CDbl(zahl1.Text) / CDbl(zahl2.Text)
zahl1 = ""
zahl2 = ""
zahl1.SetFocus
Else
ergebniss = "Die Division durch 0 ist nicht möglich"
zahl2 = ""
zahl2.SetFocus
End If
End Sub
Private Sub mal_Click()
ergebniss = CDbl(zahl1) * CDbl(zahl2)
zahl1 = ""
zahl2 = ""
zahl1.SetFocus
End Sub
Private Sub minus_Click()
ergebniss = CInt(zahl1) - CInt(zahl2)
zahl1 = ""
zahl2 = ""
zahl1.SetFocus
End Sub
Private Sub plus_Click()
ergebniss = CInt(zahl1) + CInt(zahl2)
zahl1 = ""
zahl2 = ""
zahl1.SetFocus
End Sub
2
Der Durch Button
Er soll suchen ob im 2 Feld eine 0 steht
Im Label anzeigen was Feld 1/Feld 2 ist
Feld 1 soll jetzt leer sein
Feld 2 soll jetzt leer sein
Der Courser soll auf Feld 1 springen
Wenn eine 0 im Feld 2 ist
im Label anzeigen des Textes in „ “
Feld 2 soll jetzt leer sein
Der Courser soll auf Feld 2 springen
Ende des Suchvorgangs
Ende der Befehlsreihe für den Button
Der Mal Button
Im Label anzeigen was Feld 1*Feld 2 ist
Feld 1 soll jetzt leer sein
Feld 2 soll jetzt leer sein
Der Courser soll auf Feld 1 springen
Ende der Befehlsreihe für den Button
Der Minus Button
Im Label anzeigen was Feld 1- Feld 2 ist
Feld 1 soll jetzt leer sein
Feld 2 soll jetzt leer sein
Der Courser soll auf Feld 1 springen
Ende der Befehlsreihe für den Button
Der Plus Button
Im Label anzeigen was Feld 1+ Feld 2 ist
Feld 1 soll jetzt leer sein
Feld 2 soll jetzt leer sein
Der Courser soll auf Feld 1 springen
Ende der Befehlsreihe für den Button
Erstellt von Mirko Stegemann
Grundlagen Programmierung
Fehler abfangen
-
Wir wollen keine Buchstaben,
Option Explicit
Dim ZahlenOK As Boolean
Sub Prüfen()
ZahlenOK = True
If Not IsNumeric(zahl1) Or Not IsNumeric(zahl2) Then
ergebniss = "Sorry dieses " & zahl1 & " im 1.Feld oder dieses " & zahl2 & " im 2.Feld ist keine Zahl
womit man rechnen kann "
ZahlenOK = False
End If
End Sub
Private Sub durch_Click()
Prüfen
If Not ZahlenOK Then Exit Sub
If (zahl2) <> 0 Then
ergebniss = CDbl(zahl1.Text) / CDbl(zahl2.Text)
zahl1 = ""
zahl2 = ""
zahl1.SetFocus
Else
ergebniss = "Die Division durch 0 ist nicht möglich"
zahl2 = ""
zahl2.SetFocus
End If
End Sub
Private Sub mal_Click()
Prüfen
If Not ZahlenOK Then Exit Sub
ergebniss = CDbl(zahl1) * CDbl(zahl2)
zahl1 = ""
zahl2 = ""
zahl1.SetFocus
End Sub
Private Sub minus_Click()
Prüfen
If Not ZahlenOK Then Exit Sub
ergebniss = CInt(zahl1) - CInt(zahl2)
zahl1 = ""
zahl2 = ""
zahl1.SetFocus
End Sub
Private Sub plus_Click()
Prüfen
If Not ZahlenOK Then Exit Sub
ergebniss = CInt(zahl1) + CInt(zahl2)
zahl1 = ""
zahl2 = ""
zahl1.SetFocus
End Sub
-
Zeichen - die keine Ziffern und keine Buchstaben sind,
3
Erstellt von Mirko Stegemann
Grundlagen Programmierung
-
leere Textfelder
Wir definieren die Größe
Zahlenbereich (Größe der Zahl)
Byte 0 bis 255 Ganzzahl
Integer -32768 bis +32768 Ganzzahl
Long -2 Milliarden bis +2 Milliarden Ganzzahl
Fließkommazahlen:
Single (8 Stellen)
Double ( 15 Stellen)
Select Case Erklärung
Select – Auswählen
OP=
“+“
“-“
“*“
“/“
A-A
A-S
A-M
A-D
Select Case OP
Case
Ergebniss = “Division“
IF y =0 THEN
ergebniss = ergebniss & “ durch Null “
Else
Ergebniss = x / y
Else IF
End Select
Das Ergebnis lautet dann:
Option Explicit
Dim ZahlenOK As Boolean
Dim OP As String * 1 'Rechenart
Dim ergebnis As Double
Dim X As Double
Dim Y As Double
Sub Prüfen()
ZahlenOK = True
If Not IsNumeric(zahl1) Or Not IsNumeric(zahl2) Then
ZahlenOK = False
Endanzeige = "Keine Zahlen"
End If
End Sub
Sub Rechnen()
Prüfen
If Not ZahlenOK Then Exit Sub
X = CDbl(zahl1)
Y = CDbl(zahl2)
Select Case OP
!!Fortsetzung auf Seite 5!!
!!Fortsetzung von Seite 4!!
4
Erstellt von Mirko Stegemann
Grundlagen Programmierung
Case "+"
Endanzeige = "Addition"
ergebnis = X + Y
Case "-"
Endanzeige = "Subtraktion"
ergebnis = X - Y
Case "*"
Endanzeige = "Multiplikation"
ergebnis = X * Y
Case "/"
Endanzeige = "Division"
ergebnis = X + Y
If Y = 0 Then
Endanzeige = Endanzeige & " durch Null"
Else
ergebnis = X / Y
End If
End Select
Endanzeige = Endanzeige & " " & ergebnis
End Sub
Private Sub plus_Click()
OP = "+"
Rechnen
End Sub
Private Sub minus_Click()
OP = "-"
Rechnen
End Sub
Private Sub mal_Click()
OP = "*"
Rechnen
End Sub
Private Sub durch_Click()
OP = "/"
Rechnen
End Sub
Datentypen Zahlen:
Direktfenster
Print 2^32 und er gibt im Direktfenster 4294967296 aus
Wenn wir jetzt Testen wollen wieviel in den jeweiligen Typen reinpassen dann können wir dieses auch vereinfacht
im Direktfenster machen
Statt Print kann man in Basic auch „?“ nehmen z.B.
? cbyte(2^32)
Wir testen:
CDbl(2^32)
CSng(2^32)
CLng(2^32)
CInt(2^32)
CByte(2^32)
CCur
CDec
ListIndex -1 heist kein Text ist markiert
ListCount -1 heist immer letzte markiert
ListCount 0 heist immer das erste
Ende Decimal hat den Index 99 Genauigkeit bis 29 stellen
5
Erstellt von Mirko Stegemann
Grundlagen Programmierung
Currency hat eine Genauigkeit bis 19 stellen
ToolTipText
Wir bauen in unseren Rechner ein Quickinfo (ToolTip) ein
Private Sub zahl1_Change()
QuickInfo
If zahl1.Text <> "" Then
End If
End Sub
Private Sub zahl2_Change()
QuickInfo
If zahl1.Text <> "" Then
End If
End Sub
Sub QuickInfo()
plus.ToolTipText = zahl1.Text & " + " & zahl2.Text
minus.ToolTipText = zahl1.Text & " - " & zahl2.Text
mal.ToolTipText = zahl1 & " * " & zahl2
durch.ToolTipText = zahl1 & " / " & zahl2
End Sub
Wenn wir jetzt eine Message haben wollen statt den Absturz unseres gebautem Rechners mit dem Inhalt „Überlauf“
bei einer zu großen Zahlenmenge müssen wir folgenden Text im Sub von rechnen noch zufügen :
Sub Rechnen()
Prüfen
If Not ZahlenOK Then Exit Sub
On Error GoTo Fehler
X = CDbl(zahl1)
Y = CDbl(zahl2)
Select Case OP
Case "+"
Endanzeige = "Addition"
ergebnis = X + Y
Case "-"
Endanzeige = "Subtraktion"
ergebnis = X - Y
Case "*"
Endanzeige = "Multiplikation"
ergebnis = X * Y
Case "/"
Endanzeige = "Division"
ergebnis = X + Y
If Y = 0 Then
Endanzeige = Endanzeige & " durch Null"
Else
ergebnis = X / Y
End If
End Select
Endanzeige = Endanzeige & " " & ergebnis
Exit Sub
Fehler:
If Err.Number = 6 Then MsgBox "Überlauf"
End Sub
Wir erstellen nun ein neues Projekt:
Mit einem Commandbutton und einem Textfeld.
6
Erstellt von Mirko Stegemann
Grundlagen Programmierung
Wir kopieren den Button und fügen ihn nun werden wir gefragt ob wir ein neue steuerelementbutton erstellen
wollen.
welche wir mit ja beantworten und fügen dann den Button weitere 9 mal ein.
Nun geben wir noch folgenden text ein um die autobeschriftung herzustellen.
Private Sub cmdziffer_Click(Index As Integer)
txtzahl = txtzahl & Index
End Sub
Private Sub Form_Load()
Dim i As Integer
For i = 0 To 9
cmdziffer(i).Caption = i
Next i
End Sub
Wir wollen uns jetzt neuem zuwenden und versuchen uns an Löschbuttons.
Mit Hilfe von „len“ ermitteln wir wie lang die zeichenkette ist
Private Sub cmdKorr_Click()
If Len(txtzahl) > 0 Then
txtzahl = Left(txtzahl, Len(txtzahl) - 1)
End If
End Sub
Nun haben wir ein zurückbutton.
Der fertige Rechner mit zahlentastatur, zurück und Clearbutton hat dann folgenden Quelltext.
Option Explicit
Private Sub cmdclear_Click()
txtzahl = ""
anzeige = ""
End Sub
Private Sub cmdKorr_Click()
If Len(txtzahl) > 0 Then
txtzahl = Left(txtzahl, Len(txtzahl) - 1)
Else
anzeige.Caption = "Welche Zahl wollen sie denn entfernen??????"
End If
End Sub
Private Sub cmdziffer_Click(Index As Integer)
txtzahl = txtzahl & Index
anzeige = ""
End Sub
Private Sub Form_Load()
Dim i As Integer
For i = 0 To 9
cmdziffer(i).Caption = i
Next i
cmdKorr.Caption = Chr(239)
cmdKorr.FontName = "WingDings"
anzeige = ""
End Sub
7
Zugehörige Unterlagen
Herunterladen