Ich habe einen kleinen Taschenrechner mit schöner und übersichtlicher GUI, einfacher Handhabung und recht vielen Befehlen programmiert.
[Blockierte Grafik: http://img10.myimg.de/background94c28.jpg]
#Features:
- Per GUI Tasten, Befehle, Zahlen etc eingebbar.
- Standardbefehle wie *(Multiplizieren), /(Dividieren), +(Addieren), -(Subtrahieren)
- Sinus (nur 1 Sin pro Eingabe möglich), Cosinus, Tangens
- Wurzelrechnen (bisher nur Quadratwurzeln)
- PI (rechnet bis 14 Nachkommazahlen)
- Hochzahlen (²und³ einzeln anklickbar für schnelle Nutzung + ^x)
- Delete Funktion und Clear Funktion
- Passende Fehlermeldungen
- ANS Funktion (letztes Ergebnis anzeigen)
█ = Fehlerhaft oder noch nicht fertiggestellt.
█ = Teilweise.
█ = Sollte einwandfrei funktionieren.
#Updates:v. 0.6 Changelog:- Fehler beim Errechnen von ^2 uns ^3 wurde behoben.
_....
#Script: (Bilder von Anhang benötigt. Ansonsten funktioniert es nicht.)
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <Math.au3>
Global $funcnum = -1, $blockunten[5][4], $blockoben[6][2]
Global $ans = "error"
Global $checklabel = 0
Global $pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567"
Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]$Form2 = GUICreate("Minirechner Extended", 180, 241, 191, 123)
For $s = 0 To 3
For $i = 0 To 4
$funcnum += 1
$blockunten[$i][$s] = GUICtrlCreatePic("images\buttonblank.gif", 4 + $i * 36, 96 + $s * 30, 30, 24)
GUICtrlSetOnEvent($blockunten[$i][$s], "_pic"&$funcnum)
Next
Next
For $s = 0 To 1
For $i = 0 To 5
$funcnum += 1
$blockoben[$i][$s] = GUICtrlCreatePic("images\background.jpg", 4 + $i + $i * 30, 42 + $s * 42 - $s * 17, 26, 22)
GUICtrlSetOnEvent($blockoben[$i][$s], "_pic"&$funcnum)
Next
Next
$Pic1 = GUICtrlCreatePic("images\background.jpg", 0, 0, 180, 240)
$label = GUICtrlCreateLabel("MiniRechner Extended v0.6", 4, 214, 172, 17, $SS_Center)
GUICtrlSetBkColor($label,$GUI_BKCOLOR_TRANSPARENT )
GUICtrlSetColor(-1, 0x4F4C62)
$display = GUICtrlCreateInput("", 6, 10, 169, 16, -1, 0)
GUICtrlSetFont(-1, 10, 800, 0, "Verdana")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1,0x000000 )
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Sleep(100)
WEnd
Func _Checklabel()
If $checklabel = 1 Then
GUICtrlSetData($label, "MiniRechner Extended v0.6")
GUICtrlSetColor($label, 0x4F4C62)
$checklabel = 0
EndIf
EndFunc
Func _Exit()
Exit
EndFunc
Func _pic0() ;7
GUICtrlSetData($display, GUICtrlRead($display) & "7")
EndFunc
Func _pic1() ;8
GUICtrlSetData($display, GUICtrlRead($display) & "8")
EndFunc
Func _pic2() ;9
GUICtrlSetData($display, GUICtrlRead($display) & "9")
EndFunc
Func _pic3() ;DEL
GUICtrlSetData($display, StringTrimRight(GUICtrlRead($display), 1))
EndFunc
Func _pic4() ;AC
GUICtrlSetData($display, "")
_Checklabel()
EndFunc
Func _pic5() ;4
GUICtrlSetData($display, GUICtrlRead($display) & "4")
EndFunc
Func _pic6() ;5
GUICtrlSetData($display, GUICtrlRead($display) & "5")
EndFunc
Func _pic7() ;6
GUICtrlSetData($display, GUICtrlRead($display) & "6")
EndFunc
Func _pic8() ;* (Mal)
GUICtrlSetData($display, GUICtrlRead($display) & "*")
EndFunc
Func _pic9() ;/ (Geteilt)
GUICtrlSetData($display, GUICtrlRead($display) & "/")
EndFunc
Func _pic10() ;1
GUICtrlSetData($display, GUICtrlRead($display) & "1")
EndFunc
Func _pic11() ;2
GUICtrlSetData($display, GUICtrlRead($display) & "2")
EndFunc
Func _pic12() ;3
GUICtrlSetData($display, GUICtrlRead($display) & "3")
EndFunc
Func _pic13() ;+ (Plus)
GUICtrlSetData($display, GUICtrlRead($display) & "+")
EndFunc
Func _pic14() ;- (Minus)
GUICtrlSetData($display, GUICtrlRead($display) & "-")
EndFunc
Func _pic15() ;0 (Null)
GUICtrlSetData($display, GUICtrlRead($display) & "0")
EndFunc
Func _pic16() ;. (Punkt)
GUICtrlSetData($display, GUICtrlRead($display) & ".")
EndFunc
Func _pic17() ;Leeres Feld
EndFunc
Func _pic18() ;ANS (letztes Ergebnis)
If $ans = "error" Then
GUICtrlSetData($label, "Script Error")
GUICtrlSetColor($label, 0xFFFF00)
$checklabel = 1
Else
GUICtrlSetData($display, $ans)
EndIf
EndFunc
Func _pic19() ;= (Istgleich)
$checkfirst = GUICtrlRead($display)
If StringInStr($checkfirst, "Sin", 0, 2) Then
GUICtrlSetData($label, "Maximal 1 Sin-Funktion möglich.")
GUICtrlSetColor($label, 0xFFFF00)
$checklabel = 1
ElseIf StringInStr($checkfirst, "Cos", 0, 2) Then
GUICtrlSetData($label, "Maximal 1 Cos-Funktion möglich.")
GUICtrlSetColor($label, 0xFFFF00)
$checklabel = 1
ElseIf StringInStr($checkfirst, "Tan", 0, 2) Then
GUICtrlSetData($label, "Maximal 1 Tan-Funktion möglich.")
GUICtrlSetColor($label, 0xFFFF00)
$checklabel = 1
ElseIf StringInStr($checkfirst, "Sin") Then
_sinus()
ElseIf StringInStr($checkfirst, "Cos") Then
_cosinus()
ElseIf StringInStr($checkfirst, "Tan") Then
_tangens()
ElseIf StringInStr($checkfirst, "Pi") Then
$pireplace = StringReplace($checkfirst, "Pi", $pi)
$ans = Execute($pireplace)
GUICtrlSetData($display, $ans)
ElseIf StringInStr($checkfirst, "W(") Then
$wreplace = StringReplace($checkfirst, "W(", "Sqrt(")
$ans = Execute($wreplace)
GUICtrlSetData($display, $ans)
Else
$ans = Execute(GUICtrlRead($display))
GUICtrlSetData($display, $ans)
EndIf
EndFunc
Func _sinus()
$checkfirst = GUICtrlRead($display)
$sinuscheck = StringSplit($checkfirst, "Sin(", 1)
$i = UBound($sinuscheck, 1) - 1
$sinuscheck2 = StringSplit($sinuscheck[$i], ")", 1)
$s = 1
$sinradian = _Radian($sinuscheck2[$s])
$preergebnis = StringSplit($checkfirst, $sinuscheck2[$s], 1)
$ergebnis = $preergebnis[1]&$sinradian&$preergebnis[2]
$ans = Execute($ergebnis)
GUICtrlSetData($display, $ans)
EndFunc
Func _cosinus()
$checkfirst = GUICtrlRead($display)
$coscheck = StringSplit($checkfirst, "Cos(", 1)
$i = UBound($coscheck, 1) - 1
$coscheck2 = StringSplit($coscheck[$i], ")", 1)
$s = 1
$cosradian = _Radian($coscheck2[$s])
$precosergebnis = StringSplit($checkfirst, $coscheck2[$s], 1)
$cosergebnis = $precosergebnis[1]&$cosradian&$precosergebnis[2]
$ans = Execute($cosergebnis)
GUICtrlSetData($display, $ans)
EndFunc
Func _tangens()
$checkfirst = GUICtrlRead($display)
$tancheck = StringSplit($checkfirst, "Tan(", 1)
$i = UBound($tancheck, 1) - 1
$tancheck2 = StringSplit($tancheck[$i], ")", 1)
$s = 1
$tanradian = _Radian($tancheck2[$s])
$pretanergebnis = StringSplit($checkfirst, $tancheck2[$s], 1)
$tanergebnis = $pretanergebnis[1]&$tanradian&$pretanergebnis[2]
$ans = Execute($tanergebnis)
GUICtrlSetData($display, $ans)
EndFunc
Func _pic20() ;Sinus
GUICtrlSetData($display, GUICtrlRead($display) & "Sin(")
EndFunc
Func _pic21() ;Cosinus
GUICtrlSetData($display, GUICtrlRead($display) & "Cos(")
EndFunc
Func _pic22() ;Tangens
GUICtrlSetData($display, GUICtrlRead($display) & "Tan(")
EndFunc
Func _pic23()
GUICtrlSetData($display, GUICtrlRead($display) & "(")
EndFunc
Func _pic24()
GUICtrlSetData($display, GUICtrlRead($display) & ")")
EndFunc
Func _pic25() ;PI
GUICtrlSetData($display, GUICtrlRead($display) & "PI")
EndFunc
Func _pic26() ;Wurzel
GUICtrlSetData($display, GUICtrlRead($display) & "W(")
EndFunc
Func _pic27() ;xWurzel
GUICtrlSetData($display, GUICtrlRead($display) & "")
MsgBox(0, "Fehler", "Diese Funktion wird bald folgen.")
EndFunc
Func _pic28() ;Prozent
GUICtrlSetData($display, GUICtrlRead($display) & "")
MsgBox(0, "Fehler", "Diese Funktion wird bald folgen.")
EndFunc
Func _pic29() ;^2 (Hoch 2)
GUICtrlSetData($display, GUICtrlRead($display) & "^2")
EndFunc
Func _pic30() ;^3 (Hoch 3)
GUICtrlSetData($display, GUICtrlRead($display) & "^3")
EndFunc
Func _pic31() ;^x (Hoch X)
GUICtrlSetData($display, GUICtrlRead($display) & "^")
EndFunc
Ich bräuchte Hilfe bei der Function von Sin, Cos, Tan. Danke schonmal vorab.
# Zu den Anhängen:
minirechner.zip:
Script (.au3 Format) + Bilder
images.zip:
Enthält Ordner /images der in das Scriptverzeichnis kopiert werden muss, falls man sich das Script manuell von oben rauskopiert hat.