Ejemplo n.º 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;
        }
Ejemplo n.º 2
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;
        }