社員ブログ
HOME  社員ブログ

アーカイブ

‘社員:モンク’ カテゴリ

シーオーリポーツ修行中3

2014年01月27日 0時00分52秒

こんにちは、モンクです。

先日シーオーリポーツで、特定の条件を満たしたデータにつき、リストフィールドのセルの背景色を変えるということをしました。

1ページに20件程度はいり、それ以降は改ページをしながらリストビューに配置していきます。

セルの背景色を変える要領は以下です。

    private boolean setDetailListData0(IRecordSet recordSet) {
        CrListField detailList = crForm.getCrObject("リスト");<br /><br />        for (int i = 0, n = detailList.getVisibleRows(); i < n; i += 2) {
        // 1行分のデータを設定します
	// 2行で1件のデータを表示 iは一行目、xは2行目
        int x = i +1;
        Object question,answer = null;
        //質問と回答が不一致の場合"入力"側の背景をグレーにする
        question=recordSet.getValue(“q_誕生日");
        detailList.setListData(4, i, question);
        answer=recordSet.getValue(“a_誕生日");
        detailList.setListData(4, x, answer);
        if(!question.equals(answer)) {
	        detailList.getListCell(4, i).setBackColor(java.awt.Color.LIGHT_GRAY);
        }
        question=recordSet.getValue(“q_性別");
        detailList.setListData(5, i, question);
        answer=recordSet.getValue(“a_性別");
        detailList.setListData(5, x, answer);
        if(!question.equals(answer)){
        	detailList.getListCell(5, i).setBackColor(java.awt.Color.LIGHT_GRAY);
        }
            if (! recordSet.next()) {
            return  false;
            }
        }
        return true;
    }


 

2ページ目以降、一旦リストの背景色を初期状態にしてあげる必要があります。
私が最初に打ち込んだのは以下です。
	detitailList.setBackColor(java.awt.Color.WHITE.);


しかしこれではもとに戻りませんでした。
試行錯誤の結果以下が正解です。

 

</p>
        for(int i; i < detailList.getVisibleRows(); i++){
		detailList.setListCelll(4, i).setBackColor(java.awt.Color.WHITE);
		detailList.setListCelll(5, i).setBackColor(java.awt.Color.WHITE);
	}


リストフィールドを土台として、セルがのっかっているイメージなのかもしれません。

 

社員:モンク, 雑記

シーオーリポーツ修行中2

2014年01月24日 0時00分35秒

こんにちは、モンクです。

シーオーリポーツで、1ページ目と2ページ目で少し異なるフォーマットを出力したい場合、レイヤーの機能を使います。
例えば、1ページ目はヘッダーと一覧が必要だが、2ページ目以降は一覧だけだしたい、というような場合です。
1ページ目のレイアウトをにレイヤー1に、2ページ目のレイアウトをレイヤー2に作成します。
レイヤー1は可視、レイヤー2は不可視の状態にしておきます。
次に、改ページのタイミングで、レイヤー1は不可視、レイヤー2を可視の状態に切り替えます。
同時に、レコードを表示するリストフィールドもレイヤー1のものからレイヤー2のものに切り替えます。
//クラスの定義、プロパティは割愛
public void output(IRecordSet recordSet) {
          while (hasNext0) {
                hasNext0 = setDetailListData0(recordSet0, currentPage);
                pageBreak |= hasNext0;

                // 改ページを行い、明細リストを初期化します
                if (pageBreak) {
                    crForm.printOut();
                    crForm.getField("リスト").clear();

                    //2ページ目以降はリストのみ
                    //ここでレイヤを切り替える  Start  ▽
                    CrLayer l1 = crForm.getCrLayer("レイヤ1");
                    l1.setVisibleAtPrint(false);

                    CrLayer l2 = crForm.getCrLayer("レイヤ2");
                    l2.setVisibleAtPrint(true);
                    //ここでレイヤを切り替える  End  △

                    pageBreak = false;
                    currentPage++;

                    //レイヤ2のページ数に転記
                    crForm.getField("ページ数1").setData(String.valueOf(currentPage));
                    crForm.getField("全ページ数1").setData(String.valueOf(pageCount));
                }
            }
}
 
private boolean setDetailListData0(IRecordSet recordSet, int currentPage) {

        CrListField detailList = crForm.getCrObject("リスト");

        //2ページ目以降はレイヤー2のリストに出力
        //ここでレイヤ2のリストに切り替える  Start  ▽
        if(currentPage > 1) detailList = crForm.getCrObject("リスト1");
        //ここでレイヤ2のリストに切り替える  End  △

        for (int i = 0, n = detailList.getVisibleRows(); i < n; i++) {
            // 1行分のデータを設定します
            detailList.setListData(0, i, recordSet.getValue(“フィールド1"));
            detailList.setListData(1, i, recordSet.getValue(“フィールド2"));
            detailList.setListData(2, i, recordSet.getValue(“フィールド3"));
            detailList.setListData(3, i, recordSet.getValue(“フィールド4"));
            detailList.setListData(4, i, recordSet.getValue(“フィールド5"));
            detailList.setListData(5, i, recordSet.getValue(“フィールド6"));
            if (! recordSet.next()) {
                return false;
            }
        }
        return true;
    }

Java, 社員:モンク, 開発言語, 雑記

シーオーリポーツ修行中1

2014年01月23日 0時00分25秒

こんにちは、モンクです。

仕事でシーオーリポーツという、帳票作成ツールを使うことになりました。

実際に使うものはシーオーリポーツ for Java Ver.2(試用版)。

基本的なレポート作成〜Javaによる出力は付属のマニュアルにありますが、

ちょっと凝ったレポートを出力するはなかなか難儀です。

インターネットにも製造に関する記事はさほど掲載がなく、、、

そんな苦労をいくつか綴りたいと思います。

社員:モンク, 雑記