A small RPN calculator based on vegaseat's stay-on-top calc. (Delphi 7)

pankleks 0 Tallied Votes 190 Views Share

It is a small two-in-one calculator that can work as a regular or RPN calculator, selected by a RPN checkbox. It has a four level stack similar to the HP 48 calculator made from four Tmemos. This code shows you how to make visual effects(RPN stack) from existing delphi components. I have also included 'calc.dfm' form code at the end to make it easy putting it together.

{------------------------  calc.pas  -------------------------}

unit calc;

{$X-}

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, Menus, StdCtrls, ExtCtrls, Buttons;

type
  Tcalcform = class(TForm)
    One: TButton;
    Two: TButton;
    Three: TButton;
    Four: TButton;
    Five: TButton;
    Six: TButton;
    Seven: TButton;
    Eight: TButton;
    Nine: TButton;
    Zero: TButton;
    Equal: TButton;
    Clear: TButton;
    AllClear: TButton;
    Multiply: TButton;
    Divide: TButton;
    Plus: TButton;
    Minus: TButton;
    Drop: TButton;
    Stack: TMemo;
    ExitButton: TBitBtn;
    Decimal: TButton;
    Enter: TButton;
    Entry: TMemo;
    RPN: TCheckBox;
    Stack2: TMemo;
    Stack3: TMemo;
    Stack4: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    StaticText1: TStaticText;
    StaticText2: TStaticText;
    StaticText3: TStaticText;
    StaticText4: TStaticText;
    plusminus: TButton;
        procedure OneClick(Sender: TObject);
        procedure TwoClick(Sender: TObject);
        procedure ThreeClick(Sender: TObject);
        procedure FourClick(Sender: TObject);
        procedure FiveClick(Sender: TObject);
        procedure SixClick(Sender: TObject);
        procedure SevenClick(Sender: TObject);
        procedure EightClick(Sender: TObject);
        procedure NineClick(Sender: TObject);
        procedure PlusClick(Sender: TObject);
        procedure MinusClick(Sender: TObject);
        procedure MultiplyClick(Sender: TObject);
        procedure DivideClick(Sender: TObject);
        procedure ClearClick(Sender: TObject);
        procedure AllClearClick(Sender: TObject);
        procedure EntryChange(Sender: TObject);
        procedure EqualClick(Sender: TObject);
        procedure DecimalClick(Sender: TObject);
        procedure Display;
        procedure ExitButtonClick(Sender: TObject);
        procedure ZeroClick(Sender: TObject);
    procedure EntryKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormShow(Sender: TObject);
    procedure EnterClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DropClick(Sender: TObject);
    procedure RPNClick(Sender: TObject);
    procedure plusminusClick(Sender: TObject);
  private
    { Private declarations }
    procedure CreateParams(var Params: TCreateParams); override;
    procedure WMNCHitTest(var Msg: TMessage);  message WM_NCHITTEST;
  public
    { Public declarations }
 end;


var
  calcform: Tcalcform;
  DecimalSeparator: string;
  DigitGrouping: string;
  Total   : Double;
  Complete: Boolean;
  Operator: Char;
  Sign    : Boolean;
  
implementation

{$R *.dfm}

procedure Tcalcform.FormCreate(Sender: TObject);
begin
{$ExtendedSyntax On}
end;

// the missing delay() procedure, delay in milliseconds
procedure Delay(msecs: integer);
var
FirstTickCount: longint;
begin
        FirstTickCount := GetTickCount;
        repeat
                Application.ProcessMessages; { allowing access to other controls }
        until ((GetTickCount-FirstTickCount) >= Longint(msecs));
end;

function DeletePoint(Str: string): string;
var
  i,position: Integer;
begin
  i := 0;
  position := AnsiPos(DigitGrouping, Str);
  if  position = 0 then
  Result:=Str
  else
  begin
  while  i<=Length(Str) do
    if Str[i] = DigitGrouping then Delete(Str, i, 1)
    else
    Inc(i);
  Result:=Str
  end
end;

// override form's style to create a window without titlebar
procedure Tcalcform.CreateParams(var Params: TCreateParams);
begin
        inherited CreateParams (Params);
        Params.Style := ws_Popup or ws_ClipChildren or ws_ClipSiblings or ws_Border;
end;

// left mouse button will drag form
procedure Tcalcform.WMNCHitTest(var Msg: TMessage);
begin
        if GetAsyncKeyState(VK_LBUTTON) < 0 then
        Msg.Result := HTCAPTION
        else
        Msg.Result := HTCLIENT;
end;

procedure Calculate(Number: Real; NextOp: Char);
begin
        if not Complete or (Total = 0.0) then
        case Operator of
        '+': Total := Total + Number;
        '-': Total := Total - Number;
        'x': Total := Total * Number;
        '/':
        begin
                if Number <> 0 then
                Total := Total / Number
                else
                begin
                        calcform.Entry.Text := 'Division by Zero!';
                        Delay(3000);
                end;
        end;
end;
Operator := NextOp;
Complete := True;
end;

procedure CalculateRPN(Number: Real; NextOp: Char);
var
No,No2: string;
begin
      No := DeletePoint(calcform.Stack.Text);
      No2 := DeletePoint(calcform.Stack2.Text);
        if Number = 0.0 then
        begin
        Number := StrToFloat(No2);
        case NextOP of
        '+': Total := Number + StrToFloat(No);
        '-': Total := Number - StrToFloat(No);
        'x': Total := Number * StrToFloat(No);
        '/':
        begin
                if Number <> 0 then
                Total := Number / StrToFloat(No)
                else
                begin
                        calcform.Entry.Text := 'Division by Zero!';
                        Delay(3000);
                end;
        end;
        end
        end
        else
        begin
        case NextOP of
        '+': Total := StrToFloat(No) + Number;
        '-': Total := StrToFloat(No) - Number;
        'x': Total := StrToFloat(No) * Number;
        '/':
        begin
                if Number <> 0 then
                Total := StrToFloat(No) / Number
                else
                begin
                        calcform.Entry.Text := 'Division by Zero!';
                        Delay(3000);
                end;
        end;
        end;

end;
Complete := True;
Sign := False;
end;

procedure Tcalcform.ZeroClick(Sender: TObject);
begin
        if Complete then Entry.Text := '';

        Entry.Text := Entry.Text + '0';
        Sign := False;
        Entry.SetFocus;
end;

procedure Tcalcform.OneClick(Sender: TObject);
begin
        if Complete then Entry.Text := '';
        Entry.Text := Entry.Text + '1';
        Sign := False;
        Entry.SetFocus;
end;

procedure Tcalcform.TwoClick(Sender: TObject);
begin
        if Complete then Entry.Text := '';
        Entry.Text := Entry.Text + '2';
        Sign := False;
        Entry.SetFocus;
end;

procedure Tcalcform.ThreeClick(Sender: TObject);
begin
        if Complete then Entry.Text := '';
        Entry.Text := Entry.Text + '3';
        Sign := False;
        Entry.SetFocus;
end;

procedure Tcalcform.FourClick(Sender: TObject);
begin
        if Complete then Entry.Text := '';
        Entry.Text := Entry.Text + '4';
        Sign := False;
        Entry.SetFocus;
end;

procedure Tcalcform.FiveClick(Sender: TObject);
begin
        if Complete then Entry.Text := '';
        Entry.Text := Entry.Text + '5';
        Sign := False;
        Entry.SetFocus;
end;

procedure Tcalcform.SixClick(Sender: TObject);
begin
        if Complete then Entry.Text := '';
        Entry.Text := Entry.Text + '6';
        Sign := False;
        Entry.SetFocus;
end;

procedure Tcalcform.SevenClick(Sender: TObject);
begin
        if Complete then Entry.Text := '';
        Entry.Text := Entry.Text + '7';
        Sign := False;
        Entry.SetFocus;
end;

procedure Tcalcform.EightClick(Sender: TObject);
begin
        if Complete then Entry.Text := '';
        Entry.Text := Entry.Text + '8';
        Sign := False;
        Entry.SetFocus;
end;

procedure Tcalcform.NineClick(Sender: TObject);
begin
        if Complete then Entry.Text := '';
        Entry.Text := Entry.Text + '9';
        Sign := False;
        Entry.SetFocus;
end;

procedure Tcalcform.PlusClick(Sender: TObject);
var
No: string;
begin
        if RPN.Checked then
        CalculateRPN(StrToFloat(Entry.Text), '+')
        else
        begin
        Sign := True;
        No := DeletePoint(Entry.Text);
        Calculate(StrToFloat(No), '+');
        end;
        Display;
end;

procedure Tcalcform.MinusClick(Sender: TObject);
var
No: string;
begin
        if RPN.Checked = TRUE then
        CalculateRPN(StrToFloat(Entry.Text), '-')
        else
        begin
        Sign := True;
        No := DeletePoint(Entry.Text);
        Calculate(StrToFloat(No), '-');
        end;
        Display;
end;

procedure Tcalcform.MultiplyClick(Sender: TObject);
var
No: string;
begin
        if RPN.Checked = TRUE then
        CalculateRPN(StrToFloat(Entry.Text), 'x')
        else
        begin
        Sign := True;
        No := DeletePoint(Entry.Text);
        Calculate(StrToFloat(No), 'x');
        end;
        Display;
end;

procedure Tcalcform.DivideClick(Sender: TObject);
var
No: string;
begin
        if RPN.Checked = TRUE then
        CalculateRPN(StrToFloat(Entry.Text), '/')
        else
        begin
        Sign := True;
        No := DeletePoint(Entry.Text);
        Calculate(StrToFloat(No), '/');
        end;
        Display;
end;

procedure Tcalcform.ClearClick(Sender: TObject);
var
Sf: string;
begin
        if Length(Entry.Text) = 1 then
        begin
        Complete := True;
        Entry.Text := '0'
        end
        else
        begin
        Sf := Entry.Text;
        if ((not Sign) and (not Complete)) then Delete(Sf, Length(Sf), Length(Sf)-1);
        Entry.Text := Sf;
        end;
        Entry.SetFocus;
end;

procedure Tcalcform.AllClearClick(Sender: TObject);
begin
        Entry.Text := '0';
        Stack.Lines.Clear;
        Stack2.Lines.Clear;
        Stack3.Lines.Clear;
        Stack4.Lines.Clear;
        Complete := True;
        Total := 0.0;
        Operator := '+';
        Sign := False;
        Entry.SetFocus;
end;

procedure Tcalcform.EntryChange(Sender: TObject);
begin
        if Entry.Text = '' then Complete := False;
end;

procedure Tcalcform.EqualClick(Sender: TObject);
var
No: string;
begin
        if RPN.Checked = FALSE then
        begin
        No := DeletePoint(Entry.Text);
        Calculate(StrToFloat(No), '+');
        Display;
        Complete := True;
        Total := 0.0;
        Sign := False;
        end;
        Entry.SetFocus;
end;

procedure Tcalcform.DecimalClick(Sender: TObject);
begin
        if Complete then
        begin
        Entry.Text := '0';
        Complete := False;
        end;
        if Pos(DecimalSeparator, Entry.Text) = 0 then
        Entry.Text := Entry.Text + DecimalSeparator;
        Entry.SetFocus;
end;

// format the result display
procedure Tcalcform.Display;
begin
        if RPN.Checked = TRUE then
        begin
        if (StrToFloat(Entry.Text)) = 0.0 then
        begin
        Stack2.Text := Stack3.Text;
        Stack3.Text := Stack4.Text;
        Stack4.Lines.Clear;
        Stack.Text := Format('%.2n',[Total]);
        Entry.Text := '0';
        end
        else
        begin
        Stack.Text := Format('%.2n',[Total]);
        Entry.Text := '0';
        end
        end
        else
        Entry.Text := Format('%.2n',[Total]);
        Entry.SetFocus;
end;

procedure Tcalcform.ExitButtonClick(Sender: TObject);
begin
        Close;
end;

procedure Tcalcform.EntryKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key = 39 then ClearClick(Sender);
if Key = 40 then DropClick(Sender);
if Key = VK_NUMPAD0 then ZeroClick(Sender);
if Key = VK_NUMPAD1 then OneClick(Sender);
if Key = VK_NUMPAD2 then TwoClick(Sender);
if Key = VK_NUMPAD3 then ThreeClick(Sender);
if Key = VK_NUMPAD4 then FourClick(Sender);
if Key = VK_NUMPAD5 then FiveClick(Sender);
if Key = VK_NUMPAD6 then SixClick(Sender);
if Key = VK_NUMPAD7 then SevenClick(Sender);
if Key = VK_NUMPAD8 then EightClick(Sender);
if Key = VK_NUMPAD9 then NineClick(Sender);
if Key = VK_DECIMAL then DecimalClick(Sender);
if Key = VK_ADD then PlusClick(Sender);
if Key = VK_SUBTRACT then MinusClick(Sender);
if Key = VK_DIVIDE then DivideClick(Sender);
if Key = VK_MULTIPLY then MultiplyClick(Sender);
if Key = VK_BACK then ClearClick(Sender);
if Key = VK_RETURN then
if RPN.Checked = TRUE then
EnterClick(Sender)
else
EqualClick(Sender);
Entry.SetFocus;
end;

procedure Tcalcform.FormShow(Sender: TObject);
begin
Entry.SetFocus;
end;

procedure Tcalcform.EnterClick(Sender: TObject);
var
No: string;
begin
No := DeletePoint(Entry.Text);
Stack4.Text := Stack3.Text;
Stack3.Text := Stack2.Text;
Stack2.Text := Stack.Text;
Stack.Text := Format('%.2n',[StrToFloat(No)]);
Entry.Text := '0';
Complete := True;
Total := 0.0;
Operator := '+';
Entry.SetFocus;
end;

procedure Tcalcform.DropClick(Sender: TObject);
begin
Stack.Text := Stack2.Text;
Stack2.Text := Stack3.Text;
Stack3.Text := Stack4.Text;
Stack4.Lines.Clear;
Entry.SetFocus;

end;

procedure Tcalcform.RPNClick(Sender: TObject);
begin
Total := 0.0;
Entry.SetFocus;
end;

procedure Tcalcform.plusminusClick(Sender: TObject);
var
str,str2,str3: string;
it: integer;
begin
str2 := DeletePoint(calcform.Stack.Text);
str3 := DeletePoint(Entry.Text);
it := ansipos('-', Entry.Text);
if it > 0 then
begin
        str := Entry.Text;
        if not Sign then Delete(str, it, 1);
        Entry.Text := str;
end
else
        if ((StrToFloat(str3) > 0.0) and (not Sign)) then
        Entry.Text := '-' + Entry.Text
        else
        if ((RPN.Checked) and (StrToFloat(str2) > 0.0)) then
        Stack.Text := '-' + Stack.Text
        else
        if ((RPN.Checked) and (ansipos('-', Stack.Text) > 0)) then
        begin
        str := Stack.Text;
        Delete(str, 1, 1);
        Stack.Text := str;
        end;

Entry.SetFocus;
end;

Initialization

DecimalSeparator := ',';
DigitGrouping := '.';
Complete := True;
Total := 0.0;
Operator := '+';
Sign := False;

end.


{------------------------  calc.dfm  -------------------------}
object calcform: Tcalcform
  Left = 388
  Top = 203
  Width = 315
  Height = 328
  Caption = 'Calculator'
  Color = 12615808
  TransparentColorValue = clMaroon
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  OnShow = FormShow
  PixelsPerInch = 96
  TextHeight = 13
  object Stack4: TMemo
    Left = 16
    Top = 16
    Width = 281
    Height = 24
    Alignment = taRightJustify
    Color = 102
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clRed
    Font.Height = -16
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    MaxLength = 20
    ParentFont = False
    ReadOnly = True
    TabOrder = 26
  end
  object Stack3: TMemo
    Left = 16
    Top = 35
    Width = 281
    Height = 24
    Alignment = taRightJustify
    Color = 102
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clRed
    Font.Height = -16
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    MaxLength = 20
    ParentFont = False
    ReadOnly = True
    TabOrder = 25
  end
  object Stack2: TMemo
    Left = 16
    Top = 54
    Width = 281
    Height = 24
    Alignment = taRightJustify
    Color = 102
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clRed
    Font.Height = -16
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    MaxLength = 20
    ParentFont = False
    ReadOnly = True
    TabOrder = 24
  end
  object Stack: TMemo
    Left = 16
    Top = 73
    Width = 281
    Height = 24
    Alignment = taRightJustify
    Color = 102
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clRed
    Font.Height = -16
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    Lines.Strings = (
      '')
    MaxLength = 20
    ParentFont = False
    ReadOnly = True
    TabOrder = 0
    WordWrap = False
  end
  object One: TButton
    Left = 16
    Top = 148
    Width = 33
    Height = 33
    Caption = '1'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 1
    OnClick = OneClick
  end
  object Two: TButton
    Left = 56
    Top = 148
    Width = 33
    Height = 33
    Caption = '2'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 2
    OnClick = TwoClick
  end
  object Three: TButton
    Left = 96
    Top = 148
    Width = 33
    Height = 33
    Caption = '3'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 3
    OnClick = ThreeClick
  end
  object Four: TButton
    Left = 16
    Top = 188
    Width = 33
    Height = 33
    Caption = '4'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 4
    OnClick = FourClick
  end
  object Five: TButton
    Left = 56
    Top = 188
    Width = 33
    Height = 33
    Caption = '5'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 5
    OnClick = FiveClick
  end
  object Six: TButton
    Left = 96
    Top = 188
    Width = 33
    Height = 33
    Caption = '6'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 6
    OnClick = SixClick
  end
  object Seven: TButton
    Left = 16
    Top = 228
    Width = 33
    Height = 33
    Caption = '7'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 7
    OnClick = SevenClick
  end
  object Eight: TButton
    Left = 56
    Top = 228
    Width = 33
    Height = 33
    Caption = '8'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 8
    OnClick = EightClick
  end
  object Nine: TButton
    Left = 96
    Top = 228
    Width = 33
    Height = 33
    Caption = '9'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 9
    OnClick = NineClick
  end
  object Zero: TButton
    Left = 16
    Top = 268
    Width = 33
    Height = 33
    Caption = '0'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 10
    OnClick = ZeroClick
  end
  object Equal: TButton
    Left = 56
    Top = 268
    Width = 73
    Height = 33
    Caption = '='
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -17
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 11
    OnClick = EqualClick
  end
  object Clear: TButton
    Left = 144
    Top = 148
    Width = 33
    Height = 33
    Caption = '<--'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 12
    OnClick = ClearClick
  end
  object AllClear: TButton
    Left = 184
    Top = 148
    Width = 33
    Height = 33
    Caption = 'C'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 13
    OnClick = AllClearClick
  end
  object Multiply: TButton
    Left = 144
    Top = 228
    Width = 33
    Height = 33
    Caption = 'X'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 14
    OnClick = MultiplyClick
  end
  object Divide: TButton
    Left = 184
    Top = 228
    Width = 33
    Height = 33
    Caption = '/'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -12
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 15
    OnClick = DivideClick
  end
  object Plus: TButton
    Left = 144
    Top = 188
    Width = 33
    Height = 33
    Caption = '+'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -19
    Font.Name = 'MS Sans Serif'
    Font.Style = []
    ParentFont = False
    TabOrder = 16
    OnClick = PlusClick
  end
  object Minus: TButton
    Left = 184
    Top = 188
    Width = 33
    Height = 33
    Caption = '--'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -16
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 17
    OnClick = MinusClick
  end
  object Drop: TButton
    Left = 224
    Top = 148
    Width = 73
    Height = 33
    Caption = 'DROP'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 18
    OnClick = DropClick
  end
  object ExitButton: TBitBtn
    Left = 224
    Top = 271
    Width = 73
    Height = 30
    Caption = 'Exit'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 19
    OnClick = ExitButtonClick
  end
  object Decimal: TButton
    Left = 184
    Top = 268
    Width = 33
    Height = 33
    Caption = ','
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -19
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 20
    OnClick = DecimalClick
  end
  object Enter: TButton
    Left = 224
    Top = 188
    Width = 73
    Height = 33
    Caption = 'Enter'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 21
    OnClick = EnterClick
  end
  object Entry: TMemo
    Left = 17
    Top = 108
    Width = 280
    Height = 25
    Alignment = taRightJustify
    Color = 8323329
    Font.Charset = DEFAULT_CHARSET
    Font.Color = 12368963
    Font.Height = -16
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    Lines.Strings = (
      '0')
    MaxLength = 20
    ParentFont = False
    ReadOnly = True
    TabOrder = 22
    OnChange = EntryChange
    OnKeyDown = EntryKeyDown
  end
  object RPN: TCheckBox
    Left = 240
    Top = 236
    Width = 49
    Height = 17
    Caption = 'RPN'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 23
    OnClick = RPNClick
  end
  object Edit1: TEdit
    Left = 18
    Top = 73
    Width = 277
    Height = 2
    BorderStyle = bsNone
    Color = 102
    TabOrder = 27
  end
  object Edit2: TEdit
    Left = 18
    Top = 54
    Width = 277
    Height = 2
    BorderStyle = bsNone
    Color = 102
    TabOrder = 28
  end
  object Edit3: TEdit
    Left = 18
    Top = 35
    Width = 277
    Height = 2
    BorderStyle = bsNone
    Color = 102
    TabOrder = 29
  end
  object StaticText1: TStaticText
    Left = 22
    Top = 18
    Width = 19
    Height = 21
    AutoSize = False
    Caption = '4:'
    Color = 102
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clRed
    Font.Height = -16
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentColor = False
    ParentFont = False
    TabOrder = 30
  end
  object StaticText2: TStaticText
    Left = 22
    Top = 37
    Width = 19
    Height = 21
    AutoSize = False
    Caption = '3:'
    Color = 102
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clRed
    Font.Height = -16
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentColor = False
    ParentFont = False
    TabOrder = 31
  end
  object StaticText3: TStaticText
    Left = 22
    Top = 56
    Width = 19
    Height = 21
    AutoSize = False
    Caption = '2:'
    Color = 102
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clRed
    Font.Height = -16
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentColor = False
    ParentFont = False
    TabOrder = 32
  end
  object StaticText4: TStaticText
    Left = 22
    Top = 75
    Width = 19
    Height = 20
    AutoSize = False
    Caption = '1:'
    Color = 102
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clRed
    Font.Height = -16
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentColor = False
    ParentFont = False
    TabOrder = 33
  end
  object plusminus: TButton
    Left = 144
    Top = 268
    Width = 33
    Height = 33
    Caption = '+/-'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -16
    Font.Name = 'MS Sans Serif'
    Font.Style = [fsBold]
    ParentFont = False
    TabOrder = 34
    OnClick = plusminusClick
  end
end