แจกโค๊ดโปรแกรม เครื่องคิดเลข
หลังจากไม่ประสบความสำเร็จในการออกแบบเขียนโปรแกรมเครื่องคิดเลขมานาน
อาจารย์ค้นคิดออกแบบเขียนใหม่อยู่หลายครั้ง จึงประสบความสำเร็จ ดังโค๊ดที่เห็นอยู่ด้านล่าง
#NoTrayIcon
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiEdit.au3>
#Include <GuiButton.au3>
Opt('MustDeclareVars', 1)
CalculatorPlus()
Func CalculatorPlus()
Global $Ads, $Gta, $Gts, $Ed1, $Ed2, $Ed3, $Ed4, $Child
Local $hForm = GUICreate("Calculator Plus", 257, 227, -1, -1)
Local $MenuItem2 = GUICtrlCreateMenu("&Edit")
Local $MenuItem_Copy = GUICtrlCreateMenuItem("Copy Ctrl+C", $MenuItem2)
Local $MenuItem_Paste = GUICtrlCreateMenuItem("Paste Ctrl+V", $MenuItem2)
GUICtrlSetState(-1, $GUI_DISABLE)
Local $MenuItem1 = GUICtrlCreateMenu("&View")
Local $MenuItem6 = GUICtrlCreateMenuItem("Standard", $MenuItem1, -1 , 1)
GUICtrlSetState(-1, $GUI_CHECKED)
Local $MenuItem7 = GUICtrlCreateMenuItem("Scientific", $MenuItem1)
Local $MenuItem11 = GUICtrlCreateMenuItem("Conversion", $MenuItem1)
Local $MenuItem12 = GUICtrlCreateMenuItem("", $MenuItem1)
Local $MenuItem13 = GUICtrlCreateMenuItem("Digit grouping ", $MenuItem1)
GUICtrlSetState(-1, $GUI_CHECKED)
Local $MenuItem14 = GUICtrlCreateMenuItem("Classic View", $MenuItem1)
GUICtrlSetState(-1, $GUI_CHECKED)
Local $MenuItem4 = GUICtrlCreateMenu("&Help")
Local $MenuItem8 = GUICtrlCreateMenuItem("Help Topics", $MenuItem4)
Local $MenuItem9 = GUICtrlCreateMenuItem("", $MenuItem4)
Local $MenuItem_About = GUICtrlCreateMenuItem("About Calculator Plus", $MenuItem4)
GUISetIcon("C:\WINDOWS\system32\calc.exe")
Local $Button1 = GUICtrlCreateButton("1", 52, 137, 36, 29, $WS_GROUP)
Local $Button2 = GUICtrlCreateButton("2", 92, 137, 36, 29, $WS_GROUP)
Local $Button3 = GUICtrlCreateButton("3", 132, 137, 36, 29, $WS_GROUP)
Local $Button4 = GUICtrlCreateButton("4", 52, 104, 36, 29, $WS_GROUP)
Local $Button5 = GUICtrlCreateButton("5", 92, 104, 36, 29, $WS_GROUP)
Local $Button6 = GUICtrlCreateButton("6", 132, 104, 36, 29, $WS_GROUP)
Local $Button7 = GUICtrlCreateButton("7", 52, 71, 36, 29, $WS_GROUP)
Local $Button8 = GUICtrlCreateButton("8", 92, 71, 36, 29, $WS_GROUP)
Local $Button9 = GUICtrlCreateButton("9", 132, 71, 36, 29, $WS_GROUP)
Local $Button_Zero = GUICtrlCreateButton("0", 52, 170, 36, 29, $WS_GROUP)
Local $Button11 = GUICtrlCreateButton("+/-", 92, 170, 36, 29, $WS_GROUP)
Local $Button_Dot = GUICtrlCreateButton(".", 132, 170, 36, 29, $WS_GROUP)
Local $Button_Add = GUICtrlCreateButton("+", 172, 170, 36, 29, $WS_GROUP)
Local $Button_Ans = GUICtrlCreateButton("=", 212, 170, 36, 29, $WS_GROUP)
Local $Button_Mul = GUICtrlCreateButton("*", 172, 104, 36, 29)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
Local $Button_Div = GUICtrlCreateButton("/", 172, 71, 36, 29, $WS_GROUP)
Local $Button17 = GUICtrlCreateButton("sqrt", 212, 71, 36, 29, $WS_GROUP)
Local $Button18 = GUICtrlCreateButton("%", 212, 104, 36, 29, $WS_GROUP)
Local $Button19 = GUICtrlCreateButton("1/x", 212, 137, 36, 29, $WS_GROUP)
Local $Button_Sub = GUICtrlCreateButton("-", 172, 137, 36, 29, $WS_GROUP)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
Local $Button21 = GUICtrlCreateButton("MC", 7, 71, 36, 29, $WS_GROUP)
Local $Button22 = GUICtrlCreateButton("MR", 7, 104, 36, 29, $WS_GROUP)
Local $Button23 = GUICtrlCreateButton("MS", 7, 137, 36, 29, $WS_GROUP)
Local $Button24 = GUICtrlCreateButton("M+", 7, 170, 36, 29, $WS_GROUP)
Local $Button_BS = GUICtrlCreateButton("Backspace", 52, 35, 63, 29, $WS_GROUP)
Local $Button26 = GUICtrlCreateButton("CE", 119, 35, 63, 29, $WS_GROUP)
Local $Button_Clear = GUICtrlCreateButton("C", 186, 35, 63, 29, $WS_GROUP)
Local $Edit1 = GUICtrlCreateEdit("", 8, 0, 239, 23, BitOR($ES_RIGHT,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
GUICtrlSetData(-1, "")
GUICtrlSetBkColor(-1, 0xFFFFFF)
Local $Edit3 = GUICtrlCreateEdit("", 8, 0, 239, 23, BitOR($ES_RIGHT,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
GUICtrlSetData(-1, "")
GUICtrlSetBkColor(-1, 0xFFFFFF)
Local $Edit2 = GUICtrlCreateEdit("", 8, 0, 239, 23, BitOR($ES_RIGHT,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
GUICtrlSetData(-1, "0")
GUICtrlSetBkColor(-1, 0xFFFFFF)
Local $Edit4 = GUICtrlCreateEdit("", 8, 0, 239, 23, BitOR($ES_RIGHT,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
GUICtrlSetData(-1, "0")
GUICtrlSetBkColor(-1, 0xFFFFFF)
Local $Graphic1 = GUICtrlCreateGraphic(10, 37, 26, 25, BitOR($SS_NOTIFY,$SS_SUNKEN))
$Child = GUICreate("About calculator Plus", 319, 165, -1, -1, BitOR($WS_MINIMIZEBOX,$WS_DLGFRAME,$WS_GROUP,$WS_CLIPSIBLINGS))
Local $Button_OK = GUICtrlCreateButton("OK", 120, 105, 75, 25, $WS_GROUP)
GUICtrlCreateLabel("Microsoft @ Calculator Plus"&@CRLF&"Version1.0"&@CRLF&"Copyright @ 2004 Microsoft Corporation", 50, 8, 200, 100)
GUICtrlCreateLabel("This product is licensed under the terms of the ", 8, 68, 224, 17)
Local $Label_User = GUICtrlCreateLabel("End-User", 232, 68, 48, 17)
GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
GUICtrlSetColor(-1, 0x00FFFF)
Local $Label_Agree = GUICtrlCreateLabel("License Agreement.", 8, 85, 98, 17)
GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
GUICtrlSetColor(-1, 0x00FF00)
GUISwitch($hForm)
GUISetState()
WinSetOnTop("Calculator Plus", "", 1)
While 1
Local $nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete($Child)
GUIDelete($hForm)
Exit
Case $MenuItem_About
GUISwitch($Child)
GUISetState(@SW_SHOW, $Child)
WinSetOnTop("About calculator Plus", "", 1)
Case $Button_OK
GUISwitch($hForm)
GUISetState(@SW_HIDE, $Child)
Case $MenuItem_Copy
ClipPut(_GUICtrlEdit_GetText($Edit1))
GUICtrlSetState($MenuItem_Paste, $GUI_ENABLE)
GUICtrlSetState($Edit4, $GUI_SHOW)
_GUICtrlEdit_SetText($Edit1, '')
Case $MenuItem_Paste
_GUICtrlEdit_SetText($Edit4, ClipGet())
GUICtrlSetState($Edit4, $GUI_SHOW)
Case $Button_BS
If _GUICtrlEdit_GetText($Edit1)='' Then
_GUICtrlEdit_SetText($Edit1, '')
GUICtrlSetState($Edit2, $GUI_SHOW)
GUICtrlSetState($Edit4, $GUI_HIDE)
Else
GUICtrlSetState($Edit2, $GUI_HIDE)
Local $StringTR=StringTrimRight(_GUICtrlEdit_GetText($Edit1), 1)
_GUICtrlEdit_SetText($Edit1, $StringTR)
EndIf
Case $Button_Clear
_GUICtrlEdit_SetText($Edit1, '')
GUICtrlSetState($Edit1, $GUI_HIDE)
GUICtrlSetState($Edit2, $GUI_SHOW)
GUICtrlSetState($Edit4, $GUI_HIDE)
Case $Button7
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit1, $GUI_SHOW)
Local $GT7=_GUICtrlEdit_GetText($Edit1)
_GUICtrlEdit_SetText($Edit1, $GT7&7)
Case $Button8
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit1, $GUI_SHOW)
Local $GT8=_GUICtrlEdit_GetText($Edit1)
_GUICtrlEdit_SetText($Edit1, $GT8&8)
Case $Button9
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit1, $GUI_SHOW)
Local $GT9=_GUICtrlEdit_GetText($Edit1)
_GUICtrlEdit_SetText($Edit1, $GT9&9)
Case $Button4
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit1, $GUI_SHOW)
Local $GT4=_GUICtrlEdit_GetText($Edit1)
_GUICtrlEdit_SetText($Edit1, $GT4&4)
Case $Button5
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit1, $GUI_SHOW)
Local $GT5=_GUICtrlEdit_GetText($Edit1)
_GUICtrlEdit_SetText($Edit1, $GT5&5)
Case $Button6
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit1, $GUI_SHOW)
Local $GT6=_GUICtrlEdit_GetText($Edit1)
_GUICtrlEdit_SetText($Edit1, $GT6&6)
Case $Button1
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit1, $GUI_SHOW)
Local $GT1=_GUICtrlEdit_GetText($Edit1)
_GUICtrlEdit_SetText($Edit1, $GT1&1)
Case $Button2
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit1, $GUI_SHOW)
Local $GT2=_GUICtrlEdit_GetText($Edit1)
_GUICtrlEdit_SetText($Edit1, $GT2&2)
Case $Button3
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit1, $GUI_SHOW)
Local $GT3=_GUICtrlEdit_GetText($Edit1)
_GUICtrlEdit_SetText($Edit1, $GT3&3)
Case $Button_Zero
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit1, $GUI_SHOW)
Local $GT_Zero=_GUICtrlEdit_GetText($Edit1)
_GUICtrlEdit_SetText($Edit1, $GT_Zero&0)
Case $Button_Dot
If Not StringInStr(_GUICtrlEdit_GetText($Edit1), ".")Then
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit1, $GUI_SHOW)
Local $GT_Dot=_GUICtrlEdit_GetText($Edit1)
_GUICtrlEdit_SetText($Edit1, $GT_Dot&'.')
EndIf
Case $Button_Add
$Ed1 = _GUICtrlEdit_GetText($Edit1)
If $Ed1 = '' then ContinueLoop
_GUICtrlEdit_SetText($Edit1, '')
GUICtrlSetState($Edit1, $GUI_HIDE)
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit3, $GUI_SHOW)
_GUICtrlEdit_SetText($Edit3, $Ed1)
$Gta=_GUICtrlButton_GetText($Button_Add)
Case $Button_Sub
$Ed2 = _GUICtrlEdit_GetText($Edit1)
If $Ed2 = '' then ContinueLoop
_GUICtrlEdit_SetText($Edit1, '')
GUICtrlSetState($Edit1, $GUI_HIDE)
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit3, $GUI_SHOW)
_GUICtrlEdit_SetText($Edit3, $Ed2)
$Gta=_GUICtrlButton_GetText($Button_Sub)
Case $Button_Mul
$Ed3 = _GUICtrlEdit_GetText($Edit1)
If $Ed3 = '' then ContinueLoop
_GUICtrlEdit_SetText($Edit1, '')
GUICtrlSetState($Edit1, $GUI_HIDE)
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit3, $GUI_SHOW)
_GUICtrlEdit_SetText($Edit3, $Ed3)
$Gta =_GUICtrlButton_GetText($Button_Mul)
Case $Button_Div
$Ed4 = _GUICtrlEdit_GetText($Edit1)
If $Ed4 = '' then ContinueLoop
_GUICtrlEdit_SetText($Edit1, '')
GUICtrlSetState($Edit1, $GUI_HIDE)
GUICtrlSetState($Edit2, $GUI_HIDE)
GUICtrlSetState($Edit3, $GUI_SHOW)
_GUICtrlEdit_SetText($Edit3, $Ed4)
$Gta =_GUICtrlButton_GetText($Button_Div)
Case $Button_Ans
Select
Case $Gta = '+'
$Ads = _GUICtrlEdit_GetText($Edit1) + $Ed1
_GUICtrlEdit_SetText($Edit1, '')
_GUICtrlEdit_SetText($Edit1, $Ads)
Case $Gta = '-'
$Ads = $Ed2 - _GUICtrlEdit_GetText($Edit1)
_GUICtrlEdit_SetText($Edit1, '')
_GUICtrlEdit_SetText($Edit1, $Ads)
Case $Gta = '*'
$Ads = $Ed3 * _GUICtrlEdit_GetText($Edit1)
_GUICtrlEdit_SetText($Edit1, '')
_GUICtrlEdit_SetText($Edit1, $Ads)
Case $Gta = '/'
$Ads = $Ed4 / _GUICtrlEdit_GetText($Edit1)
_GUICtrlEdit_SetText($Edit1, '')
_GUICtrlEdit_SetText($Edit1, $Ads)
Case Else
If $Ads = @error Then
_GUICtrlEdit_SetText($Edit1, '')
GUICtrlSetState($Edit2, $GUI_SHOW)
EndIf
EndSelect
EndSwitch
WEnd
EndFunc ;==> Calculator Plus