Symfoware

Symfowareについての考察blog

医見書に一覧印刷機能を追加する その2

前回、帳票定義体の作成と印刷ロジックの確認を行いました。
いよいよ、印刷ロジックを組み込んでみます。

印刷用のボタンは

private ACAffairButton patinetList = new ACAffairButton();



と宣言しました。

コンストラクタで、

addPrintTrigger(patinetList);



としてやると、ボタンが押されたとき

protected void printActionPerformed(ActionEvent e) throws Exception



この名前のメソッドを呼び出してくれるようです。


印刷部分のロジックはこんな感じ。

    /**
     * 印刷実行
     */
    protected void printActionPerformed(ActionEvent e) throws Exception {
        
        if (patientsData.size() == 0) {
            return;
        }
        
        if (ACMessageBox.showOkCancel("情報一覧の印刷", "一覧表を出力してもよろしいですか?" ,
                "印刷(O)",
                'O') != ACMessageBox.RESULT_OK) {
            return;
        }
        
        //印刷用オブジェクト初期化
        ACChotarouXMLWriter pd = new ACChotarouXMLWriter();
        
        pd.beginPrintEdit();
        //sym_listという名前で、SymfoList.xml定義体を追加
        ACChotarouXMLUtilities.addFormat(pd, "sym_list", "SymfoList.xml");
        
        for (int i = 0; i < patientsData.size(); i++) {
            VRMap row = (VRMap) patientsData.getData(i);
            int index = (i % 20) + 1;
            if (index == 1) {
                if (i != 0){
                    pd.endPageEdit();
                }
                pd.beginPageEdit("sym_list");
            }
            //氏名
            IkenshoCommon.addString(pd, row, "NAME", "table.h"+ index + ".name");
            //かな氏名
            IkenshoCommon.addString(pd, row, "KANANAME", "table.h"+ index + ".name_kana");
            //性別
            IkenshoCommon.addString(pd, row, "SEX", "table.h"+ index + ".sex");
            Object sex = row.get("SEX");
            if (sex instanceof Integer) {
                switch (((Integer) sex).intValue()) {
                case 1:
                    IkenshoCommon.addString(pd, "table.h" + index + ".sex","男性");
                    break;
                case 2:
                    IkenshoCommon.addString(pd, "table.h" + index + ".sex","女性");
                    break;
                }
            }
            //年齢
            IkenshoCommon.addString(pd, "table.h"+ index + ".age", IkenshoConstants.FORMAT_NOW_AGE.format(row.get("BIRTHDAY")));
            //生年月日
            IkenshoCommon.addString(pd, "table.h"+ index + ".birdhday", IkenshoConstants.FORMAT_ERA_YMD.format(row.get("BIRTHDAY")));
            
            //郵便番号
            IkenshoCommon.addString(pd, row, "POST_CD", "table.h"+ index + ".zipcode");
            //住所
            IkenshoCommon.addString(pd, row, "HOME_ADRS", "table.h"+ index + ".address");
            //番地
            IkenshoCommon.addString(pd, row, "HOME_BANTI", "table.h"+ index + ".sub_address");
            //連絡先(TEL)
            IkenshoCommon.addString(pd, row, "HOME_TEL1", "table.h"+ index + ".tel");
            
        }
        pd.endPageEdit();
        pd.endPrintEdit();
        openPDF(pd);
    }



早速実行してみます。

001_20090817101011.png

002_20090817101011.png

003_20090817101011.png

004_20090817101011.png

005_20090817101011.png


いい感じでpdfが出力されました。


※簡単そうに書いてますが、結構苦労してます・・・


ソースはコチラに置いておきます。


医見書のカスタマイズ








関連記事
  1. 2009/08/27(木) 12:08:45|
  2. 開発
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Mario AI Competition を動かす | ホーム | 医見書に一覧印刷機能を追加する その1>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/119-299b37ad
この記事にトラックバックする(FC2ブログユーザー)