ドキュメント印刷

Q
Doc上にSpreadを表示し、任意の位置で改ページを行いたい
(キーブレイクで改ページ)

A
[解決方法]
CSVデータをSpread上に表示させ、SpreadColumnオブジェクトのBreakKeyプロパティを
設定しておき、OnKeyBreakイベントハンドラ内でDoc.ShowPageメソッドを実行することで、
任意の位置で改ページを行うことが可能です。

同時に複数の項目がキーブレイクと判断された場合、BreakKeyプロパティの絶対値が
最も大きいオブジェクトだけにKeyBreakイベントが発生します。
BreakKeyの値が同じ場合には、先に定義されているオブジェクト(Spreadでは最も左側の
列となります)にイベントが発生します。







[サンプルコード]
/* Doc呼び出し元フォーム */

Form Form1 {
    Button Button1 {
        Title = "Docプレビュー";
        
        Function OnTouch( e ) {
            ^.Get("Spd_017_Doc.crs");
            ^.Spd_017_Doc.ShowPage();
            ^.Spd_017_Doc.Delete();
        }
    }
}

/* Spreadを表示するDoc */

Doc Spd_017_Doc {
    PreView = $SCREEN;

    Spread Spread1 {
        SpreadRow SpreadRow1[0] {

            SpreadColumn SpreadColumn1{
                BreakKey = 1;
                Title = "部門名";
            }
            SpreadColumn SpreadColumn2 {
                Title = "商品名";
            }
            SpreadColumn SpreadColumn3 {
                Title = "ランク";
            }
        }
    }
    /* 改ページ時の処理 */
    Function OnPageChange( e ) { 
        /* ページ番号を代入 */
        Spd_017_Doc.Label_page = str(PageNumber) + "ページ";
        Spd_017_Doc.ShowPage();
        Spread1.SpreadRow1.truncate();
    }

    Function OnKeyBreak( e ) {
        if( e.CurrentIndex != -1 ) {
            /* キーブレイク時に改ページする */
            Spd_017_Doc.ShowPage();
        }
        Spread1.SpreadRow1.truncate();
    }

    if ( !$DESIGNTIME ) {
        this.Spread1.SpreadRow1 << CSV {
            野菜,キャベツ,A
            野菜,タマネギ,B
            野菜,レタス,A
            <省略>
            お菓子,チーズケーキ,C
        };
    }
}
CRSファイル形式のサンプル
  「Spreadの任意の位置で改ページを行うサンプル (Spd_017.zip)
をご参照ください。

管理番号:Doc_008
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ