Herzlich Willkommen zu meinem ersten Guide.
Da ich gerade nichts zu tun habe, werde ich hier auf einfache Art und Weise erklären, wie man einen Taschenrechner programmiert. Natürlich mit AutoIt.
[Auf Grundlagen werde ich nicht besonders eingehen!]
Zum Anfang brauchen wir den
Koda Form Designer (kurz: Koda):
Die könnt ihr euch hier legal Downloaden:
Wir öffnen Koda. Oben seht ihr die verschiedenen Steuerelemente. Ihr erstellt Buttons und ein Label. Etwa so wie ich hier:
Wenn ihr fertig seit und es euch gefällt könnt ihr F9 drücken. Darauf öffnet sich ein neues Fenster. Dort drückt ihr "Copy to clipboard".
Danach öffnet ihr
SciTe (Script Editor)Hier downloadbar:
Sobald es geöffnet ist, kopiert ihr mit Ctrl+V die Buttons und das Label in den Editor.
Nun fügen wir den Buttons die entsprechenden Befehle zu.
Wir haben bis jetzt folgenden Code:
PHP Code:
#include <GUIConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Taschenrechner", 289, 319, 189, 121)
$Label1 = GUICtrlCreateLabel("", 24, 24, 244, 28)
$Button1 = GUICtrlCreateButton("1", 32, 72, 41, 41, 0)
$Button2 = GUICtrlCreateButton("2", 96, 72, 41, 41, 0)
$Button3 = GUICtrlCreateButton("3", 160, 72, 41, 41, 0)
$Button4 = GUICtrlCreateButton("4", 32, 136, 41, 41, 0)
$Button5 = GUICtrlCreateButton("5", 96, 136, 41, 41, 0)
$Button6 = GUICtrlCreateButton("6", 160, 136, 41, 41, 0)
$Button7 = GUICtrlCreateButton("7", 32, 200, 41, 41, 0)
$Button8 = GUICtrlCreateButton("8", 96, 200, 41, 41, 0)
$Button9 = GUICtrlCreateButton("9", 160, 200, 41, 41, 0)
$Button10 = GUICtrlCreateButton("0", 32, 264, 41, 41, 0)
$Button11 = GUICtrlCreateButton("+", 224, 72, 41, 41, 0)
$Button12 = GUICtrlCreateButton("-", 224, 136, 41, 41, 0)
$Button13 = GUICtrlCreateButton("*", 224, 200, 41, 41, 0)
$Button14 = GUICtrlCreateButton("/", 224, 264, 41, 41, 0)
$Button15 = GUICtrlCreateButton("=", 160, 264, 41, 41, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Case $GUI_EVENT_CLOSE bedeutet, dass das Fenster beim Klicken des Kreuzes geschlossen wird.
Wir fügen nun die Buttons 0-9 ein. Das sieht dann so aus:
PHP Code:
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
Case $Button2
Case $Button3
Case $Button4
Case $Button5
Case $Button6
Case $Button7
Case $Button8
Case $Button9
Case $Button10
EndSwitch
WEnd
Wie man sieht wurde den Buttons noch keine Befehle angegeben.
Der Befehl zu Button 1 sieht dann so aus:
PHP Code:
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "1")
GUICtrlSetData($Label1) heisst:
Es verändert die Zeichen im Label1.
GUICtrlRead($Label1) heisst:
Es liest die Zeichen, welche im Label1 enthalten sind.
& "1" heisst:
Es wird eine 1 angesetzt.
Zusammengefasst heisst GUICtrlSetData($Label1, GUICtrlRead($Label1) & "1"):
Es wird die Ziffer 1 im Label angezeigt.
Das wird nun mit allen Zahlen gemacht:
Nun fehlen noch die verschiedenen Operatoren.
Wir fügen sie gleich wie die Zahlen ein:
PHP Code:
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "1")
Case $Button2
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "2")
Case $Button3
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "3")
Case $Button4
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "4")
Case $Button5
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "5")
Case $Button6
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "6")
Case $Button7
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "7")
Case $Button8
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "8")
Case $Button9
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "9")
Case $Button10
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "0")
Case $Button11
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "+")
Case $Button12
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "-")
Case $Button13
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "*")
Case $Button14
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "/")
EndSwitch
WEnd
Nun fehlt nur noch das =-Zeichen. Dieses wird so eingefügt:
PHP Code:
Case $Button15
GUICtrlSetData($label1, Execute(GUICtrlRead($label1)))
Execute bedeutet:
Es werden die Ziffern im Label1 gelesen und ausgerechnet.
Da nach einem C-Button gefragt wurde (Ergebnis löschen) werde ich das kurz erklären.
Zuerst wird ein neuer Button erstellt.
Der Befehl des Buttons lautet wie folgt:
PHP Code:
Case $Button16
GUICtrlSetData($Label1, "")
Das heisst, ins Label wird "nichts" geschrieben.
Ich füge nun Hotkeys ein:
Mit einem Hotkey können durch Tastenkombinationen verschiedene Funktionen aufgerufen werden.
Beispiel für ENTER:
PHP Code:
HotKeySet("{ENTER}", "_gleich")
Das heisst, wenn ENTER gedürckt wird, wird die Funktion _gleich aufgerufen. Nun müssen wir die Funktion _gleich definieren.
Das sieht dann so aus:
PHP Code:
Func _gleich()
GUICtrlSetData($label1, Execute(GUICtrlRead($label1)))
EndFunc
Hier der Script in AutoIt:
Man könnte alles ein wenig zusammenfassen, damit es nicht so gross wird, doch dann ist es schwerer zu verstehen. Deshalb lasse ich es so.
Hier ist nun das gesammte Script:
PHP Code:
HotKeySet("{/}", "_divi")
HotKeySet("{*}", "_multi")
HotKeySet("{+}", "_addi")
HotKeySet("{-}", "_subt")
HotKeySet("{ENTER}", "_gleich")
HotKeySet("{NUMPAD1}", "_nummer1")
HotKeySet("{NUMPAD2}", "_nummer2")
HotKeySet("{NUMPAD3}", "_nummer3")
HotKeySet("{NUMPAD4}", "_nummer4")
HotKeySet("{NUMPAD5}", "_nummer5")
HotKeySet("{NUMPAD6}", "_nummer6")
HotKeySet("{NUMPAD7}", "_nummer7")
HotKeySet("{NUMPAD8}", "_nummer8")
HotKeySet("{NUMPAD9}", "_nummer9")
HotKeySet("{NUMPAD0}", "_nummer0")
HotKeySet("{NUMPADMULT}", "_multi")
HotKeySet("{NUMPADADD}", "_addi")
HotKeySet("{NUMPADSUB}", "_subt")
HotKeySet("{NUMPADDIV}", "_divi")
HotKeySet("{NUMPADENTER}", "_gleich")
#include <GUIConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Taschenrechner", 289, 319, 189, 121)
$Label1 = GUICtrlCreateLabel("", 24, 24, 244, 28)
$Button1 = GUICtrlCreateButton("1", 32, 72, 41, 41, 0)
$Button2 = GUICtrlCreateButton("2", 96, 72, 41, 41, 0)
$Button3 = GUICtrlCreateButton("3", 160, 72, 41, 41, 0)
$Button4 = GUICtrlCreateButton("4", 32, 136, 41, 41, 0)
$Button5 = GUICtrlCreateButton("5", 96, 136, 41, 41, 0)
$Button6 = GUICtrlCreateButton("6", 160, 136, 41, 41, 0)
$Button7 = GUICtrlCreateButton("7", 32, 200, 41, 41, 0)
$Button8 = GUICtrlCreateButton("8", 96, 200, 41, 41, 0)
$Button9 = GUICtrlCreateButton("9", 160, 200, 41, 41, 0)
$Button10 = GUICtrlCreateButton("0", 32, 264, 41, 41, 0)
$Button11 = GUICtrlCreateButton("+", 224, 72, 41, 41, 0)
$Button12 = GUICtrlCreateButton("-", 224, 136, 41, 41, 0)
$Button13 = GUICtrlCreateButton("*", 224, 200, 41, 41, 0)
$Button14 = GUICtrlCreateButton("/", 224, 264, 41, 41, 0)
$Button15 = GUICtrlCreateButton("=", 160, 264, 41, 41, 0)
$Button16 = GUICtrlCreateButton("C", 96, 264, 41, 41, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "1")
Case $Button2
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "2")
Case $Button3
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "3")
Case $Button4
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "4")
Case $Button5
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "5")
Case $Button6
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "6")
Case $Button7
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "7")
Case $Button8
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "8")
Case $Button9
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "9")
Case $Button10
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "0")
Case $Button11
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "+")
Case $Button12
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "-")
Case $Button13
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "*")
Case $Button14
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "/")
Case $Button15
GUICtrlSetData($label1, Execute(GUICtrlRead($label1)))
Case $Button16
GUICtrlSetData($Label1, "")
EndSwitch
WEnd
Func _nummer1()
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "1")
EndFunc
Func _nummer2()
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "2")
EndFunc
Func _nummer3()
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "3")
EndFunc
Func _nummer4()
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "4")
EndFunc
Func _nummer5()
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "5")
EndFunc
Func _nummer6()
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "6")
EndFunc
Func _nummer7()
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "7")
EndFunc
Func _nummer8()
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "8")
EndFunc
Func _nummer9()
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "9")
EndFunc
Func _nummer0()
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "0")
EndFunc
Func _divi()
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "/")
EndFunc
Func _multi()
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "*")
EndFunc
Func _addi()
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "+")
EndFunc
Func _subt()
GUICtrlSetData($Label1, GUICtrlRead($Label1) & "-")
EndFunc
Func _gleich()
GUICtrlSetData($label1, Execute(GUICtrlRead($label1)))
EndFunc
Man kann dem Taschenrechner natürlich noch viel mehr hinzufügen. Falls ihr es versteht könnt ihr auch noch versuchen die verschiedenen Funktionen aus dem Windows Rechner zu programmieren. Wie ihr wollt.
Ich wollte hier nur kurz zeigen, wie ein Anfänger schnell ein etwas nützliches Programm erstellen kann.
Falls jemand Fehler findet (inkl. Rechdschreibefeller) wäre es toll, wenn mir eine PM geschickt wird. Natürlich kann man auch hier im Thread posten. Ich werde es dann so schnell wie möglich ändern.
Ich wünsche euch einen schönen Abend und ein erholsames Wochenende!
*Skater21459*