[VisualBasic] Taschenrechner

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von AMAB(AT), 16. Mai 2008 .

  1. 16. Mai 2008
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    Taschenrechner

    Guten Morgen!

    Ich habe schon alle Threads der SuFu durchgelsen, habe aber nichts hilfreiches gefunden.

    Ich bringe mir gerade selbst ein bisschen Programmieren in Access bei.

    Mein Ziel -> Ein Taschenrechner.

    Soweit klappt alles einigermaßen, aber ich habe noch 2 Probleme.

    1. Wenn ich eine Zahl im Textfeld(txtAusgabefeld)eingebe, soll der jeweilige Knopf (bei einer "0" dementsprechend der Button "0"[cmdNull]) aktiviert werden(also so aussehen, als würde man ihn gerade drücken).

    2. Wenn man mehrmals eine Rechenart(z.B. Addition)durchfürhen will, ohne dazwischen auf "=" zu klicken, klappt das leider nicht.

    Ich wäre euch seeehr dankbar, wenn ihr mir helfen würdet!

    Hier ist mal meine Datei.

    lg
    Chantal
     
  2. 17. Mai 2008
    AW: Taschenrechner

    Hab hier kein Access, kannst du das Projekt mal im VBA-Editor von Word 2003 erstellen und das hochladen?
     
  3. 17. Mai 2008
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Taschenrechner

    Also ich weiß jetzt nicht was du mit "VBA - Editor von Word 2003" meinst, aber ich habe den Code einfach mal in ein Word Dokument kopiert.(habe Office 2007)

    Hier die Datei!

    lg
    Chantal
     
  4. 18. Mai 2008
    AW: Taschenrechner

    Ich mein den Editor, in den du über Extras -> Makro -> Visual Basic Editor kommst :]
     
  5. 18. Mai 2008
    AW: Taschenrechner

    Sry, aber ich finde das nicht unter Office 07...^^

    Bw haste aber schon mal!

    lg
    Chantal
     
  6. 18. Mai 2008
    AW: Taschenrechner

    Schau mal hier!

    Ich hoffe mal, dass du weißt, wie man in dieses Menü kommt (ich konnte den "früheren Blog", in dem das beschrieben sein soll, nicht finden )


    // Edit

    Hab mir den Code in der Word-Datei mal angeschaut.

    Ich würde es so machen:

    Du überprüfst einfach im KeyDown-Event von der Textbox txtAusgabe den KeyCode. Entsprechend des KeyCodes rufst du Addition, Division, Subtraktion oder Multiplikation auf (oder gar nichts, wenn keine dieser Tasten gedrückt wurde).

    Das würde dann so aussehen:

    Code:
    Private Sub txtAusgabe_KeyDown(KeyCode As Integer, Shift As Integer)
     Select Case KeyCode
     Case 106 '*
     Call cmdMultiplikation_Click
     Case 107 '+
     Call cmdAddition_Click
     Case 109 '-
     Call cmdSubtraktion_Click
     Case 111 '/
     Call cmdDivision_Click
     End Select
    End Sub
    Bei Druck auf Enter (KeyCode 13, wenn ich mich nicht irre) kannst du ja dann den Klick auf den =-Button aufrufen!

    Natürlich wäre es besser, Funktionen zu verwenden (z. B. SetRechenart), aber für den Anfang wird das genügen
     
  7. 18. Mai 2008
    AW: Taschenrechner

    Hier mal nen Link zu den verschiedenen KeyCode Konstanten

    Key Code-Konstanten für Visual Basic 6.0-Benutzer

    mfg
     
  8. 18. Mai 2008
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Taschenrechner

    Also soweit ich das verstanden habe, ist dein Code dazu gut, dass man die Rechenarten(Addition,...)auch über die Tasten auf dem Keyboard und nicht nur über die Buttons im Programm aufrufen kann?
    Oder bedeutet "KeyDown" nicht die "Pfeiltaste runter", sondern dass der Button im Programm als gedrückt angezeit wird?^^

    //Btw: Habe es jetzt mal in dem VBA Editor abgespeichert
    Klick


    Danke, Bw ist raus!
     
  9. 18. Mai 2008
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Taschenrechner

    Richtig. Aber ich hab deine Frage falsch verstanden, wie ich grade seh

    KeyDown ist das Event, das aufgerufen wird, wenn eine Taste gedrückt wird.

    Danke, werds mir später oder morgen mal anschauen (und mir die Frage nochmal durchlesen, damit ich nicht wieder was falsches mach )
     
  10. 19. Mai 2008
    AW: Taschenrechner

    Ok, ich habe aber noch mal eine Frage.
    Für was deklarierst du Shift? (Shift as Integer)

    Bei folgendem Code, wird der Button "0" ausgewählt, aber nicht gedrückt, da ich die Syntax dafür nicht kenne...
    Weißt du welchen Code ich schreiben könnte, damit die Taste kurz gedrückt wird und danach der Focus wieder auf dem Textfeld liegt?
    Das mit dem Focus müsste ja so gehen:
    "me.txtAusgabefeld.SetFocus"
    Code:
    Private Sub txtAusgabefeld_Keydown(Keycode As Integer, Shift As Integer)
    
     Select Case Keycode
     Case 48
     cmdNull.SetFocus
     End Select
    
    End Sub
    Dann habe ich noch eine Frage.
    Wenn ich auf 2 Tastendrücken eine Funktion haben will(z.B. wenn man die normale "0" drückt und die "0" auf dem NumPad), kann ich das dann zusammenfassen(z.B. "Case 48, Case 96")?

    lg
    Chantal
     
  11. 19. Mai 2008
    AW: Taschenrechner

    Zur Frage 2 deines ersten Posts:

    Füg einfach diese drei Zeilen (mit der entsprechenden Rechenart) in die Click-Ereignisse der Rechen-Buttons (+, -, *, /) über den bisherigen Code ein:

    Code:
    If Not strZahl1 = "" Then
     Me.txtAusgabefeld = Addition(CDbl(strZahl1), CDbl(txtAusgabefeld))
    End If
    Das war nicht ich, sondern VB

    So weit ich weiß, sagt die Variable Shift nur aus, ob die Shift-Taste gedrückt (1) oder nicht gedrückt (0) ist, wenn das KeyDown-Event aufgerufen wird.

    Das hätte ich mit der API SendMessage gelöst, aber da die Steuerelemente unter VBA keine Handles haben, fällt diese Möglichkeit aus.

    Du kannst aber das Click-Event des Buttons aufrufen:


    Code:
    Private Sub txtAusgabefeld_Keydown(Keycode As Integer, Shift As Integer)
    
     Select Case Keycode
     Case 48
     cmdNull.SetFocus
     Call cmdNull_Click()
     End Select
    
    End Sub
    Nachteil: der Button wird grafisch nicht gedrückt.


    Ja, da schreibst du einfach die Cases nebeneinander:

    Code:
    Case "asd", "bla"
    Das würde dann sowohl auf "asd" als auch auf "bla" zutreffen!
     
  12. 19. Mai 2008
    AW: Taschenrechner

    Vielen vielen Dank für deine nette Hilfe!

    Leider habe ich immer noch ein paar Probleme-.-

    Weißt du ob das überhaupt möglich ist, dass die Buttons einfach nur grafisch gedrückt werden?

    Und wenn ich jetzt nur eine Rechenoperation(nehmen wir mal "+")hintereinander ausführe(ohne auf "=" zu gehen), klappt das einwandfrei.

    Aber sobald ich dann auf eine andere Rechenoperation gehe passiert folgendes:

    Z.B. 4 + 2 - 4 = -2

    Grund: Nachdem ich auf das Minus geklickt habe, zieh er schon die "2" von der 1. "4" ab und danach zieht er noch mal die 2. "4" ab.

    Sry für die vielen Anforderungen^^aber danach ist es ja geschafft!

    Eine Bw kann ich dir leider noch nicht wieder geben...

    lg
    Chantal
     
  13. 19. Mai 2008
    AW: Taschenrechner

    Lassen sich deinen Buttons Hotkeys zuweisen?
    Dann kannst du das nämlich darüber steuern und der Rechen-"String" wird dann jeweils um den gedrückten Button erweitert oder sowas... hab mich mit VB bisher noch nicht beschäftigt.
    Eingabe erfolgt dann nicht mehr über ein Textfeld sondern Hotkeys/Buttonklick.
     
  14. 20. Mai 2008
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Taschenrechner

    Ich wüsste nicht, wie das mit den Hotkeys gehen sollte, aber die Eingabe sollte über die Buttons und über das Textfeld(Tastatureingabe)möglich sein.

    lg
    Chantal

    //Das mit dem "Select Case", bzw. mit "Call (z.B.)cmdAddition_Click" funktioniert nicht so richtig.
    Wenn ich auf den Knopf "+" klicke, schreibt er die Zahl des Textfeldes in die Variable "strZahl1".
    Aber wenn über "Select Case" den Knopf "+" aktiviere, schreibt er die Zahl nicht in die Variable.

    Also klappt das Rechnen mit der Tastatureingabe leider nicht so-.-

    Ich habe den bisherigen Code noch mal hochgeladen.
    Klick.

    lg
    Chantal
     
  15. 20. Mai 2008
    AW: Taschenrechner

    rechne das ergebnis auch bei +-/* auch aus. dann hast des problem nimmer das sowas ned geht: 1+2-1

    dazu legst du dir ne neue globale var an, zb: boolean rechneBeiAktion = false

    wenn dann eine zahl angegeben wurde kannst die var auf true setzen und bei der nächsten zahl das rechnen anfangen.
     
  16. 20. Mai 2008
    AW: Taschenrechner

    Sorry Murdoc, aber ich habe dein Post nur bis zu, 2. Absatz verstanden...^^

    Ich kann noch nicht so viel in Richtung programmieren...daher weiß ich nicht, wie ich den 3. Absatz programmieren könnte.

    lg
    Chantal

    //Also müsste dieser Code:
    Code:
    Private Sub cmdAddition_Click()
    
     If Not strZahl1 = "" Then
     Me.txtAusgabefeld = Addition(CDbl(strZahl1), CDbl(txtAusgabefeld))
     End If
     strZahl1 = txtAusgabefeld
     Me.txtAusgabefeld = ""
     strRechenart = "Addition"
     Me.txtAusgabefeld.SetFocus
    
    End Sub
    Dann so aussehen?:

    Code:
    Private Sub cmdAddition_Click()
    
     If Not strZahl1 = "" Then
     blnRechneBeiAktion = False
     Elseif blnRechneBeiAktion = True Then
     strZahl1 = txtAusgabefeld
     strRechenart = "Addition"
     Me.txtAusgabefeld = Addition(CDbl(strZahl1), CDbl(txtAusgabefeld))
     Me.txtAusgabefeld = ""
     Me.txtAusgabefeld.SetFocus
     End If
    
    End Sub
    Oder setzt der blnRechneBeiAktion nicht automatisch auf True, wenn er es nicht auf False setzt?
     
  17. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.