// ボタンが押された際に実行されるイベントハンドラ関数 // ----- // * 引数 componentID: 押されたボタンのGUIコンポーネントID // * 引数 buttonText: 押されたボタンの文字列 void onButtonClick(int componentID, string buttonText) { // 度数法からラジアンへの変換ボタン「 >> 」が押された場合の処理 if (componentID == degreeToRadianButton) { // 入力内容が正しいかどうかを検査 string degreeExpression = getComponentText(degreeInputField); if (!evaluable(degreeExpression, 0.0)) { alert("度数法の角度の入力値(または計算式)が、想定外の内容です。"); return; } // 入力内容を度数法の数値へ変換(式が入力された場合は計算される) float degree = eval(degreeExpression, 0.0); // 度数からラジアン値へ変換 float radian = degreeToRadian(degree); // そのラジアン値が「何π」かの値も求める float radianOverPi = radian / PI; // 角度ディスプレイを更新(再描画) updateDisplay(degree); // 変換結果の数値などを丸めつつ、テキストフィールド/ラベル等に表示する radian = round(radian, 8, HALF_UP); radianOverPi = round(radianOverPi, 8, HALF_UP); setComponentText(radianInputField, (string)radian); setComponentText(radianOverPiLabel, "(" + radianOverPi + " π)"); return; } // ラジアンから度数法への変換ボタン「 << 」が押された場合の処理 if (componentID == radianToDegreeButton) { // 入力内容が正しいかどうかを検査 string radianExpression = getComponentText(radianInputField); if (!evaluable(radianExpression, 0.0)) { alert("ラジアンの入力値(または計算式)が、想定外の内容です。"); return; } // 入力内容をラジアンの数値へ変換(式が入力された場合は計算される) float radian = eval(radianExpression, 0.0); // そのラジアン値が「何π」かの値も求める float radianOverPi = radian / PI; // ラジアン値から度数へ変換 float degree = radianToDegree(radian); // 角度ディスプレイを更新(再描画) updateDisplay(degree); // 変換結果の数値などを丸めつつ、テキストフィールド/ラベル等に表示する degree = round(degree, 8, HALF_UP); radianOverPi = round(radianOverPi, 8, HALF_UP); setComponentText(degreeInputField, (string)degree); setComponentText(radianOverPiLabel, "(" + radianOverPi + " π)"); return; } }