Exemplo n.º 1
0
        // 1/xボタン
        private void xDivOneBtn_Click(object sender, EventArgs e)
        {
            // エラーメッセージが表示の判定と今の表示が0.かどうか判定
            if (display != Common.CALC_FORMAT && MyDetection.IsErrorMsg(display) == false)
            {
                decimal work = decimal.Parse(display);
                work = 1 / work;

                // 小数点があるかどうか
                if (MyDetection.IsValueToDot(work) == true)
                {
                    // あれば桁下げしておく
                    display = CalcManager.DotAdjust(work.ToString());
                }

                else
                {
                    // なければ最下位桁に点を追加
                    display = work.ToString() + '.';
                }

                // 桁区切り
                display        = CalcManager.ThousandSeparator(isSeparat, display);
                resultTxt.Text = display;
            }
        }
Exemplo n.º 2
0
        // 演算子ボタン
        #region

        // equal Click
        private void equalBtn_Click(object sender, EventArgs e)
        {
            if (MyDetection.IsErrorMsg(display) == false)
            {
                // 前回の入力が=ではない
                if (beforInput != Common.EQUAL)
                {
                    // クリア後最初は別処理
                    if (operatorStorage == '\0')
                    {
                        calcBuff = decimal.Parse(display);
                    }

                    // 前回の入力が演算子
                    else if (MyDetection.IsValue(beforInput) == false)
                    {
                        calcBuff = decimal.Parse(display);
                    }

                    // 前回の入力された演算子がイコール
                    else if (beforOperator == Common.EQUAL)
                    {
                    }

                    // それ以外は基本的に表示している文字列を計算用バッファに入れてから演算処理を行う
                    else
                    {
                        calcBuff = decimal.Parse(display);
                    }
                }

                Calculate(Common.EQUAL);    // 演算処理
            }
        }
Exemplo n.º 3
0
        // +/-ボタン
        private void addToSubBtn_Click(object sender, EventArgs e)
        {
            // エラーメッセージが表示されているかどうか
            if (MyDetection.IsErrorMsg(display) == false)
            {
                // 前回の入力が演算子かどうか
                if (MyDetection.IsOperator(beforInput) == false)
                {
                    decimal work = decimal.Parse(display);  // 表示文字列をワークに代入
                    work   *= -1;                           // 符号を逆にする
                    display = work.ToString();              // 文字列化して保存

                    // 値が小数かどうか
                    if (MyDetection.IsValueToDot(work) == false)
                    {
                        display += '.';  // 値が少数ではないなら一番右端に 点(.)を追加
                    }
                }
                else
                {   // もし演算子なら表示を0.に戻す
                    display = Common.CALC_FORMAT;
                    isDot   = false;
                }

                // 桁区切り
                display        = CalcManager.ThousandSeparator(isSeparat, display);
                resultTxt.Text = display;
            }
        }
Exemplo n.º 4
0
        // メモリー系ボタン
        #region

        // MemoryClearボタン
        private void memoryClearBtn_Click(object sender, EventArgs e)
        {
            // エラーメッセージが表示されているかどうか
            if (MyDetection.IsErrorMsg(display) == false)
            {
                ClearApply(CLEAR_STATUS.CLEAR_MEMORY);
            }
        }
Exemplo n.º 5
0
        // ツールバーにあるメニューのイベント
        #region

        // コピー(メニュー)
        private void menuCopy_Click(object sender, EventArgs e)
        {
            Clipboard.Clear();  // クリップボードの初期化

            // エラーメッセージが表示されていないか確認
            if (MyDetection.IsErrorMsg(display) == false)
            {
                decimal work2 = decimal.Parse(display);
                Clipboard.SetText(work2.ToString());
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// 数字ボタンのメイン処理
        /// </summary>
        /// <param name="btnTxt">数字</param>
        /// <returns>成功か失敗</returns>
        private Boolean ClickMainValue(String valueTxt)
        {
            if (MyDetection.IsErrorMsg(display) == false)
            {
                display        = CalcManager.UpDigit(display, valueTxt, ref beforInput, isDot); // 桁上げ処理
                display        = CalcManager.ThousandSeparator(isSeparat, display);             // 桁数処理
                resultTxt.Text = display;                                                       // 表示を更新

                return(true);
            }

            return(false);
        }
Exemplo n.º 7
0
 // Back Click
 private void backBtn_Click(object sender, EventArgs e)
 {
     // エラーメッセージが表示されていない場合
     if (MyDetection.IsErrorMsg(display) == false)
     {
         // 前回の入力が数字のときのみ消す
         if (MyDetection.IsValue(beforInput) == true)
         {
             display        = display.Replace(",", "");                  // 桁区切り用
             display        = CalcManager.DownDigit(display, ref isDot); // 桁下げ
             display        = CalcManager.ThousandSeparator(isSeparat, display);
             resultTxt.Text = display;
         }
     }
 }
Exemplo n.º 8
0
        // MemoryRecollボタン
        private void memoryRecallBtn_Click(object sender, EventArgs e)
        {
            // エラーメッセージが表示されているかどうか
            if (MyDetection.IsErrorMsg(display) == false)
            {
                display = memory.ToString();    // 今のメモリに表示されている数字を表示用文字列に保存

                // 少数かどうか
                if (MyDetection.IsValueToDot(memory) == false)
                {
                    display += '.';
                }

                resultTxt.Text = display;       // 表示
                beforInput     = Common.M;
            }
        }
Exemplo n.º 9
0
        // Memory+ボタン
        private void memoryAddBtn_Click(object sender, EventArgs e)
        {
            // エラーメッセージが表示されているかどうか
            if (MyDetection.IsErrorMsg(display) == false)
            {
                // Mの表示がまだない場合
                if (memoryLabel.Text != "M")
                {
                    this.memoryStoreBtn_Click(sender, e);   // メモリーストアと同じ処理
                }
                else
                {
                    // ある場合は今のメモリに保存されている内容と今表示されている内容を加算してメモリに保存
                    memory = memory + decimal.Parse(display);
                }
            }

            beforInput = Common.M;
        }
Exemplo n.º 10
0
        // その他のボタン
        #region

        // dot Click
        private void dotBtn_Click(object sender, EventArgs e)
        {
            // エラーメッセージが表示されているかどうか
            if (MyDetection.IsErrorMsg(display) == false)
            {
                // 前回の入力が数字かどうか判定
                if (MyDetection.IsValue(beforInput) == false)
                {   // 前回の入力は演算子
                    display = Common.CALC_FORMAT;
                    isDot   = true;
                }
                else
                {
                    // 小数点フラグがOFFならONにする
                    if (isDot == false)
                    {
                        isDot = true;
                    }
                }
                resultTxt.Text = display;
            }
        }
Exemplo n.º 11
0
        // MemoryStoreボタン
        private void memoryStoreBtn_Click(object sender, EventArgs e)
        {
            if (MyDetection.IsErrorMsg(display) == false)
            {
                // 少数桁以下の無駄な0を削除
                display = CalcManager.DotAdjust(display);

                // 表示用文字列が0だけではなかったら
                if (MyDetection.IsCalcFormat(display) == false)
                {
                    memory = decimal.Parse(display);

                    // ラベルにテキスト描画
                    if (memoryLabel.Text == "")
                    {
                        memoryLabel.Text = "M";
                    }
                }

                resultTxt.Text = display;
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// 演算子ボタンのメイン処理(=は例外)
        /// </summary>
        /// <param name="opeTxt">演算子名</param>
        /// <returns>成功か失敗</returns>
        private Boolean ClickMainOperator(char opeTxt)
        {
            // エラーメッセージが表示されていないかどうか
            if (MyDetection.IsErrorMsg(display) == false)
            {
                // 前回の入力が今回と同じかどうか
                if (beforInput != opeTxt)
                {
                    calcBuff = decimal.Parse(display);

                    // 前の処理が=演算子もしくは演算子の場合は代入のみ
                    if (beforInput == Common.EQUAL || MyDetection.IsValue(beforInput) == false || beforOperator == Common.EQUAL)
                    {
                        operatorStorage = '\0';
                    }

                    Calculate(opeTxt);  // 演算処理
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 13
0
        // sqrtボタン
        private void sqrtBtn_Click(object sender, EventArgs e)
        {
            // エラーメッセージが表示されているか
            if (MyDetection.IsErrorMsg(display) == false)
            {
                // decimal型に変換
                decimal work = decimal.Parse(display);

                // 変換した値がマイナスだった場合はエラー
                if (MyDetection.IsNegativeValue(work) == true)
                {
                    display = Common.ERROR3;
                }

                else
                {
                    work = CalcManager.DecimalSqrt(work);   // 平方根に直す

                    // 小数点があるかどうかを調べる
                    if (MyDetection.IsValueToDot(decimal.Parse(work.ToString())))
                    {
                        display = CalcManager.DotAdjust(work.ToString());
                    }

                    else
                    {
                        // ない場合は右端に点(.)をつける
                        display = work.ToString() + '.';
                    }
                }

                // 桁区切り
                display        = CalcManager.ThousandSeparator(isSeparat, display);
                resultTxt.Text = display;
            }
        }
Exemplo n.º 14
0
        /// <summary>
        /// 演算処理
        /// </summary>
        private void Calculate(Char operat)
        {
            beforInput    = operat;     // 前回入力された内容に演算子を入力された代入
            beforOperator = operat;     // 前回入力された演算子に入力された演算子代入

            switch (operatorStorage)
            {
            // 加算処理
            case Common.ADD:
                total = total + calcBuff;
                break;

            // 減産処理
            case Common.SUB:
                total = total - calcBuff;
                break;

            // 乗算処理
            case Common.MULTIPLY:
                total = total * calcBuff;
                break;

            // 除算処理
            case Common.DIVIDE:
                if (calcBuff == 0)
                {
                    if (total == 0)
                    {
                        // 0÷0の計算
                        display = Common.ERROR1;
                        break;
                    }
                    else
                    {
                        // X÷0の計算
                        display = Common.ERROR2;
                        break;
                    }
                }
                total = total / calcBuff;       // エラーではない場合は普通に計算
                break;

            // 合計に代入するだけ
            default:
                total = calcBuff;
                break;
            }

            // エラーがdisplayに入っていないか
            if (MyDetection.IsErrorMsg(display) == false)
            {
                if (operat != Common.EQUAL)
                {
                    // =演算子は代入しない
                    operatorStorage = operat;
                }

                // 数値を文字列化し表示用文字列に代入
                display = total.ToString();

                // 少数かどうか判定し,少数ではない場合は結果に小数点を付与
                if (MyDetection.IsValueToDot(total) == false)
                {
                    display += '.';
                }

                // 小数点以下無駄な0を省く
                display = CalcManager.DotAdjust(display);

                isDot = false;  // 小数点フラグOFF
            }

            // 桁区切り
            display        = CalcManager.ThousandSeparator(isSeparat, display);
            resultTxt.Text = display;
        }