Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Пример собственного GUI-калькулятора

Ответить
Настройки темы
Пример собственного GUI-калькулятора

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Creat0R
Дата: 04-06-2009
Описание: Адаптация кода для последних версии AutoIt'а
Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>

Global $aButtons_Arr[11]
Global $aOperations_Arr[1]

$Left = 60
$Top = 140

$Gui = GUICreate("Calculator - Demo", 240, 290)

$CTRL_Edit = GUICtrlCreateEdit(0, 8, 2, 220, 23, BitOR($ES_READONLY, $ES_RIGHT), $WS_EX_STATICEDGE)

GUICtrlCreateGroup("Operations", 10, 25, 220, 90)

$Plus_Button = GUICtrlCreateButton("+", 20, 40, 25, 20)
$Minus_Button = GUICtrlCreateButton("-", 50, 40, 25, 20)
$Devide_Button = GUICtrlCreateButton("/", 80, 40, 25, 20)
$Multiply_Button = GUICtrlCreateButton("*", 110, 40, 25, 20)

GuiCtrlCreateSeperator(1, 142, 40, 3, 20)

$Pi_Button = GUICtrlCreateButton("Pi", 150, 40, 30, 20)
$Sqrt_Button = GUICtrlCreateButton("Sqrt", 190, 40, 30, 20)

GuiCtrlCreateSeperator(0, 18, 70, 3, 205)

$Equel_Button = GUICtrlCreateButton("=", 20, 80, 60, 25)
$CE_Button = GUICtrlCreateButton("CE", 150, 80, 70, 25)

GUICtrlCreateGroup("Digits", 10, 125, 220, 150)

For $i = 1 To 9
    If $Left >= 180 Then
        $Left = 60
        $Top += 32
    EndIf

    $aButtons_Arr[$i] = GUICtrlCreateButton($i, $Left, $Top, 36, 29)
    $Left += 40
Next

;Забыл нолик :D
$aButtons_Arr[10] = GUICtrlCreateButton("0", 60, 240, 115, 29)

GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case - 3
            Exit
        Case $aButtons_Arr[1] To $aButtons_Arr[10]
            Local $iUbound = UBound($aOperations_Arr)

            If $iUbound > 1 And StringIsDigit($aOperations_Arr[$iUbound - 1]) Then
                $aOperations_Arr[$iUbound - 1] &= GUICtrlRead($nMsg, 1)
                $iUbound -= 1
            Else
                ReDim $aOperations_Arr[$iUbound + 1]
                $aOperations_Arr[$iUbound] = GUICtrlRead($nMsg, 1)
            EndIf

            GUICtrlSetData($CTRL_Edit, $aOperations_Arr[$iUbound])
        Case $Plus_Button To $Multiply_Button
            Local $iUbound = UBound($aOperations_Arr)

            If $iUbound <= 1 Or $aOperations_Arr[$iUbound - 1] = GUICtrlRead($nMsg, 1) Then ContinueLoop

            ReDim $aOperations_Arr[$iUbound + 1]
            $aOperations_Arr[$iUbound] = GUICtrlRead($nMsg, 1)
        Case $Equel_Button
            Local $Operations_Str = ""

            For $i = 1 To UBound($aOperations_Arr) - 1
                $Operations_Str &= $aOperations_Arr[$i]
            Next

            ClearOperations()

            $sResults = Execute($Operations_Str)
            If $sResults = "" Then $sResults = 0

            GUICtrlSetData($CTRL_Edit, $sResults)
        Case $Pi_Button
            ClearOperations()
            GUICtrlSetData($CTRL_Edit, Pi_Calculate())
        Case $Sqrt_Button
            Local $ReadEdit = GUICtrlRead($CTRL_Edit)
            If $ReadEdit <= 0 Then ContinueLoop

            ClearOperations()
            GUICtrlSetData($CTRL_Edit, Sqrt($ReadEdit))
        Case $CE_Button
            ClearOperations()
            GUICtrlSetData($CTRL_Edit, "0")
    EndSwitch
WEnd

Func ClearOperations()
    $aOperations_Arr = ""
    Dim $aOperations_Arr[1]
EndFunc

Func Pi_Calculate($iRound = 100000)
    Local $n = 0
    For $i = 1 To $iRound
        $n += 1 / ($i * $i)
    Next
    Return Sqrt($n * 6)
EndFunc

Func GuiCtrlCreateSeperator($Direction, $Left, $Top, $Width = 3, $Lenght = 25)
    Switch $Direction
        Case 0
            GUICtrlCreateLabel("", $Left, $Top, $Lenght, $Width, $SS_SUNKEN)
        Case 1
            GUICtrlCreateLabel("", $Left, $Top, $Width, $Lenght, $SS_SUNKEN)
    EndSwitch
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 18:34, 13-12-2007

 


Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Пример собственного GUI-калькулятора

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Проблема с ЖК монитором калькулятора - пропадают цифры Erix Прочее железо 4 14-10-2014 16:53
Интерфейс - [решено] Неправильное отображение калькулятора Morpheus Microsoft Windows 7 35 28-09-2010 19:33
Не работает GUI после выхода другова GUI sashadeg AutoIt 3 15-05-2009 22:03
Проблема с ярлыком Калькулятора Cubbie Microsoft Windows 2000/XP 6 16-09-2005 21:05
Скин для калькулятора Vlad Drakula Программирование и базы данных 12 01-06-2004 08:55




 
Переход