API version 4
- ‐
KeyBreak¶
CSV読み込みでkeyBreak設定されたセルの内容が前行と異なる場合に発生します。
CSVデータのロードで、列に対応したHeaderFieldオブジェクトのkeyBreakPriority、keyBreakTimingプロパティに値が指定されている場合、現在注目している配列データの前後で値が異なる場合にKeyBreakイベントが発生します。
引数のイベントオブジェクトには以下のプロパティが追加されています。
型 |
名前 |
説明 |
---|---|---|
integer |
currentIndex |
対象セルの行番号(書き換え可能) |
integer |
row |
対象セルの行番号(0始まり) |
integer |
column |
対象セルの列番号(0始まり) |
KeyBrak発生タイミング
keyBreakPriorityの設定によって、イベントの発生するタイミングが異なります。
例1
item1 keyBreakPriority=1 keyBreakTiming=KEYBREAK_BEFORE |
item2 keyBreakPriority=2 keyBreakTiming=KEYBREAK_BEFORE |
item3 keyBreakPriority=3 keyBreakTiming=KEYBREAK_BEFORE |
|
---|---|---|---|
1行目 | "AAA" | "XXX" | "111" |
2行目 | "AAA" | "YYY" | "111" |
3行目 | "BBB" | "ZZZ" | "222" |
4行目 | "BBB" | "ZZZ" | "222" |
例2
item1 keyBreakPriority=1 keyBreakTiming=KEYBREAK_AFTER |
item2 keyBreakPriority=2 keyBreakTiming=KEYBREAK_AFTER |
item3 keyBreakPriority=3 keyBreakTiming=KEYBREAK_AFTER |
|
---|---|---|---|
1行目 | "AAA" | "XXX" | "111" |
2行目 | "AAA" | "YYY" | "111" |
3行目 | "BBB" | "ZZZ" | "222" |
4行目 | "BBB" | "ZZZ" | "222" |
イベント内でのテーブル操作
KeyBreakイベントにより起動されたイベントハンドラ内では、イベントハンドラに渡されるイベントオブジェクトのCurrentIndexによりブレィクした行のインデックス値を得ることができます。currentIndexに新しい値を代入することにより、後続のデータの代入位置を変更することができます。
例3: 挿入行を1行進める例
イベントハンドラ内部でcurrentIndexを変更したり、CSVデータの代入対象となる配列オブジェクトの変更操作を行った場合、結果的に後続のCSVデータの代入でキーブレーク条件となるようなデータの並びとなることがありますが、この操作によりKeyBreakイベントは発生することはありません。キーブレイクの判断は常に元のCSVデータの値により行われます。
Function OnKeyBreak(e) {
rec.insert(1);
rec[e.currentIndex+1].item2 = "合計";
rec[e.currentIndex+1].item3 = goukei;
e.CurrentIndex++;
}
item1 keyBreakPriority=1 keyBreakTiming=KEYBREAK_BEFORE |
item2 keyBreakPriority=0 keyBreakTiming=KEYBREAK_NONE |
item3 keyBreakPriority=0 keyBreakTiming=KEYBREAK_NONE |
|
---|---|---|---|
1行目 | "AAA" | "XXX" | 111 |
2行目 | "AAA" | "YYY" | 222 |
3行目 | "合計" | 333 | |
4行目 | "BBB" | "ZZZ" | 555 |
関連項目
HeaderField.keyBreakPriority、 HeaderField.keyBreakTiming プロパティ
PrintRegion.<<、 PrintRecord.<< オペレータ
使用例
CRSダウンロード
Form formPrintRecord_KeyBreak {
x = 0; y = 0; width = 800; height = 600;
PrintForm printform1 {
x = 10; y = 72; width = 256; height = 362;
TextField textfield1 {
x = 16; y = 8; width = 224; height = 16;
value="keyBreakTiming = KEYBREAK_BEFORE";
}
PrintRegion printregion1 {
x = 24; y = 24; width = 216; height = 88;
PrintHeader printheader1 {
height = 16;
HeaderField headerfield1 { width = 70; keyBreakPriority=1; keyBreakTiming=KEYBREAK_BEFORE; }
HeaderField headerfield2 { width = 70; keyBreakPriority=2; keyBreakTiming=KEYBREAK_BEFORE; }
HeaderField headerfield3 { width = 70; keyBreakPriority=3; keyBreakTiming=KEYBREAK_BEFORE; }
}
PrintRecord rec[] {
height = 16;
TextField item[3];
}
function onKeyBreak(e) {
rec[e.row].item[e.column].bgColor = Color.Red;
}
rec << CSV(Item1,Item2,Item3) {
AAA,XXX,111
AAA,YYY,111
BBB,ZZZ,222
BBB,ZZZ,222
};
}
TextField textfield2 {
x = 16; y = 120; width = 224; height = 16;
value="keyBreakTiming = KEYBREAK_AFTER";
}
PrintRegion printregion2 {
x = 24; y = 136; width = 216; height = 88;
PrintHeader printheader1 {
height = 16;
HeaderField headerfield1 { width = 70; keyBreakPriority=1; keyBreakTiming=KEYBREAK_AFTER; }
HeaderField headerfield2 { width = 70; keyBreakPriority=2; keyBreakTiming=KEYBREAK_AFTER; }
HeaderField headerfield3 { width = 70; keyBreakPriority=3; keyBreakTiming=KEYBREAK_AFTER; }
}
PrintRecord rec[] {
height = 16;
TextField item[3];
}
function onKeyBreak(e) {
rec[e.row].item[e.column].bgColor = Color.Red;
}
rec << CSV(Item1,Item2,Item3) {
AAA,XXX,111
AAA,YYY,111
BBB,ZZZ,222
BBB,ZZZ,222
};
}
TextField textfield3 {
x = 16; y = 232; width = 224; height = 16;
value="modify currentIndex";
}
PrintRegion printregion3 {
x = 24;
y = 248;
width = 216;
height = 108;
PrintHeader printheader1 {
height = 16;
HeaderField headerfield1 { width = 70; keyBreakPriority=1; keyBreakTiming=KEYBREAK_BEFORE; }
HeaderField headerfield2 { width = 70; keyBreakPriority=0; keyBreakTiming=KEYBREAK_NONE; }
HeaderField headerfield3 { width = 70; keyBreakPriority=0; keyBreakTiming=KEYBREAK_NONE; }
}
PrintRecord rec[] {
height = 16;
TextField item1;
TextField item2;
TextField item3;
}
Number goukeiPos = 0;
function onKeyBreak(e) {
var goukei = 0;
for (var i = goukeiPos; i <= e.currentIndex; i++) {
goukei += rec[i].item3;
}
goukeiPos = e.currentIndex+2;
rec.insert(1);
rec[e.currentIndex+1].item2 = "合計";
rec[e.currentIndex+1].item3 = goukei;
e.currentIndex++;
}
this << CSV(Item1,Item2,Item3) {
AAA,XXX,111
AAA,YYY,222
BBB,ZZZ,555
};
}
}
Button buttonPrint {
x = 8; y = 8; width = 56; height = 24; title = "印刷";
function onTouch(e) {
^.printpreview1.clearPages();
^.printpreview1.document = ^.printform1.printDocument();
}
}
PrintPreview printpreview1 {
x = 272; y = 8; width = 488; height = 472;
}
}