/// <summary>
        /// 現在の出来高データを消去して、日付やパネルデータも読み直す
        /// </summary>
        /// <param name="sender">呼び出し元ボタンオブジェクト</param>
        private async void Clear_DataAsync(object sender)
        {
            string message = "現在の出来高を消去しますか?";


            if (ShowMessageDlg(message) == MessageBoxResult.Cancel)
            {
                return;
            }

            ConfirmationWindow conf = new ConfirmationWindow("クリア");

            conf.WindowStartupLocation = WindowStartupLocation.CenterScreen;

            this.Grid_Opa.Visibility = Visibility.Visible;

            conf.ShowDialog();

            this.Grid_Opa.Visibility = Visibility.Collapsed;


            if (conf.result == false)
            {
                return;
            }


            DekiDakaDataCollection.Clear();
            DekiDakaDataCollection.Add(new Dekidaka_Data(0));
            iDataCollectionIndex = 0;

            //コンテキストの初期値設定
            mwContext.mwWriteMember     = "名前を入力";
            mwContext.mwInputDate       = System.DateTime.Today;
            this.TodayDate.SelectedDate = mwContext.mwInputDate;
            mwContext.mwPartNumber      = 0;

            ModuleData.ModuleDataSetup();

            StateWindow StateW = new StateWindow("データを保存しています");

            StateW.WindowStartupLocation = WindowStartupLocation.CenterScreen;
            StateW.Topmost = true;

            StateW.Show();

            //一時データを保存
            await Task.Run(() => { SaveTempData(); });

            StateW.Close();
            StateW = null;
        }
Exemple #2
0
        /// <summary>
        /// アプリケーションが開始される時のイベント。
        /// </summary>
        /// <param name="e">イベント データ。</param>
        protected override void OnStartup(StartupEventArgs e)
        {
            // 多重起動チェック
            App._mutex = new Mutex(false, "{0A8C044C-77AB-422D-A2E2-89F47D9FB2E1}");
            if (!App._mutex.WaitOne(0, false))
            {
                MessageBox.Show("既に起動しています");
                App._mutex.Close();
                App._mutex = null;
                this.Shutdown();
                return;
            }


            //状況表示
            StateWindow StateW = new StateWindow("設定の読み込み中…");

            StateW.WindowStartupLocation = WindowStartupLocation.CenterScreen;

            StateW.Show();

            //設定の読み出し
            Settings.PreferenceFilePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + SettingPath;
            if (Settings.LoadSetting() == false)
            {
                Settings.InitializeSetting();
            }

            StateW.cx.strDisplayMessage = "パネルの読み込み中…";

            ModuleData.ModuleDataSetup();



            // メイン ウィンドウ表示
            MainWindow window = new MainWindow();

            window.Show();

            //状況表示クローズ
            StateW.Close();
            StateW = null;
        }
        private void Button_Print_Press(object sender)
        {
            //確認ダイアログで枚数を確認させる
            string message = TagContext.iQuantity.ToString() + "入を" + TagContext.iCopyCount.ToString() + "枚印刷します。";

            OKCancelDlg re = new OKCancelDlg(message);

            re.WindowStartupLocation = WindowStartupLocation.CenterScreen;

            re.ShowDialog();

            //返事がキャンセルならなにもせず戻る
            if (re.result == MessageBoxResult.Cancel)
            {
                return;
            }


            StateWindow StateW = new StateWindow("印刷データ作成中");

            StateW.WindowStartupLocation = WindowStartupLocation.CenterScreen;
            StateW.Topmost = true;

            StateW.Show();

            //タグを設定する
            PrintingTag Pt = new PrintingTag(DData);

            Pt.TagSetting(TagContext.iQuantity, TagContext.iCopyCount);

            //印刷する
            Pt.Print();

            StateW.Close();
            StateW = null;

            this.Close();
        }
        /// <summary>
        /// 出来高データを設定したフォルダに保存する
        /// </summary>
        /// <param name="sender">呼び出し元ボタンオブジェクト</param>
        public void SaveCsvData(object sender)
        {
            string message = "現在の出来高を保存しますか?";


            if (ShowMessageDlg(message) == MessageBoxResult.Cancel)
            {
                return;
            }


            StateWindow StateW = new StateWindow("データを保存しています");

            StateW.WindowStartupLocation = WindowStartupLocation.CenterScreen;
            StateW.Topmost = true;

            StateW.Show();

            DataTable TempData;

            TempData = GetDekidakaDataTable();


            string inputdate = mwContext.mwInputDate.ToShortDateString();

            inputdate = inputdate.Replace('/', '_');

            string filename = "出来高_" + inputdate + "_" + mwContext.mwPartGroupNo.ToString() + "班.csv";

            //string filepath = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments) + "\\出来高";

            string filepath = Settings.SaveFilePath;


            //設定の出力先ディレクトリを調べて作成、メッセージを変更
            message = "出来高が設定先に保存されました。";

            if (System.IO.Directory.Exists(filepath) != true)
            {
                filepath = System.Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments) + "\\出来高";
                message  = "出来高がパブリックフォルダに保存されました";

                if (System.IO.Directory.Exists(filepath) != true)
                {
                    if (Settings.CreateDirectory(filepath) != true)
                    {
                        message = "書き込み先フォルダが見つかりません";
                        ShowMessageDlg(message);
                        StateW.Close();
                        StateW = null;
                        return;
                    }
                }
            }


            filename = filepath + "\\" + filename;


            //CSVとして保存する
            if (CSVTool.CSVTool.ConvertDataTableToCsv(TempData, filename, true, false) == false)
            {
                message = "出来高の保存に失敗しました。";
            }


            StateW.Close();
            StateW = null;



            //結果のメッセージを表示
            ShowMessageDlg(message);



            return;
        }
        /// <summary>
        /// 入力用の子ウィンドウを開いて出来高データを入力する。変更されたら一時データとバックアップを保存する
        /// </summary>
        /// <param name="sender">呼び出し元編集ボタンオブジェクト</param>
        private async void EditDataAsync(object sender)
        {
            if (cw != null)
            {
                return;
            }                          //子ウィンドウのポインタがnullじゃなければ(子ウィンドウが開いていれば)なにもせず戻る

            //呼び出し元ボタンから、tagに紐付けられた行のitemを取得
            Dekidaka_Data Row = ((Button)sender).Tag as Dekidaka_Data;


            if (Row == null)
            {
                return;
            }                          //asキャストに失敗したら戻る

            int id = Row.iUID;

            //元の編集状態(未作成か作成済みか)を保持する
            bool bEdited = Row.bActionable;


            //タッチイベントから呼んだときには選択行がボタンの行にないときがあるので、選択行をデータのインデックスに合わせる
            dataGrid.SelectedItem = Row;

            if (mwContext.mwWriteMember == "" || mwContext.mwWriteMember == "名前を入力" || mwContext.mwPartNumber == 0)
            {
                string message = "記入者名と人数を設定して下さい。";

                ShowMessageDlg(message);

                return;
            }

            cw = new InputWindow(Row);

            //記入者がnullならメインウィンドウの記入者データを入力
            if (cw.Original.strWriteMember == null)
            {
                cw.ReturnValue.strWriteMember = mwContext.mwWriteMember;
            }

            //班番号が無ければメインウィンドウの班番号を記入
            if (cw.Original.iPartGroup == 0)
            {
                cw.ReturnValue.iPartGroup = mwContext.mwPartGroupNo;
            }

            //人数が無ければメインウィンドウの人数を記入
            if (cw.Original.iPartNumber == 0)
            {
                cw.ReturnValue.iPartNumber = mwContext.mwPartNumber;
            }


            //cw.Closed += new EventHandler(cw_Closed);

            //cw.Topmost = true;
            //cw.Show();



            //this.Hide();

            //入力ダイアログを開く
            cw.ShowDialog();


            //this.Show();


            Row.strOutput       = ""; //更新を通知
            Row.iOutputSubTotal = 0;  //更新を通知

            //元の編集状態が未編集で、編集済みで返ってきた場合は新しい行を追加する
            if (bEdited == false && Row.bActionable == true)
            {
                DekiDakaDataCollection.Add(new Dekidaka_Data(++iDataCollectionIndex));
            }

            //元の編集状態が編集済みで、未編集で返ってきた場合はアイテムを削除する
            if (bEdited == true && Row.bActionable == false)
            {
                DekiDakaDataCollection.Remove(Row);
            }



            // 一時データを保存する
            if (cw.IsModified)
            {
                //子ウィンドウを解放
                cw = null;


                StateWindow StateW = new StateWindow("データを保存しています");

                StateW.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                StateW.Topmost = true;
                StateW.Show();

                int iState = 0;

                await Task.Run(() => { iState = SaveTempData(); });

                StateW.Close();
                StateW = null;

                if (iState != 1)
                {
                    string message = string.Format("一時保存に失敗しました({0})", iState == 10 ? "一時パスアクセス不可" : "バックアップパスアクセス不可");

                    ShowMessageDlg(message);
                }
            }
            else
            {
                //子ウィンドウを解放
                cw = null;
            }
        }
        /// <summary>
        /// テロップを印刷する
        /// </summary>
        /// <param name="sender">呼び出し元印刷ボタン</param>
        private void Button_Print_Press(object sender)
        {
            //ボタンからtagに紐付けられたitemを取得する
            Dekidaka_Data Row = ((Button)sender).Tag as Dekidaka_Data;

            if (Row == null)
            {
                return;
            }                           //asキャストに失敗したら戻る



            //内容を確認するダイアログ
            string message = Row.strCustomar + "の" + Row.strCommodity + Row.strContentsOfWork + "のテロップを印刷しますか?";


            if (ShowMessageDlg(message) == MessageBoxResult.Cancel)
            {
                return;
            }



            //出来高が未入力なら確認する
            if (Row.strOutput == null)
            {
                message = "出来高が入力されていませんがよろしいですか?";


                if (ShowMessageDlg(message) == MessageBoxResult.Cancel)
                {
                    return;
                }
            }


            StateWindow StateW = new StateWindow("印刷データ作成中");

            StateW.WindowStartupLocation = WindowStartupLocation.CenterScreen;
            //StateW.Topmost = false;

            StateW.Show();

            //テロップ印刷オブジェクトを作成
            PrintingTelop Pt = new PrintingTelop(Row);

            //現在の出来高データでテロップを設定
            Pt.TelopSetting();

            //StateW.cx.strDisplayMessage = "プリンタに送信中";


            //印刷する
            Pt.Print();


            //印刷ボタンの色を変える
            Row.SetPrintBottonColor(0);

            StateW.Close();
            StateW = null;
        }