グリッドの処理の中で、セルのインスタンスを取得するのに、RecordGridUI.get-cell-at を利用しているのですが、
セル数が多いと、時間がかかります。(当たり前ですが)
この時間を少しでも早くする方法は何かありますか?
あれば教えてください。
1度取得した後は早いので、おそらく、セルのインスタンスの生成で時間がかかっているのだと思いますが、
そうすると、時間短縮は無理っぽいですかね。
Code:
{def tf-rf-size = {TextField value = "100"}}
{def tf-rec-size = {TextField value = "500"}}
{Table columns = 2,
"カラム数", tf-rf-size,
"レコード数", tf-rec-size
}
{let grid:#RecordGrid = null}
{CommandButton
label = "get-cell-at",
{on Action do
||カラム数×レコード数のグリッドを作成
{do
set grid = {RecordGrid
width = {make-elastic},
height = {make-elastic}
}
def rf-ary = {{Array-of RecordField}}
{for i:int = 0 to {tf-rf-size.value.to-int} do
{rf-ary.append
{RecordField {String i}, nullable? = true}
}
}
def rfs = {RecordFields {splice rf-ary}}
def rs = {RecordSet rfs}
def col-ary = {{Array-of RecordGridColumn}}
{for i:int = 0 to {tf-rf-size.value.to-int} do
{col-ary.append
{RecordGridColumn {String i}}
}
}
{for i:int = 0 to {tf-rec-size.value.to-int} do
def new-r = {rs.new-record}
{rs.append new-r}
}
set grid.record-source = rs
set grid.columns = col-ary
}
||カラム数×レコード数の get-cell-at の実行時間
{do
def dt = {DateTime}
{for r in grid.records do
{for col in grid.columns do
def target-cell = {grid.ui.get-cell-at r, col}
}
}
{popup-message "get-cell-at 完了:" & {dt.elapsed}}
}
}
}
{CommandButton
label = " グリッドを再生成せずに get-cell-at",
{on Action do
||カラム数×レコード数の get-cell-at の実行時間
{if-non-null grid then
def dt = {DateTime}
{for r in grid.records do
{for col in grid.columns do
def target-cell = {grid.ui.get-cell-at r, col}
}
}
{popup-message "get-cell-at 完了:" & {dt.elapsed}}
else
{popup-message "まだ RecordGrid がありません"}
}
}
}