Funciona perfectamente. Agradecería comentarios, no de la aplicación en sí, si no del modo de programar, si es correcto o se podría mejorar.
Tener en cuenta que soy novato en esto de Autoit (supe de su existencia hace 3 meses por un amigo) y no soy programador, ya que mi dedicación es el marketing online.
Código: Seleccionar todo
;Calculadora sencilla. by Chekok.2011
;includes necesarios.
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#NoTrayIcon ;No muestra icono en la barra de tareas.
;GUI de la calculadora.
$calculadora = GUICreate("Calculadora", 506, 260, 245, 167, $WS_EX_TRANSPARENT)
GUISetBkColor(0xC0DCC0)
$display_txt = GUICtrlCreateInput("0", 8, 8, 409, 40, $ES_RIGHT)
GUICtrlSetFont(-1, 20, 800, 0, "Arial")
GUICtrlSetColor(-1, 0x00FF00)
GUICtrlSetBkColor(-1, 0x000000)
$memoria_group = GUICtrlCreateGroup("Memoria", 0, 48, 153, 49, BitOR($GUI_SS_DEFAULT_GROUP,$BS_FLAT))
$mr_btn = GUICtrlCreateButton("MR", 8, 64, 43, 25, $BS_FLAT)
GUICtrlSetBkColor(-1, 0x808000)
$m1_btn = GUICtrlCreateButton("M+", 56, 64, 43, 25, $BS_FLAT)
GUICtrlSetBkColor(-1, 0x808000)
$m0_btn = GUICtrlCreateButton("M-", 104, 64, 43, 25, $BS_FLAT)
GUICtrlSetBkColor(-1, 0x808000)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$ce_btn = GUICtrlCreateButton("CE", 424, 8, 75, 33, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFF00)
$operadores_group = GUICtrlCreateGroup("Operadores", 8, 104, 137, 121, BitOR($GUI_SS_DEFAULT_GROUP,$BS_FLAT))
$suma_btn = GUICtrlCreateButton("+", 16, 128, 51, 25, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xA6CAF0)
$resta_btn = GUICtrlCreateButton("-", 16, 160, 51, 25, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xA6CAF0)
$producto_btn = GUICtrlCreateButton("x", 80, 128, 51, 25, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xA6CAF0)
$division_btn = GUICtrlCreateButton("/", 80, 160, 51, 25, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xA6CAF0)
$igual_btn = GUICtrlCreateButton("=", 16, 192, 115, 25, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0x3A6EA5)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$numeros_group = GUICtrlCreateGroup("Números", 168, 48, 249, 177, BitOR($GUI_SS_DEFAULT_GROUP,$BS_FLAT))
$uno_btn = GUICtrlCreateButton("1", 176, 64, 75, 33, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFBF0)
$dos_btn = GUICtrlCreateButton("2", 256, 64, 75, 33, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFBF0)
$tres_btn = GUICtrlCreateButton("3", 336, 64, 75, 33, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFBF0)
$cuatro_btn = GUICtrlCreateButton("4", 176, 104, 75, 33, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFBF0)
$cinco_btn = GUICtrlCreateButton("5", 256, 104, 75, 33, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFBF0)
$seis_btn = GUICtrlCreateButton("6", 336, 104, 75, 33, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFBF0)
$siete_btn = GUICtrlCreateButton("7", 176, 144, 75, 33, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFBF0)
$ocho_btn = GUICtrlCreateButton("8", 256, 144, 75, 33, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFBF0)
$nueve_btn = GUICtrlCreateButton("9", 336, 144, 75, 33, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFBF0)
$cero_btn = GUICtrlCreateButton("0", 256, 184, 75, 33, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xFFFBF0)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$especiales_group = GUICtrlCreateGroup("Especiales", 424, 56, 73, 169, BitOR($GUI_SS_DEFAULT_GROUP,$BS_FLAT))
$porcentaje_btn = GUICtrlCreateButton("%", 432, 80, 59, 33, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0x008080)
$decimal_btn = GUICtrlCreateButton(",", 432, 128, 59, 33, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0x008080)
$off_btn = GUICtrlCreateButton("Off", 432, 176, 59, 33, $BS_FLAT)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0x008080)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
;Variables.
Local $numero[2]
$numero[0] = "0"
$numero[1] = "0"
$memoria = 0
$operador = 0
$resultado = 0
;Eventos de los botones.
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $off_btn
Exit
Case $ce_btn
reset()
Case $cero_btn
numeros(0)
Case $uno_btn
numeros(1)
Case $dos_btn
numeros(2)
Case $tres_btn
numeros(3)
Case $cuatro_btn
numeros(4)
Case $cinco_btn
numeros(5)
Case $seis_btn
numeros(6)
Case $siete_btn
numeros(7)
Case $ocho_btn
numeros(8)
Case $nueve_btn
numeros(9)
Case $decimal_btn
punto()
Case $m1_btn
mmas()
Case $m0_btn
mmenos()
Case $mr_btn
mr()
Case $suma_btn
suma()
Case $resta_btn
resta()
Case $producto_btn
producto()
Case $division_btn
division()
Case $porcentaje_btn
porcentaje()
Case $igual_btn
resultado()
EndSwitch
WEnd
;Funciones.
Func reset()
$numero[0] = 0
$numero[1] = 0
$operador = 0
$resultado = 0
GUICtrlSetData($display_txt, 0)
EndFunc
Func numeros($num)
If $numero[0] == "0" Then
$numero[0] = ""
$numero[0] = $numero[0] & $num
GUICtrlSetData($display_txt, $numero[0])
ElseIf $numero[0] == "." Then
$numero[0] = "0."
$numero[0] = $numero[0] & $num
GUICtrlSetData($display_txt, $numero[0])
Else
$numero[0] = $numero[0] & $num
GUICtrlSetData($display_txt, $numero[0])
EndIf
EndFunc
Func punto()
If StringIsDigit ($numero[0]) Then
numeros(".")
EndIf
EndFunc
Func mr()
$numero[0] = $memoria
GUICtrlSetData($display_txt, $memoria)
EndFunc
Func mmas()
If $memoria <> 0 Then
$memoria = $memoria + Number(GUICtrlRead($display_txt))
Else
$memoria = GUICtrlRead($display_txt)
EndIf
EndFunc
Func mmenos()
If ($memoria <> 0) And (GUICtrlRead($display_txt)== 0) Then
$memoria = $memoria - Number(GUICtrlRead($display_txt))
Else
$memoria = 0
EndIf
EndFunc
Func suma()
$numero[1] = $numero[0]
$numero[0] = "0"
$operador = "+"
EndFunc
Func resta()
$numero[1] = $numero[0]
$numero[0] = "0"
$operador = "-"
EndFunc
Func producto()
$numero[1] = $numero[0]
$numero[0] = "0"
$operador = "*"
EndFunc
Func division()
$numero[1] = $numero[0]
$numero[0] = "0"
$operador = "/"
EndFunc
Func porcentaje()
$numero[1] = $numero[0]
$numero[0] = "0"
$operador = "porcentaje"
EndFunc
Func resultado()
If $operador <> "porcentaje" Then
$preresultado = $numero[1] & $operador & $numero[0]
$resultado = Execute($preresultado)
GUICtrlSetData($display_txt, $resultado)
$numero[0] = GUICtrlRead($display_txt)
Else
$preresultado = $numero[1] & "*("& $numero[0] & " / 100)"
$resultado = Execute($preresultado)
GUICtrlSetData($display_txt, $resultado)
$numero[0] = GUICtrlRead($display_txt)
EndIf
EndFunc