Esempio n. 1
0
        /// <summary>ログイン</summary>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        protected void UOC_btnButton1_Click(RcFxEventArgs rcFxEventArgs)
        {
            MyBaseControllerWin.UserInfo.UserName = this.textBox1.Text;
            MyBaseControllerWin.UserInfo.IPAddress = Environment.MachineName;

            Program.FlagEnd = false; // フラグ完了
            this.Close();
        }
Esempio n. 2
0
        /// <summary>同期実行</summary>
        protected void UOC_btnSync_Click(RcFxEventArgs rcFxEventArgs)
        {
            int wait = (int)this.numericUpDown1.Value;

            this.AddStatus(string.Format("主スレッド実行中: {0}秒待つ", wait));

            Thread.Sleep(wait * 1000);

            this.AddStatus("スレッド実行終了");

            // 結果表示のテスト
            this.TestOfResultDisplay();
        }
Esempio n. 3
0
        /// <summary>一般的な例外発生時の処理を実装</summary>
        /// <param name="ex">例外オブジェクト</param>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>画面コード親クラス1から利用される派生の末端</remarks>
        protected override void UOC_ABEND(Exception ex, RcFxEventArgs rcFxEventArgs)
        {
            // 一般的な例外発生時の処理を実装
            // TODO:

            // 性能測定終了

            // イベント処理開始前にエラーが発生した場合は、
            // this.perfRecがnullの場合があるので、null対策コードを挿入する。
            if (this.perfRec == null)
            {
                // nullの場合、新しいインスタンスを生成し、性能測定開始。
                this.perfRec = new PerformanceRecorder();
                perfRec.StartsPerformanceRecord();
            }

            this.perfRec.EndsPerformanceRecord();

            // ACCESSログ出力-----------------------------------------------

            if (MyBaseControllerWin.CanOutPutLog)
            {
                // ------------
                // メッセージ部
                // ------------
                // ユーザ名, レイヤ, 画面名, コントロール名,
                // 処理時間(実行時間), 処理時間(CPU時間)
                // エラーメッセージID, エラーメッセージ等
                // ------------
                string strLogMessage =
                    "," + UserInfo.UserName +
                    "," + "<-----" +
                    "," + this.Name +
                    "," + rcFxEventArgs.ControlName +
                    "," + this.perfRec.ExecTime +
                    "," + this.perfRec.CpuTime +
                    "," + "other Exception" +
                    "," + ex.Message + "\r\n" + this.OriginalStackTrace;
                // OriginalStackTrace(ログ出力)の品質向上
                if (this.OriginalStackTrace == "")
                {
                    strLogMessage += ex.StackTrace;
                }
                else
                {
                    strLogMessage += this.OriginalStackTrace;
                }

                // Log4Netへログ出力
                LogIF.ErrorLog("ACCESS", strLogMessage);
            }
            // -------------------------------------------------------------
        }
Esempio n. 4
0
        /// <summary>非同期実行</summary>
        private void UOC_btnASync_Click(RcFxEventArgs rcFxEventArgs)
        {
            int wait = (int)this.numericUpDown1.Value;

            MyBaseAsyncFunc af = new MyBaseAsyncFunc(this);
            //MyBaseAsyncFunc af = new MyBaseAsyncFunc(this.panel1);

            // 非同期処理本体・無名関数デレゲード
            af.AsyncFunc = delegate(object param)
            {
                // 進捗報告
                af.ExecChangeProgress(string.Format("スレッド実行中: {0}秒待つ", wait));

                System.Threading.Thread.Sleep(wait * 1000);

                return "終わり";
            };

            // 進捗報告・無名関数デレゲード
            af.ChangeProgress = delegate(object param)
            {
                string text = (string)param;
                this.AddStatus(text);
            };

            // 結果設定・無名関数デレゲード
            af.SetResult = delegate(object retVal)
            {
                if (retVal is Exception)
                {
                    // 例外発生時
                    Exception ex = (Exception)retVal;
                    this.AddStatus(string.Format("スレッド実行終了: エラー発生:{0}", ex.Message));
                }
                else
                {
                    this.AddStatus("スレッド実行終了");
                    //throw new Exception("SetResultでエラーとなった場合。");
                }

                // 結果表示のテスト
                this.TestOfResultDisplay();

                // フォーカス制御をする場合、
                this.BeginInvoke(new MethodInvoker(this.SetForcus));

            };

            // 非同期処理を開始させる。
            if (af.Start())
            {
                this.AddStatus(string.Format(
                    "キューイングされました、現在のスレッド数:{0}",
                    BaseAsyncFunc.ThreadCount.ToString()));
            }
            else
            {
                this.AddStatus(string.Format(
                    "非同期スレッドが最大数に達しています。:{0}",
                    BaseAsyncFunc.ThreadCount.ToString()));
            }
        }
Esempio n. 5
0
        /// <summary>業務例外発生時の処理を実装</summary>
        /// <param name="baEx">BusinessApplicationException</param>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>画面コード親クラス1から利用される派生の末端</remarks>
        protected override void UOC_ABEND(BusinessApplicationException baEx, RcFxEventArgs rcFxEventArgs)
        {
            // 業務例外発生時の処理を実装
            // TODO:

            // ここに、メッセージの組み立てロジックを実装する。

            // メッセージ編集処理 ------------------------------------------

            // -------------------------------------------------------------

            // メッセージ表示処理 ------------------------------------------

            // -------------------------------------------------------------

            // 性能測定終了

            // イベント処理開始前にエラーが発生した場合は、
            // this.perfRecがnullの場合があるので、null対策コードを挿入する。
            if (this.perfRec == null)
            {
                // nullの場合、新しいインスタンスを生成し、性能測定開始。
                this.perfRec = new PerformanceRecorder();
                perfRec.StartsPerformanceRecord();
            }

            this.perfRec.EndsPerformanceRecord();

            // ACCESSログ出力-----------------------------------------------

            if (MyBaseControllerWin.CanOutPutLog)
            {
                // ------------
                // メッセージ部
                // ------------
                // ユーザ名, レイヤ, 画面名, コントロール名,
                // 処理時間(実行時間), 処理時間(CPU時間)
                // エラーメッセージID, エラーメッセージ等
                // ------------
                string strLogMessage =
                    "," + UserInfo.UserName +
                    "," + "<-----" +
                    "," + this.Name +
                    "," + rcFxEventArgs.ControlName +
                    "," + this.perfRec.ExecTime +
                    "," + this.perfRec.CpuTime +
                    "," + baEx.messageID +
                    "," + baEx.Message;

                // Log4Netへログ出力
                LogIF.WarnLog("ACCESS", strLogMessage);
            }

            // -------------------------------------------------------------            
        }
Esempio n. 6
0
        /// <summary>
        /// FormのKeyUpイベントに対応した集約イベント ハンドラ
        /// </summary>
        protected void Form_KeyUp(object sender, KeyEventArgs e)
        {
            string name = ((Control)(sender)).Name;

            // イベント ハンドラの共通引数の作成
            RcFxEventArgs rcFxEventArgs
                = new RcFxEventArgs(name + "_KeyUp",
                    this.GetMethodName(((Control)(sender)),
                    FxLiteral.UOC_METHOD_FOOTER_KEY_UP), sender, e);

            // イベント処理の共通メソッド
            this.CMN_Event_Handler(rcFxEventArgs);
        }
Esempio n. 7
0
        /// <summary>レイトバインドするメソッド</summary>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        /// <returns>画面遷移する場合のURL</returns>
        private void LateBind(RcFxEventArgs rcFxEventArgs)
        {
            // 引数を格納するオブジェクト配列
            object[] parameter = new object[] { rcFxEventArgs };

            try
            {
                // Latebind部品の追加により上記コードから変更(2009/04/15)
                if (Latebind.CheckTypeOfMethodByName(this, rcFxEventArgs.MethodName))
                {
                    // 本画面中にメソッドがある。
                    Latebind.InvokeMethod_NoErr(this, rcFxEventArgs.MethodName, parameter);
                }
                else
                {
                    // 本画面中にメソッドがない。

                    // ユーザ コントロールの可能性
                    foreach (UserControl uc in this.LstUserControl)
                    {
                        // 比較してイコールであること。
                        if (uc.Name == this.UserControlImplementingMethod)
                        {
                            // メソッドを実装するユーザ コントロールの参照を取得できた場合、

                            // メソッド名からユーザ コントロール名のプレフィックスを削除し、
                            string newMethodName = rcFxEventArgs.MethodName.
                                Replace(this.UserControlImplementingMethod + "_", "");

                            // マスタ ページに対してレイトバインド。
                            Latebind.InvokeMethod_NoErr(uc, newMethodName, parameter);

                            // ・・・fxEventArgs.MethodNameと一致しないが、こういう仕様ということで。
                        }
                    }
                }
            }
            catch (System.Reflection.TargetInvocationException rtEx)
            {
                //InnerExceptionのスタックトレースを保存しておく(以下のリスローで消去されるため)。
                this.OriginalStackTrace = rtEx.InnerException.StackTrace;

                // InnerExceptionを投げなおす。
                throw rtEx.InnerException;
            }

            //return url;
        }
Esempio n. 8
0
 /// <summary>Finally節の処理を実装</summary>
 /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
 /// <remarks>派生の画面コード親クラス2でオーバーライドする。</remarks>
 protected virtual void UOC_Finally(RcFxEventArgs rcFxEventArgs) { }
Esempio n. 9
0
        /// <summary>追加処理</summary>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        protected void UOC_btnButton7_Click(RcFxEventArgs rcFxEventArgs)
        {
            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                    this.Name, rcFxEventArgs.ControlName, "Insert",
                    ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value,
                    MyBaseControllerWin.UserInfo);

            // 情報の設定
            testParameterValue.CompanyName = this.textBox2.Text;
            testParameterValue.Phone = this.textBox3.Text;

            // 戻り値
            TestReturnValue testReturnValue;

            // Invoke
            testReturnValue = (TestReturnValue)this.CallCtrl.Invoke(
                ((ComboBoxItem)this.ddlTransmission.SelectedItem).Value, testParameterValue);

            // 結果表示するメッセージ エリア
            this.labelMessage.Text = "";

            if (testReturnValue.ErrorFlag == true)
            {
                // 結果(業務続行可能なエラー)
                labelMessage.Text = "ErrorMessageID:" + testReturnValue.ErrorMessageID + "\r\n";
                labelMessage.Text += "ErrorMessage:" + testReturnValue.ErrorMessage + "\r\n";
                labelMessage.Text += "ErrorInfo:" + testReturnValue.ErrorInfo + "\r\n";
            }
            else
            {
                // 結果(正常系)
                labelMessage.Text = testReturnValue.Obj.ToString() + "件追加";
            }
        }
Esempio n. 10
0
 /// <summary>メッセージ取得(埋め込まれたリソース対応)</summary>
 /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
 protected void UOC_btnButton11_Click(RcFxEventArgs rcFxEventArgs)
 {
     this.textBox5.Text = GetMessage.GetMessageDescription(this.textBox4.Text);
 }
Esempio n. 11
0
 /// <summary>共有情報取得(埋め込まれたリソース対応)</summary>
 /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
 protected void UOC_btnButton12_Click(RcFxEventArgs rcFxEventArgs)
 {
     this.textBox7.Text = GetSharedProperty.GetSharedPropertyValue(this.textBox6.Text);
 }
Esempio n. 12
0
        /// <summary>削除処理</summary>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        protected void UOC_btnButton9_Click(RcFxEventArgs rcFxEventArgs)
        {
            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                    this.Name, rcFxEventArgs.ControlName, "Delete",
                    ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value,
                    MyBaseControllerWin.UserInfo);

            // 情報の設定
            testParameterValue.ShipperID = int.Parse(textBox1.Text);

            // 戻り値
            TestReturnValue testReturnValue;

            // Invoke
            testReturnValue = (TestReturnValue)this.CallCtrl.Invoke(
                "testWebService", testParameterValue);

            // 結果表示するメッセージ エリア
            this.labelMessage.Text = "";

            if (testReturnValue.ErrorFlag == true)
            {
                // 結果(業務続行可能なエラー)
                this.labelMessage.Text = "ErrorMessageID:" + testReturnValue.ErrorMessageID + "\r\n";
                this.labelMessage.Text += "ErrorMessage:" + testReturnValue.ErrorMessage + "\r\n";
                this.labelMessage.Text += "ErrorInfo:" + testReturnValue.ErrorInfo + "\r\n";
            }
            else
            {
                // 結果(正常系)
                this.labelMessage.Text = testReturnValue.Obj.ToString() + "件削除";
            }
        }
Esempio n. 13
0
 /// <summary>クリア</summary>
 /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
 protected void UOC_btnButton10_Click(RcFxEventArgs rcFxEventArgs)
 {
     this.dataGridView1.DataSource = null;
 }
Esempio n. 14
0
        /// <summary>参照処理</summary>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>
        /// 非同期フレームワークを使用してB層の呼び出し処理を非同期化
        /// (結果表示にだけ匿名デリゲードを使用するパターン)
        /// </remarks>
        protected void UOC_btnButton6_Click(RcFxEventArgs rcFxEventArgs)
        {
            // 非同期処理クラスを生成
            AsyncFunc af = new AsyncFunc(this);

            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                    this.Name, rcFxEventArgs.ControlName, "Select",
                    ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value,
                    MyBaseControllerWin.UserInfo);

            // 情報の設定
            testParameterValue.ShipperID = int.Parse(this.textBox1.Text);

            // 引数を非同期処理クラスに設定
            af.Parameter = testParameterValue;

            // 非同期実行するメソッドを指定
            // ここは副スレッドから実行されるので注意。
            af.AsyncFunc = new BaseAsyncFunc.AsyncFuncDelegate(af.btn6_Exec);

            // 結果表示のメソッドを指定(匿名デリゲード)
            // このメソッドは必ず主スレッドで実行される。
            af.SetResult = delegate(object retVal)
            {
                if (retVal is Exception)
                {
                    // 例外発生時
                    MessageBox.Show(retVal.ToString(), "非同期処理で例外発生!");
                }
                else
                {
                    // 正常時

                    // 戻り値(キャスト)
                    TestReturnValue testReturnValue = (TestReturnValue)retVal;
                    // 結果表示するメッセージ エリア
                    this.labelMessage.Text = "";

                    if (testReturnValue.ErrorFlag == true)
                    {
                        // 結果(業務続行可能なエラー)
                        this.labelMessage.Text = "ErrorMessageID:" + testReturnValue.ErrorMessageID + "\r\n";
                        this.labelMessage.Text += "ErrorMessage:" + testReturnValue.ErrorMessage + "\r\n";
                        this.labelMessage.Text += "ErrorInfo:" + testReturnValue.ErrorInfo + "\r\n";
                    }
                    else
                    {
                        // 結果(正常系)
                        this.textBox1.Text = testReturnValue.ShipperID.ToString();
                        this.textBox2.Text = testReturnValue.CompanyName;
                        this.textBox3.Text = testReturnValue.Phone;
                    }
                }
            };

            // 非同期実行する。
            if (!af.Start())
            {
                MessageBox.Show("別の非同期処理が実行中です。");
            }
        }
Esempio n. 15
0
        /// <summary>一覧取得(動的sql)</summary>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        protected void UOC_btnButton5_Click(RcFxEventArgs rcFxEventArgs)
        {
            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                    this.Name, rcFxEventArgs.ControlName, "SelectAll_DSQL",
                    ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value,
                    MyBaseControllerWin.UserInfo);

            // 動的SQLの要素を設定
            testParameterValue.OrderColumn = ((ComboBoxItem)this.ddlOrderColumn.SelectedItem).Value;
            testParameterValue.OrderSequence = ((ComboBoxItem)this.ddlOrderSequence.SelectedItem).Value;

            // 戻り値
            TestReturnValue testReturnValue;

            // Invoke
            testReturnValue = (TestReturnValue)this.CallCtrl.Invoke(
                "testWebService", testParameterValue);

            // 結果表示するメッセージ エリア
            this.labelMessage.Text = "";

            if (testReturnValue.ErrorFlag == true)
            {
                // 結果(業務続行可能なエラー)
                this.labelMessage.Text = "ErrorMessageID:" + testReturnValue.ErrorMessageID + "\r\n";
                this.labelMessage.Text += "ErrorMessage:" + testReturnValue.ErrorMessage + "\r\n";
                this.labelMessage.Text += "ErrorInfo:" + testReturnValue.ErrorInfo + "\r\n";
            }
            else
            {
                // 結果(正常系)
                this.dataGridView1.DataSource = testReturnValue.Obj;
            }
        }
Esempio n. 16
0
        /// <summary>件数取得</summary>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>
        /// 非同期フレームワークを使用してB層の呼び出し処理を非同期化
        /// (非同期実行、結果表示の双方に匿名デリゲードを使用するパターン)
        /// </remarks>
        protected void UOC_btnButton1_Click(RcFxEventArgs rcFxEventArgs)
        {
            // 非同期処理クラスを生成
            // 匿名デリゲードの場合は、ベース2で良い。
            MyBaseAsyncFunc af = new MyBaseAsyncFunc(this);

            // 引数を纏める
            af.Parameter = (object)new TestParameterValue(
                this.Name, rcFxEventArgs.ControlName, "SelectCount",
                ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%"
                + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%"
                + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%"
                + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value,
                MyBaseControllerWin.UserInfo);

            // 非同期実行するメソッドを指定(匿名デリゲード)
            // ここは副スレッドから実行されるので注意
            // (画面上のメンバに触らないこと!)。
            af.AsyncFunc = delegate(object param)
            {
                // 引数クラス(キャスト)
                TestParameterValue testParameterValue = (TestParameterValue)param;

                // 戻り値
                TestReturnValue testReturnValue;

                // 呼出し制御部品(スレッドセーフでないため副スレッド内で作る)
                CallController callCtrl = new CallController("");

                // Invoke
                testReturnValue = (TestReturnValue)callCtrl.Invoke(
                    "testWebService", testParameterValue);

                //// 進捗表示のテスト
                //af.ChangeProgress = delegate(object o)
                //{
                //    MessageBox.Show(o.ToString());
                //};

                //af.ExecChangeProgress("進捗表示");

                //// 非同期メッセージボックス表示のテスト
                //DialogResult dr = af.ShowAsyncMessageBoxWin(
                //    "メッセージ", "タイトル", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                //// 非同期メッセージボックス表示のテスト(エラー)
                //System.Windows.MessageBoxResult mr = af.ShowAsyncMessageBoxWPF("メッセージ", "タイトル",
                //    System.Windows.MessageBoxButton.YesNo, System.Windows.MessageBoxImage.Information);

                // 結果表示
                return testReturnValue;
            };

            // 結果表示のメソッドを指定(匿名デリゲード)
            // このメソッドは必ず主スレッドで実行される。
            // (画面上のメンバを更新できる!)。
            af.SetResult = delegate(object retVal)
            {
                if (retVal is Exception)
                {
                    // 例外発生時
                    MessageBox.Show(retVal.ToString(), "非同期処理で例外発生!");
                }
                else
                {
                    // 正常時

                    // 戻り値(キャスト)
                    TestReturnValue testReturnValue = (TestReturnValue)retVal;

                    // 結果表示するメッセージ エリア
                    this.labelMessage.Text = "";

                    if (testReturnValue.ErrorFlag == true)
                    {
                        // 結果(業務続行可能なエラー)
                        this.labelMessage.Text = "ErrorMessageID:" + testReturnValue.ErrorMessageID + "\r\n";
                        this.labelMessage.Text += "ErrorMessage:" + testReturnValue.ErrorMessage + "\r\n";
                        this.labelMessage.Text += "ErrorInfo:" + testReturnValue.ErrorInfo + "\r\n";
                    }
                    else
                    {
                        // 結果(正常系)
                        this.labelMessage.Text = testReturnValue.Obj.ToString() + "件のデータがあります";
                    }
                }
            };

            // 非同期実行する。
            if (!af.Start())
            {
                MessageBox.Show("別の非同期処理が実行中です。");
            }
        }
Esempio n. 17
0
 /// <summary>イベントの開始前の処理を実装</summary>
 /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
 /// <remarks>派生の画面コード親クラス2でオーバーライドする。</remarks>
 protected virtual void UOC_PreAction(RcFxEventArgs rcFxEventArgs) { }
Esempio n. 18
0
 /// <summary>BusinessSystemExceptionの例外処理用のUOCメソッド</summary>
 /// <param name="bsEx">BusinessSystemException</param>
 /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
 /// <remarks>派生の画面コード親クラス2でオーバーライドする。</remarks>
 protected virtual void UOC_ABEND(BusinessSystemException bsEx, RcFxEventArgs rcFxEventArgs) { }
Esempio n. 19
0
 /// <summary>イベントの終了後の処理を実装</summary>
 /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
 /// <remarks>派生の画面コード親クラス2でオーバーライドする。</remarks>
 protected virtual void UOC_AfterAction(RcFxEventArgs rcFxEventArgs) { }
Esempio n. 20
0
        /// <summary>
        /// ボタン系のClickイベントに対応した集約イベント ハンドラ
        /// </summary>
        protected void Button_Click(object sender, EventArgs e)
        {
            string name = ((Control)(sender)).Name;

            // イベント ハンドラの共通引数の作成
            RcFxEventArgs rcFxEventArgs
                = new RcFxEventArgs(name,
                    this.GetMethodName(((Control)(sender)),
                    FxLiteral.UOC_METHOD_FOOTER_CLICK), sender, e);

            // イベント処理の共通メソッド
            this.CMN_Event_Handler(rcFxEventArgs);
        }
Esempio n. 21
0
 /// <summary>BusinessApplicationExceptionの例外処理用のUOCメソッド</summary>
 /// <param name="baEx">BusinessApplicationException</param>
 /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
 /// <remarks>派生の画面コード親クラス2でオーバーライドする。</remarks>
 protected virtual void UOC_ABEND(BusinessApplicationException baEx, RcFxEventArgs rcFxEventArgs) { }
Esempio n. 22
0
        /// <summary>一覧取得(ds)</summary>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        protected void UOC_btnButton3_Click(RcFxEventArgs rcFxEventArgs)
        {
            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                    this.Name, rcFxEventArgs.ControlName, "SelectAll_DS",
                    ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%"
                    + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value,
                    MyBaseControllerWin.UserInfo);

            // 戻り値
            TestReturnValue testReturnValue;

            // Invoke
            testReturnValue = (TestReturnValue)this.CallCtrl.Invoke(
                ((ComboBoxItem)this.ddlTransmission.SelectedItem).Value, testParameterValue);

            // 結果表示するメッセージ エリア
            this.labelMessage.Text = "";

            if (testReturnValue.ErrorFlag == true)
            {
                // 結果(業務続行可能なエラー)
                labelMessage.Text = "ErrorMessageID:" + testReturnValue.ErrorMessageID + "\r\n";
                labelMessage.Text += "ErrorMessage:" + testReturnValue.ErrorMessage + "\r\n";
                labelMessage.Text += "ErrorInfo:" + testReturnValue.ErrorInfo + "\r\n";
            }
            else
            {
                // 結果(正常系)
                this.dataGridView1.DataSource = ((DataSet)testReturnValue.Obj).Tables[0];
            }
        }
Esempio n. 23
0
 /// <summary>Exceptionの例外処理用のUOCメソッド</summary>
 /// <param name="ex">Exception</param>
 /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
 /// <remarks>派生の画面コード親クラス2でオーバーライドする。</remarks>
 protected virtual void UOC_ABEND(Exception ex, RcFxEventArgs rcFxEventArgs) { }
Esempio n. 24
0
        /// <summary>キーイベント</summary>
        private void Form_CMNEventHandler(object sender, EventArgs e)
        {
            // メソッド名
            string methodName = "UOC_Form_";
            // イベント名
            string eventName = ""; // ((Control)sender).Name + "_";

            // イベントを識別

            if (e is KeyEventArgs)
            {
                string temp = "";
                KeyEventArgs kea = (KeyEventArgs)e;

                if (this._eventID == "KeyDown")
                {
                    // KeyDownイベント
                    if (kea.KeyCode == Keys.Enter)
                    {
                        temp = "Enter";
                    }
                    else if (kea.KeyCode == Keys.F1)
                    {
                        temp = "F1";
                    }
                    else if (kea.KeyCode == Keys.F2)
                    {
                        temp = "F2";
                    }
                    else if (kea.KeyCode == Keys.F3)
                    {
                        temp = "F3";
                    }
                    else if (kea.KeyCode == Keys.F4)
                    {
                        if (kea.Alt)
                        {
                            temp = "AltAndF4";
                        }
                        else
                        {
                            temp = "F4";
                        }
                    }
                    else if (kea.KeyCode == Keys.F5)
                    {
                        temp = "F5";
                    }
                    else if (kea.KeyCode == Keys.F6)
                    {
                        temp = "F6";
                    }
                    else if (kea.KeyCode == Keys.F7)
                    {
                        temp = "F7";
                    }
                    else if (kea.KeyCode == Keys.F8)
                    {
                        temp = "F8";
                    }
                    else if (kea.KeyCode == Keys.F9)
                    {
                        temp = "F9";
                    }
                    else if (kea.KeyCode == Keys.F10)
                    {
                        temp = "F10";
                    }
                    else if (kea.KeyCode == Keys.F11)
                    {
                        temp = "F11";
                    }
                    else if (kea.KeyCode == Keys.F12)
                    {
                        temp = "F12";
                    }
                }
                else if (this._eventID == "KeyPress")
                { }
                else if (this._eventID == "KeyUp")
                { }

                // イベント名を指定
                eventName += temp + "_" + this._eventID;
                // メソッド名を指定
                methodName += temp + "_" + this._eventID;
            }
            else if (e is FormClosingEventArgs)
            {
                // FormClosingイベント

                // イベント名を指定
                eventName += "Closing";
                // メソッド名を指定
                methodName += "Closing";
            }
            //else if (e is xxx) { }

            // イベント実行
            if (Latebind.CheckTypeOfMethodByName(this, methodName))
            {
                // イベント引数の作成
                RcFxEventArgs rcFxEventArgs =
                    new RcFxEventArgs(eventName, methodName, sender, e);

                try
                {
                    // 開始処理を実行する。
                    this.UOC_PreAction(rcFxEventArgs);

                    // イベント処理を実行する。
                    Latebind.InvokeMethod_NoErr(this, methodName, new object[] { rcFxEventArgs });

                    // 終了処理を実行する。
                    this.UOC_AfterAction(rcFxEventArgs);
                }
                catch (BusinessApplicationException baEx)
                {
                    // アプリケーション例外発生時の処理を実行する。
                    this.UOC_ABEND(baEx, rcFxEventArgs);

                    // アプリケーション例外はリスローしない。
                }
                catch (BusinessSystemException bsEx)
                {
                    // システム例外発生時の処理を実行する。
                    this.UOC_ABEND(bsEx, rcFxEventArgs);

                    // システム例外はリスローする。
                    throw;
                }
                catch (Exception ex)
                {
                    // 一般的な例外発生時の処理を実行する。
                    this.UOC_ABEND(ex, rcFxEventArgs);

                    // 一般的な例外はリスローする。
                    throw;
                }
                finally
                {
                    // Finally節のUOCメソッド 
                    this.UOC_Finally(rcFxEventArgs);
                }
            }
        }
Esempio n. 25
0
        /// <summary>
        /// ボタン系のCheckedChangedイベントに対応した集約イベント ハンドラ
        /// </summary>
        protected void Check_CheckedChanged(object sender, EventArgs e)
        {
            string name = ((Control)(sender)).Name;

            // イベント ハンドラの共通引数の作成
            RcFxEventArgs rcFxEventArgs
                = new RcFxEventArgs(name,
                    this.GetMethodName(((Control)(sender)),
                    FxLiteral.UOC_METHOD_FOOTER_CHECKED_CHANGED), sender, e);

            // イベント処理の共通メソッド
            this.CMN_Event_Handler(rcFxEventArgs);
        }
Esempio n. 26
0
        /// <summary>フレームワークの対象コントロールイベントの開始処理を実装</summary>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>画面コード親クラス1から利用される派生の末端</remarks>
        protected override void UOC_PreAction(RcFxEventArgs rcFxEventArgs)
        {
            // フレームワークの対象コントロールイベントの開始処理を実装する
            // TODO:

            // 権限チェック ------------------------------------------------
            // -------------------------------------------------------------

            // 閉塞チェック ------------------------------------------------
            // -------------------------------------------------------------

            // ACCESSログ出力 ----------------------------------------------

            if (MyBaseControllerWin.CanOutPutLog)
            {
                // ------------
                // メッセージ部
                // ------------
                // ユーザ名, レイヤ, 画面名, コントロール名,
                // 処理時間(実行時間), 処理時間(CPU時間)
                // エラーメッセージID, エラーメッセージ等
                // ------------
                string strLogMessage =
                    "," + UserInfo.UserName +
                    "," + "----->" +
                    "," + this.Name +
                    "," + rcFxEventArgs.ControlName;

                // Log4Netへログ出力
                LogIF.InfoLog("ACCESS", strLogMessage);
            }

            // -------------------------------------------------------------

            // 性能測定開始
            this.perfRec = new PerformanceRecorder();
            this.perfRec.StartsPerformanceRecord();
        }
Esempio n. 27
0
        /// <summary>イベント処理の共通メソッド</summary>
        /// <param name="rcFxEventArgs">イベント ハンドラの共通引数</param>
        /// <remarks>派生の画面コード親クラス2から利用する。</remarks>
        protected void CMN_Event_Handler(RcFxEventArgs rcFxEventArgs)
        {
            // UOCメソッドの戻り値、urlを受ける。
            //string url = "";

            // オリジナルのスタックトレース値のクリア
            this.OriginalStackTrace = "";

            #region メソッドが無ければ、何もしないコードを追加。

            // Formをチェック
            if (!Latebind.CheckTypeOfMethodByName(this, rcFxEventArgs.MethodName))
            {
                // Formで発見できなかった

                bool isExist = false;

                // UserControlをチェック
                string newMethodName = rcFxEventArgs.MethodName.Replace(this.UserControlImplementingMethod + "_", "");

                foreach (UserControl uc in this.LstUserControl)
                {
                    if (Latebind.CheckTypeOfMethodByName(uc, newMethodName))
                    {
                        // UserControlで発見できた。
                        isExist = true;
                        break;
                    }
                }

                // 発見できなかったら、何もせずに戻る。
                if (!isExist)
                {
                    return;
                }
            }

            #endregion

            try
            {
                // ★ イベントの開始前のUOC処理
                this.UOC_PreAction(rcFxEventArgs);

                // ★ イベントのUOC処理
                this.LateBind(rcFxEventArgs);

                // ★ イベントの終了後のUOC処理
                this.UOC_AfterAction(rcFxEventArgs);
            }
            catch (BusinessApplicationException baEx)
            {
                // アプリケーション例外発生時の処理は派生クラスに記述する。
                this.UOC_ABEND(baEx, rcFxEventArgs);

                // アプリケーション例外はリスローしない。
            }
            catch (BusinessSystemException bsEx)
            {
                // システム例外発生時の処理は派生クラスに記述する。
                this.UOC_ABEND(bsEx, rcFxEventArgs);

                // システム例外はリスローする。
                throw;
            }
            //catch (System.Threading.ThreadAbortException taEx)
            //{
            //    // スレッド中断エラーの場合は何もしない
            //    Exception ex = taEx; // ← 警告を出さないため
            //}
            catch (Exception ex)
            {
                // 一般的な例外発生時の処理は派生クラスに記述する
                this.UOC_ABEND(ex, rcFxEventArgs);

                // 一般的な例外はリスローする。
                throw;
            }
            finally
            {
                // Finally節のUOCメソッド 
                this.UOC_Finally(rcFxEventArgs);
            }
        }
Esempio n. 28
0
        /// <summary>フレームワークの対象コントロールイベントの終了処理を実装</summary>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>画面コード親クラス1から利用される派生の末端</remarks>
        protected override void UOC_AfterAction(RcFxEventArgs rcFxEventArgs)
        {
            // フレームワークの対象コントロールイベントの終了処理を実装する
            // TODO:

            // 性能測定終了
            this.perfRec.EndsPerformanceRecord();

            // ACCESSログ出力 ----------------------------------------------

            if (MyBaseControllerWin.CanOutPutLog)
            {
                // ------------
                // メッセージ部
                // ------------
                // ユーザ名, レイヤ, 画面名, コントロール名,
                // 処理時間(実行時間), 処理時間(CPU時間)
                // エラーメッセージID, エラーメッセージ等
                // ------------
                string strLogMessage =
                    "," + UserInfo.UserName +
                    "," + "<-----" +
                    "," + this.Name +
                    "," + rcFxEventArgs.ControlName +
                    "," + perfRec.ExecTime +
                    "," + perfRec.CpuTime;

                // Log4Netへログ出力
                LogIF.InfoLog("ACCESS", strLogMessage);
            }

            // -------------------------------------------------------------
        }
Esempio n. 29
0
 /// <summary>開始</summary>
 private void UOC_btnStart_Click(RcFxEventArgs rcFxEventArgs)
 {
     Program.FlagEnd = false; // フラグ完了
     this.Close();
 }
Esempio n. 30
0
        /// <summary>Finally節の処理を実装</summary>
        /// <param name="rcFxEventArgs">イベントハンドラの共通引数</param>
        /// <remarks>画面コード親クラス1から利用される派生の末端</remarks>
        protected override void UOC_Finally(RcFxEventArgs rcFxEventArgs)
        {
            //// Log4Netへログ出力
            //LogIF.InfoLog("ACCESS", "UOC_Finally:" + rcFxEventArgs.ButtonID);

            //// 非同期呼び出しと併用不可能(Invokeも破棄するため)。
            //// 以下のメッセージ(一定??確認が必要)を追加でDispatchするとControl.Invoke可能。
            //int[] fm, dm;
            //PeekMessage.RemoveMessage(new int[] { 0xC25D, 0xC27D }, out fm, out dm);

            //// フィルタされたメッセージ
            //System.Diagnostics.Debug.WriteLine("fm:");
            //foreach (int i in fm)
            //{
            //    System.Diagnostics.Debug.WriteLine(i);
            //}

            //// ディスパッチされたメッセージ
            //System.Diagnostics.Debug.WriteLine("dm:");
            //foreach (int i in dm)
            //{
            //    System.Diagnostics.Debug.WriteLine(i);
            //}
        }