Example #1
0
        //DoWorkイベントハンドラ
        // 段落振り直し
        private void ProgressDialog_Renum_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker bw = (BackgroundWorker)sender;

            //パラメータを取得する
            int stopTime = (int)e.Argument;

            Document doc      = danrakuG01.Globals.ThisAddIn.Application.ActiveDocument;
            var      myPatDoc = new patDoc();
            Range    rng      = myPatDoc.書類名の範囲("明細書", doc);

            if (rng == null)
            {
                System.Windows.Forms.MessageBox.Show("明細書が記載されていません。", "警告");
                e.Result = 0;
                return;
            }
            long endpos   = rng.End;
            int  counter  = 0;
            int  i        = 0;
            int  lastTick = Environment.TickCount;
            int  currTick;

            bw.ReportProgress(i, i.ToString() + "% 終了しました");

            rng.Find.MatchWildcards = true;
            while (rng.Find.Execute("【[0-9]@】"))
            {
                counter++;
                rng.Text = myPatDoc.段落番号文字列の生成(counter);
                rng.SetRange(rng.End, rng.End);

                //キャンセルされたか調べる
                if (bw.CancellationPending)
                {
                    //キャンセルされたとき
                    e.Cancel = true;
                    return;
                }
                //指定された時間待機する
                //System.Threading.Thread.Sleep(16);

                currTick = Environment.TickCount;
                if (currTick - lastTick > 1000)
                {
                    //ProgressChangedイベントハンドラを呼び出し、
                    //コントロールの表示を変更する
                    i = (int)(rng.End * 100 / endpos);
                    bw.ReportProgress(i, i.ToString() + "% 終了しました");
                    lastTick = currTick;
                }
            }
            i = 100;
            bw.ReportProgress(i, i.ToString() + "% 終了しました");
            System.Threading.Thread.Sleep(500);
            //結果を設定する
            e.Result = counter;
        }
Example #2
0
        private void RenumDanraku_Click(object sender, RibbonControlEventArgs e)
        {
            Document doc      = danrakuG01.Globals.ThisAddIn.Application.ActiveDocument;
            var      myPatDoc = new patDoc();

            if (doc.TrackRevisions == true)
            {
                System.Windows.Forms.MessageBox.Show("変更履歴の記録をオフしてくたさい");
                return;
            }
            myPatDoc.垂直タブを改行に(doc);
            //ProgressDialogオブジェクトを作成する
            ProgressDialog pd = new ProgressDialog("段落番号の振り直し",
                                                   new DoWorkEventHandler(ProgressDialog_Renum_DoWork),
                                                   16);
            //進行状況ダイアログを表示する
            DialogResult result = pd.ShowDialog();

            //結果を取得する
            if (result == DialogResult.Cancel)
            {
                MessageBox.Show("キャンセルされました");
            }
            else if (result == DialogResult.Abort)
            {
                //エラー情報を取得する
                Exception ex = pd.Error;
                MessageBox.Show("エラー: " + ex.Message);
            }
            else if (result == DialogResult.OK)
            {
                //結果を取得する
                int stopTime = (int)pd.Result;
                //MessageBox.Show("成功しました: " + stopTime.ToString());
            }

            //後始末
            pd.Dispose();
        }
Example #3
0
        //DoWorkイベントハンドラ
        // 段落の追加
        private void ProgressDialog_Add_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker bw = (BackgroundWorker)sender;

            //パラメータを取得する
            int stopTime = (int)e.Argument;

            Document doc      = danrakuG01.Globals.ThisAddIn.Application.ActiveDocument;
            var      myPatDoc = new patDoc();
            Range    rng      = myPatDoc.書類名の範囲("明細書", doc);

            if (rng == null)
            {
                System.Windows.Forms.MessageBox.Show("明細書が記載されていません。", "警告");
                e.Result = 0;
                return;
            }
            int counter  = 0;
            int i        = 0;
            int lastTick = Environment.TickCount;
            int currTick;

            bw.ReportProgress(i, i.ToString() + "% 終了しました");

            foreach (Paragraph paraCurr in rng.Paragraphs)
            {
                string tmpdebug = paraCurr.Range.Text;
                if (myPatDoc.項目の判定(paraCurr))
                {
                    if (myPatDoc.パラグラフが段落番号付与対象項目か判定(paraCurr))
                    {
                        Range rng2 = myPatDoc.直後への段落番号の挿入(paraCurr);
                        if (paraCurr.Range.Text.IndexOf("【符号の説明】") >= 0)
                        {
                            break;
                        }
                    }
                    else if (myPatDoc.パラグラフが数化表項目か判定(paraCurr))
                    {
                        Paragraph paraPrev = myPatDoc.テキスト記載パラグラフ取得(paraCurr, -1);
                        if (myPatDoc.パラグラフが数化表項目か判定(paraPrev))
                        {
                            myPatDoc.直前への段落番号挿入(paraCurr);
                        }
                        paraPrev = null;
                    }
                    else if (myPatDoc.パラグラフが段落番号付与非対象項目か判定(paraCurr))
                    {
                        if (myPatDoc.パラグラフが不正な段落番号か判定(paraCurr))
                        {
                            paraCurr.Range.Delete();
                        }
                    }
                    else
                    {
                        Range rng2 = myPatDoc.直後への段落番号の挿入(paraCurr);
                    }
                }
                else
                {
                    myPatDoc.段落番号付与判定(paraCurr);
                }
                counter++;
                //キャンセルされたか調べる
                if (bw.CancellationPending)
                {
                    //キャンセルされたとき
                    e.Cancel = true;
                    return;
                }
                //指定された時間待機する
                //System.Threading.Thread.Sleep(stopTime);

                currTick = Environment.TickCount;
                if (currTick - lastTick > 1000)
                {
                    //ProgressChangedイベントハンドラを呼び出し、
                    //コントロールの表示を変更する
                    i = (int)(paraCurr.Range.End * 100 / rng.End);
                    bw.ReportProgress(i, i.ToString() + "% 終了しました");
                    lastTick = currTick;
                }
            }
            i = 100;
            bw.ReportProgress(i, i.ToString() + "% 終了しました");
            System.Threading.Thread.Sleep(500);
            //結果を設定する
            e.Result = counter;
        }