#include <GUIConstants.au3>
Dim $backcolor = 0x4A579B, $fcolor = 0xFFD700
Dim $picpath = "D:\Eigene Bilder\Euro\"
Dim $arVal[15], $arLabel[15], $arCheckBtn[15][2], $arCheck[15]
For $i = 0 To 14
	$arCheckBtn[$i][1] = 1
Next
$arVal[0] = 500
$arVal[1] = 200
$arVal[2] = 100
$arVal[3] = 50
$arVal[4] = 20
$arVal[5] = 10
$arVal[6] = 5
$arVal[7] = 2
$arVal[8] = 1
$arVal[9] = 0.5
$arVal[10] = 0.2
$arVal[11] = 0.1
$arVal[12] = 0.05
$arVal[13] = 0.02
$arVal[14] = 0.01

$Form1 = GUICreate("Geldbetrag stückeln", 500, 504, -1, -1)
GUISetBkColor($backcolor)
GUICtrlCreatePic($picpath & "500eur.jpg", 25, 32, 100, 51, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlCreatePic($picpath & "200eur.jpg", 140, 33, 100, 54, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlCreatePic($picpath & "100eur.jpg", 253, 32, 100, 56, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlCreatePic($picpath & "50eur.jpg", 370, 31, 100, 55, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlCreatePic($picpath & "20eur.jpg", 25, 118, 100, 54, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlCreatePic($picpath & "10eur.jpg", 189, 121, 100, 53, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlCreatePic($picpath & "5eur.jpg", 371, 121, 100, 53, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlCreatePic($picpath & "2eur.jpg", 25, 215, 75, 75, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlCreatePic($picpath & "1eur.jpg", 150, 215, 75, 75, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlCreatePic($picpath & "50ct.jpg", 275, 215, 75, 75, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlCreatePic($picpath & "20ct.jpg", 400, 215, 75, 75, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlCreatePic($picpath & "10ct.jpg", 25, 320, 75, 75, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlCreatePic($picpath & "5ct.jpg", 150, 320, 75, 75, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlCreatePic($picpath & "2ct.jpg", 275, 320, 75, 75, BitOR($SS_NOTIFY,$WS_GROUP))
GUICtrlCreatePic($picpath & "1ct.jpg", 400, 320, 75, 75, BitOR($SS_NOTIFY,$WS_GROUP))
$arLabel[0] = GUICtrlCreateLabel("", 52, 11, 45, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
$arCheckBtn[0][0] = GUICtrlCreateButton("" ,25, 11, 12, 12, $BS_ICON)
$arCheckBtn[1][0] = GUICtrlCreateButton("" ,140, 11, 12, 12, $BS_ICON)
$arCheckBtn[2][0] = GUICtrlCreateButton("" ,253, 11, 12, 12, $BS_ICON)
$arCheckBtn[3][0] = GUICtrlCreateButton("" ,370, 11, 12, 12, $BS_ICON)
$arCheckBtn[4][0] = GUICtrlCreateButton("" ,25, 96, 12, 12, $BS_ICON)
$arCheckBtn[5][0] = GUICtrlCreateButton("" ,189, 96, 12, 12, $BS_ICON)
$arCheckBtn[6][0] = GUICtrlCreateButton("" ,371, 96, 12, 12, $BS_ICON)
$arCheckBtn[7][0] = GUICtrlCreateButton("" ,25, 190, 12, 12, $BS_ICON)
$arCheckBtn[8][0] = GUICtrlCreateButton("" ,150, 190,12,12, $BS_ICON)
$arCheckBtn[9][0] = GUICtrlCreateButton("" ,275, 190,12,12, $BS_ICON)
$arCheckBtn[10][0] = GUICtrlCreateButton("" ,400, 190,12,12, $BS_ICON)
$arCheckBtn[11][0] = GUICtrlCreateButton("" ,25, 297,12,12, $BS_ICON)
$arCheckBtn[12][0] = GUICtrlCreateButton("" ,150, 297,12,12, $BS_ICON)
$arCheckBtn[13][0] = GUICtrlCreateButton("" ,275, 297,12,12, $BS_ICON)
$arCheckBtn[14][0] = GUICtrlCreateButton("" ,400, 297,12,12, $BS_ICON)
For $i = 0 To 14
	GUICtrlSetImage($arCheckBtn[$i][0], $picpath & "check12x12.ico")
Next
GUICtrlSetState(-1, $GUI_CHECKED)
$arLabel[1] = GUICtrlCreateLabel("", 165, 11, 45, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetState(-1, $GUI_CHECKED)
$arLabel[2] = GUICtrlCreateLabel("", 279, 11, 45, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetState(-1, $GUI_CHECKED)
$arLabel[3] = GUICtrlCreateLabel("", 400, 11, 45, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetState(-1, $GUI_CHECKED)
$arLabel[4] = GUICtrlCreateLabel("", 52, 96, 45, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetState(-1, $GUI_CHECKED)
$arLabel[5] = GUICtrlCreateLabel("", 214, 96, 45, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetState(-1, $GUI_CHECKED)
$arLabel[6] = GUICtrlCreateLabel("", 400, 96, 45, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetState(-1, $GUI_CHECKED)
$arLabel[7] = GUICtrlCreateLabel("", 41, 190, 43, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetState(-1, $GUI_CHECKED)
$arLabel[8] = GUICtrlCreateLabel("", 166, 190, 43, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetState(-1, $GUI_CHECKED)
$arLabel[9] = GUICtrlCreateLabel("", 288, 190, 49, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetState(-1, $GUI_CHECKED)
$arLabel[10] = GUICtrlCreateLabel("", 412, 190, 49, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetState(-1, $GUI_CHECKED)
$arLabel[11] = GUICtrlCreateLabel("", 41, 297, 49, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetState(-1, $GUI_CHECKED)
$arLabel[12] = GUICtrlCreateLabel("", 166, 297, 49, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetState(-1, $GUI_CHECKED)
$arLabel[13] = GUICtrlCreateLabel("", 288, 297, 49, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetState(-1, $GUI_CHECKED)
$arLabel[14] = GUICtrlCreateLabel("", 412, 297, 49, 17, $SS_CENTER)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetState(-1, $GUI_CHECKED)
$Group1 = GUICtrlCreateGroup("Betrag", 24, 420, 453, 59)
GUICtrlSetFont(-1, 10, 500)
GUICtrlSetColor(-1, $fcolor)
$Input1 = GUICtrlCreateInput("", 64, 442, 141, 21, BitOR($ES_RIGHT,$ES_AUTOHSCROLL))
GUICtrlSetColor(-1, $backcolor)
GUICtrlSetBkColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 800)
GUICtrlSetTip(-1, "Währung ganzzahlig oder mit maximal" & @LF & "2 Nachkommastellen eingeben." & @LF & "(Komma, nicht Dezimalpunkt verwenden.)")
$ret = _GUICtrlCreateColorButton("Stückelung", 316, 442, 125, 21, $backcolor, $fcolor)
$Button1 = $ret[0]
$Label16 = GUICtrlCreateLabel("EUR", 210, 445, 40, 17)
GUICtrlSetColor(-1, $fcolor)
GUICtrlSetFont(-1, 10, 500)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
GUICtrlSetState($Input1, $GUI_FOCUS)
ToolTip("Nicht verfügbare Werte können über die" & @LF & "jeweiligen Button abgewählt werden.", @DesktopWidth/2 -250, @DesktopHeight/2 -252)
Sleep(3500)
ToolTip("")

Do
    $msg = GUIGetMsg()
	For $i = 0 To 14
		If $msg = $arCheckBtn[$i][0] Then
			If $arCheckBtn[$i][1] = 0 Then
				GUICtrlSetImage($arCheckBtn[$i][0], $picpath & "check12x12.ico")
				$arCheckBtn[$i][1] = 1
			ElseIf $arCheckBtn[$i][1] = 1 Then
				GUICtrlSetImage($arCheckBtn[$i][0], $picpath & "uncheck12x12.ico")
				$arCheckBtn[$i][1] = 0
			EndIf
			GUICtrlSetState($Input1, $GUI_FOCUS)
		EndIf
	Next
    If $msg = $Button1 Then
        GUICtrlSetStyle($Button1, $SS_ETCHEDFRAME)
		Sleep(150)
        GUICtrlSetStyle($Button1, $SS_NOTIFY + $SS_GRAYRECT)
		_Berechnung()
	EndIf
Until $msg = $GUI_EVENT_CLOSE

Func _Berechnung()
	For $i = 0 To 14
		GUICtrlSetData($arLabel[$i], "")
	Next
	$div = StringReplace(GUICtrlRead($Input1), ",", ".")
	If _StringIsMoney($div) = 1 Then
		If $div > 0 Then
			For $i = 0 To 14
				If ($div >= $arVal[$i] And $arCheckBtn[$i][1] = 1) Then
					$G = Int($div / $arVal[$i])
					If $G > 0 Then GUICtrlSetData($arLabel[$i], $G)
					$R = Round($div - ($arVal[$i] * $G), 2)
					If $R = 0 Then ExitLoop
					$div = $R
				EndIf
			Next
			If $R > 0 Then GUICtrlSetData($Input1, "Rest " & $div)
		EndIf
	Else
		MsgBox(16, 'Achtung!', "Eingaben bitte ganzzahlig oder max. 2 Nachkommastellen!")
	EndIf
	GUICtrlSetState($Input1, $GUI_FOCUS)
EndFunc

Func _StringIsMoney($checkString)
Dim	$len = StringLen($checkString)
	If StringInStr($checkString, ".") Then
		$val = StringSplit($checkString, ".")
		If $val[0] > 2 Then Return 0
		If ($len - StringInStr($checkString, ".")) > 2 Then Return 0
	EndIf
	For $i = 1 To $len
		$tmp = StringMid($checkString, $i, 1)
		If Not (StringIsInt($tmp) Or $tmp = ".") Then 
			Return 0
		EndIf
	Next
	Return 1
EndFunc

;=============================================================================
;
; Function Name:   _GUICtrlCreateColorButton()
;
; Description:     Creates a colored Button
;
; Syntax:          _GUICtrlCreateColorButton($text, $left, $top, $width, $height,$bkcolor[,$fontcolor])
;
; Parameter(s);      $text = The text of the control
;                    $left = The left side of the control
;                    $top = The top of the control
;                    $width = The width of the control
;                    $height = The height of the control
;                    $bkcolor = Backgroundcolor of the control
;                    $fontcolor = [optional] Fontcolor of the control
;
; Return Value(s):  array[1] = used to change colors
;                   array[0] = notifies GUIGetMsg if user clicks
;
; Author:            rakudave <rakudave@gmx.net>
;=============================================================================
Func _GUICtrlCreateColorButton($text, $left, $top, $width, $height, $bkcolor, $fontcolor = -1)
    Local $colbut[2]
    If $fontcolor == -1 Then $fontcolor = 0x000000
    $colbut[0] = GUICtrlCreateLabel("", $left, $top, $width, $height, $SS_BLACKRECT)
    GUICtrlCreateLabel("", $left, $top, $width - 1, $height - 1, $SS_WHITERECT)
    GUICtrlCreateLabel("", $left + 1, $top + 1, $width - 2, $height - 2, $SS_GRAYRECT)
    $colbut[1] = GUICtrlCreateLabel($text, $left + 1, $top + 1, $width - 3, $height - 3, $SS_NOTIFY & $SS_CENTER)
    GUICtrlSetBkColor(-1, $bkcolor)
    GUICtrlSetColor(-1, $fontcolor)
	GUICtrlSetFont(-1, 10, 500)
    Return $colbut
EndFunc ;==>_GUICtrlCreateColorButton