                                 Calculators

                      "Authors, like coins, grow dear as they grow old;
                                   it's the rust we value not the gold"
                                  Alexander Pope "Imitations of Horace"

Introduction

          The GOLDCALC unit is designed to do one thing; display a
     pop-up calculator in a window. The calculator has the following
     features:

          Calculator can be displayed in a tall (shown in Figure 8.1),
          wide or user-defined custom format.

          Optional display of a calculator tape.

          Fully customizable colors.


     Figure 8.1
     A Calculator


Running the Calculator

     To display a (modal) calculator in a pop-up window use the
     RunCalculator command which is defined as follows:

     RunCalculator(Tit:string): extended;

          Displays a calculator in a pop-up window. The only parameter
     is the window title. The function returns the value in the entry
     panel when the window was closed.

          You can control whether the calculator has a tape by setting
     the value of the boolean variable CalcVars.Tape. Set the variable
     to TRUE to display the tape, and FALSE to hide it.

     Run the demo file DEMCALC1.PAS to use the default calculator.

Changing the Calculator Shape

          By default, the calculator is configured in a tall orientation
     with the buttons at the bottom, the tape at the top and the input
     panel in between.

          The calculator shape is controlled by the value of the
     gCalcType variable  CalcVars.Style. The gCalcType enumerated type
     is defined in GOLDCALC as follows:

     gCalcType = ( CalcCustom, CalcWide, CalcTall );

Displaying a Wide Calculator

          To display a wide calculator, set the value of CalcVars.Style
     to CalcWide before calling RunCalculator. That's all there is to
     it. Listed below is an extract from the demo file DEMCALC2.PAS
     which displays a wide calculator.

        CalcVars.Style := CalcWide;
        MouseShow(true);
        Answer := RunCalculator(' A Wide Calculator ');

Displaying a Custom Calculator

          If, for some inexplicable reason, you don't like the tall or
     the wide calculator, you can set the calculator to a custom shape
     by modifying the following variables in CalcVars:

     CalcVars Variable   Purpose

     WX1,WY1,WX2,WY2     The upper left and lower right (global) window
                         coordinates.
     BX1, BY1            The upper left (local) coordinates of the
                         button cluster.
     IX1, IY1            The upper left (local) coordinates of the input
                         panel.
     PanelWidth          The width of the input panel in characters.

          The following code is an extract from the demo file
     DEMCALC3.PAS which sets the calculator to a compact shape with no
     tape:

     with CalcVars do
     begin
        Style := CalcCustom;
        WX1 := 26;
        WY1 := 5;
        WX2 := 53;
        WY2 := 17;
        BX1 := 2;
        BY1 := 4;
        IX1 := 2;
        IY1 := 2;
        Tape := false;
        PanelWidth := 23;
     end;
     Answer := RunCalculator('');


Controlling the Calculator Colors

          You can customize the calendar display colors by modifying the
     following elements of TINT using the GoldSetColor function:

     CalcBorder
     CalcBody
     CalcTitle
     CalcIcons
     CalcOperand
     CalcTape
     CalButtons

          The following code is an extract from DEMCALC4.PAS which
     customizes the calendar colors:

     procedure CustomizeColors;
     begin
        GoldSetColor(CalcBorder,WhiteOnMagenta);
        GoldSetColor(CalcBody,WhiteOnMagenta);
        GoldSetColor(CalcIcons,GreenOnMagenta);
        GoldSetColor(CalcTitle,YellowOnMagenta);
        GoldSetColor(CalcInput,BlackOnLightgray);
        GoldSetColor(CalcOperand,LightgrayOnMagenta);
        GoldSetColor(CalcTape,GreenOnMagenta);
        GoldSetColor(CalcButtons,WhiteOnGreen);
     end; { CustomizeColors }


Error Handling

          Since the calculator is displayed in a window, there is the
     potential for an Out of Memory error. After calling RunCalculator,
     be sure to call the function LastCalcError to see if the calculator
     was successfully displayed.

