home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Programmer'…arterly (Limited Edition) / Visual_Basic_Programmers_Journal_VB-CD_Quarterly_Limited_Edition_1995.iso / code / ch18code / calc.frm < prev    next >
Text File  |  1994-10-11  |  11KB  |  363 lines

  1. VERSION 4.00
  2. Begin VB.Form Calculator 
  3.    BorderStyle     =   1  'Fixed Single
  4.    Caption         =   "Calculator"
  5.    ClientHeight    =   3000
  6.    ClientLeft      =   5385
  7.    ClientTop       =   1605
  8.    ClientWidth     =   3240
  9.    ClipControls    =   0   'False
  10.    BeginProperty Font 
  11.       name            =   "System"
  12.       charset         =   0
  13.       weight          =   700
  14.       size            =   9.75
  15.       underline       =   0   'False
  16.       italic          =   0   'False
  17.       strikethrough   =   0   'False
  18.    EndProperty
  19.    Height          =   3405
  20.    Icon            =   "CALC.frx":0000
  21.    Left            =   5325
  22.    LinkMode        =   1  'Source
  23.    LinkTopic       =   "Form1"
  24.    MaxButton       =   0   'False
  25.    ScaleHeight     =   3000
  26.    ScaleWidth      =   3240
  27.    Top             =   1260
  28.    Width           =   3360
  29.    Begin VB.CommandButton Number 
  30.       Caption         =   "7"
  31.       Height          =   480
  32.       Index           =   7
  33.       Left            =   120
  34.       TabIndex        =   7
  35.       Top             =   600
  36.       Width           =   480
  37.    End
  38.    Begin VB.CommandButton Number 
  39.       Caption         =   "8"
  40.       Height          =   480
  41.       Index           =   8
  42.       Left            =   720
  43.       TabIndex        =   8
  44.       Top             =   600
  45.       Width           =   480
  46.    End
  47.    Begin VB.CommandButton Number 
  48.       Caption         =   "9"
  49.       Height          =   480
  50.       Index           =   9
  51.       Left            =   1320
  52.       TabIndex        =   9
  53.       Top             =   600
  54.       Width           =   480
  55.    End
  56.    Begin VB.CommandButton Cancel 
  57.       Caption         =   "C"
  58.       Height          =   480
  59.       Left            =   2040
  60.       TabIndex        =   10
  61.       Top             =   600
  62.       Width           =   480
  63.    End
  64.    Begin VB.CommandButton CancelEntry 
  65.       Caption         =   "CE"
  66.       Height          =   480
  67.       Left            =   2640
  68.       TabIndex        =   11
  69.       Top             =   600
  70.       Width           =   480
  71.    End
  72.    Begin VB.CommandButton Number 
  73.       Caption         =   "4"
  74.       Height          =   480
  75.       Index           =   4
  76.       Left            =   120
  77.       TabIndex        =   4
  78.       Top             =   1200
  79.       Width           =   480
  80.    End
  81.    Begin VB.CommandButton Number 
  82.       Caption         =   "5"
  83.       Height          =   480
  84.       Index           =   5
  85.       Left            =   720
  86.       TabIndex        =   5
  87.       Top             =   1200
  88.       Width           =   480
  89.    End
  90.    Begin VB.CommandButton Number 
  91.       Caption         =   "6"
  92.       Height          =   480
  93.       Index           =   6
  94.       Left            =   1320
  95.       TabIndex        =   6
  96.       Top             =   1200
  97.       Width           =   480
  98.    End
  99.    Begin VB.CommandButton Operator 
  100.       Caption         =   "+"
  101.       Height          =   480
  102.       Index           =   1
  103.       Left            =   2040
  104.       TabIndex        =   12
  105.       Top             =   1200
  106.       Width           =   480
  107.    End
  108.    Begin VB.CommandButton Operator 
  109.       Caption         =   "-"
  110.       Height          =   480
  111.       Index           =   3
  112.       Left            =   2640
  113.       TabIndex        =   13
  114.       Top             =   1200
  115.       Width           =   480
  116.    End
  117.    Begin VB.CommandButton Number 
  118.       Caption         =   "1"
  119.       Height          =   480
  120.       Index           =   1
  121.       Left            =   120
  122.       TabIndex        =   1
  123.       Top             =   1800
  124.       Width           =   480
  125.    End
  126.    Begin VB.CommandButton Number 
  127.       Caption         =   "2"
  128.       Height          =   480
  129.       Index           =   2
  130.       Left            =   720
  131.       TabIndex        =   2
  132.       Top             =   1800
  133.       Width           =   480
  134.    End
  135.    Begin VB.CommandButton Number 
  136.       Caption         =   "3"
  137.       Height          =   480
  138.       Index           =   3
  139.       Left            =   1320
  140.       TabIndex        =   3
  141.       Top             =   1800
  142.       Width           =   480
  143.    End
  144.    Begin VB.CommandButton Operator 
  145.       Caption         =   "X"
  146.       Height          =   480
  147.       Index           =   2
  148.       Left            =   2040
  149.       TabIndex        =   14
  150.       Top             =   1800
  151.       Width           =   480
  152.    End
  153.    Begin VB.CommandButton Operator 
  154.       Caption         =   "/"
  155.       Height          =   480
  156.       Index           =   0
  157.       Left            =   2640
  158.       TabIndex        =   15
  159.       Top             =   1800
  160.       Width           =   480
  161.    End
  162.    Begin VB.CommandButton Number 
  163.       Caption         =   "0"
  164.       Height          =   480
  165.       Index           =   0
  166.       Left            =   120
  167.       TabIndex        =   0
  168.       Top             =   2400
  169.       Width           =   1080
  170.    End
  171.    Begin VB.CommandButton Decimal 
  172.       Caption         =   "."
  173.       Height          =   480
  174.       Left            =   1320
  175.       TabIndex        =   18
  176.       Top             =   2400
  177.       Width           =   480
  178.    End
  179.    Begin VB.CommandButton Operator 
  180.       Caption         =   "="
  181.       Height          =   480
  182.       Index           =   4
  183.       Left            =   2040
  184.       TabIndex        =   16
  185.       Top             =   2400
  186.       Width           =   480
  187.    End
  188.    Begin VB.CommandButton Percent 
  189.       Caption         =   "%"
  190.       Height          =   480
  191.       Left            =   2640
  192.       TabIndex        =   17
  193.       Top             =   2400
  194.       Width           =   480
  195.    End
  196.    Begin VB.Label pInput 
  197.       Height          =   375
  198.       Left            =   480
  199.       TabIndex        =   20
  200.       Top             =   3360
  201.       Width           =   2055
  202.    End
  203.    Begin VB.Label Readout 
  204.       Alignment       =   1  'Right Justify
  205.       BackColor       =   &H0000FFFF&
  206.       BorderStyle     =   1  'Fixed Single
  207.       Caption         =   "0."
  208.       BeginProperty Font 
  209.          name            =   "MS Sans Serif"
  210.          charset         =   0
  211.          weight          =   700
  212.          size            =   12
  213.          underline       =   0   'False
  214.          italic          =   0   'False
  215.          strikethrough   =   0   'False
  216.       EndProperty
  217.       ForeColor       =   &H00000000&
  218.       Height          =   375
  219.       Left            =   120
  220.       TabIndex        =   19
  221.       Top             =   105
  222.       Width           =   3000
  223.    End
  224. End
  225. Attribute VB_Name = "Calculator"
  226. Attribute VB_Creatable = False
  227. Attribute VB_Exposed = False
  228. ' ------------------------------------------------------------------------
  229. '               Copyright (C) 1994 Microsoft Corporation
  230. '
  231. ' You have a royalty-free right to use, modify, reproduce and distribute
  232. ' the Sample Application Files (and/or any modified version) in any way
  233. ' you find useful, provided that you agree that Microsoft has no warranty,
  234. ' obligations or liability for any Sample Application Files.
  235. ' ------------------------------------------------------------------------
  236. Option Explicit
  237. Dim Op1, Op2                ' Previously input operand.
  238. Dim DecimalFlag As Integer  ' Decimal point present yet?
  239. Dim NumOps As Integer       ' Number of operands.
  240. Dim LastInput               ' Indicate type of last keypress event.
  241. Dim OpFlag                  ' Indicate pending operation.
  242. Dim TempReadout
  243.  
  244. ' Click event procedure for C (cancel) key.
  245. ' Reset the display and initializes variables.
  246. Private Sub Cancel_Click()
  247.     Readout = "0."
  248.     Op1 = 0
  249.     Op2 = 0
  250.     Form_Load
  251. End Sub
  252.  
  253. ' Click event procedure for CE (cancel entry) key.
  254. Private Sub CancelEntry_Click()
  255.     Readout = "0."
  256.     DecimalFlag = False
  257.     LastInput = "CE"
  258. End Sub
  259.  
  260. ' Click event procedure for decimal point (.) key.
  261. ' If last keypress was an operator, initialize
  262. ' readout to "0." Otherwise, append a decimal
  263. ' point to the display.
  264. Public Sub Decimal_Click()
  265.     If LastInput = "NEG" Then
  266.         Readout = "-0."
  267.     ElseIf LastInput <> "NUMS" Then
  268.         Readout = "0."
  269.     End If
  270.     DecimalFlag = True
  271.     LastInput = "NUMS"
  272. End Sub
  273.  
  274. ' Initialization routine for the form.
  275. ' Set all variables to initial values.
  276. Private Sub Form_Load()
  277.     DecimalFlag = False
  278.     NumOps = 0
  279.     LastInput = "NONE"
  280.     OpFlag = " "
  281. End Sub
  282.  
  283. ' Click event procedure for number keys (0-9).
  284. ' Append new number to the number in the display.
  285. Public Sub Number_Click(index As Integer)
  286.     If LastInput <> "NUMS" Then
  287.         Readout = "."
  288.         DecimalFlag = False
  289.     End If
  290.     If DecimalFlag Then
  291.         Readout = Readout + Number(index).Caption
  292.     Else
  293.         Readout = Left(Readout, InStr(Readout, ".") - 1) + Number(index).Caption + "."
  294.     End If
  295.     If LastInput = "NEG" Then Readout = "-" & Readout
  296.     LastInput = "NUMS"
  297. End Sub
  298.  
  299. ' Click event procedure for operator keys (+, -, x, /, =).
  300. ' If the immediately preceeding keypress was part of a
  301. ' number, increments NumOps. If one operand is present,
  302. ' set Op1. If two are present, set Op1 equal to the
  303. ' result of the operation on Op1 and the current
  304. ' input string, and display the result.
  305. Public Sub Operator_Click(index As Integer)
  306.     TempReadout = Readout
  307.     If LastInput = "NUMS" Then
  308.         NumOps = NumOps + 1
  309.     End If
  310.     Select Case NumOps
  311.         Case 0
  312.         If Operator(index).Caption = "-" And LastInput <> "NEG" Then
  313.             Readout = "-" & Readout
  314.             LastInput = "NEG"
  315.         End If
  316.         Case 1
  317.         Op1 = Readout
  318.         If Operator(index).Caption = "-" And LastInput <> "NUMS" And OpFlag <> "=" Then
  319.             Readout = "-"
  320.             LastInput = "NEG"
  321.         End If
  322.         Case 2
  323.         Op2 = TempReadout
  324.         Select Case OpFlag
  325.             Case "+"
  326.                 Op1 = Val(Op1) + Val(Op2)
  327.             Case "-"
  328.                 Op1 = Op1 - Op2
  329.             Case "X"
  330.                 Op1 = Op1 * Op2
  331.             Case "/"
  332.                 If Op2 = 0 Then
  333.                    MsgBox "Can't divide by zero", 48, "Calculator"
  334.                 Else
  335.                    Op1 = Op1 / Op2
  336.                 End If
  337.             Case "="
  338.                 Op1 = Op2
  339.             Case "%"
  340.                 Op1 = Op1 * Op2
  341.             End Select
  342.         Readout = Op1
  343.         NumOps = 1
  344.     End Select
  345.     If LastInput <> "NEG" Then
  346.         LastInput = "OPS"
  347.         OpFlag = Operator(index).Caption
  348.     End If
  349. End Sub
  350.  
  351. ' Click event procedure for percent key (%).
  352. ' Compute and display a percentage of the first operand.
  353. Public Sub Percent_Click()
  354.     Readout = Readout / 100
  355.     LastInput = "Ops"
  356.     OpFlag = "%"
  357.     NumOps = NumOps + 1
  358.     DecimalFlag = True
  359. End Sub
  360.  
  361.  
  362.  
  363.