03-05-2012, 04:37 PM,
|
|||||
|
|||||
RecordGridの右クリックメニューについて
RecordGridの右クリックメニューについて、
質問があります。 83列あるグリッドにて、右クリックをし、 右クリックメニューを表示しようとすると、 10秒ほどかかってしまっています。 なんとか、表示時間を短くしたいのですが、 何か良い対策はありませんか? 試しに、列数を19列に減らしてみたところ、 右クリックメニューの表示にかかる時間が1秒ほどに 短くなるため、時間がかかる原因としては 列数が多いためと推測しています。 右クリックメニュー内容は特に変えておらず、 標準のメニューを使用しています。 また、良く分からないのが、 グリッドのスクロールや、データ設定などの動作は遅くなっておらず、 右クリックメニュー表示だけ遅くなっています。 何か心当たりがありましたら、教えてください。 よろしくお願いします。 |
|||||
03-06-2012, 09:33 AM,
|
|||||
|
|||||
RE: RecordGridの右クリックメニューについて
列が多くなってもそこまで遅くなるはずがないと思います。
こちらで試してみたら、やっぱりそうはなりません。 他にも条件があるんでしょうかね。 セルとか継承しているんでしょうか。 メニューは標準でも、作る時に他のAPIを呼び出します。 テストコード添付してくれればもっと調べられるでしょう。 |
|||||
03-06-2012, 10:06 AM,
|
|||||
|
|||||
RE: RecordGridの右クリックメニューについて
一応、こちらで試したテストコードです。
Code: {value そんなに遅いとは感じませんでしたので、相違点を教えてもらえると助かります。 |
|||||
03-06-2012, 11:41 AM,
|
|||||
|
|||||
RE: RecordGridの右クリックメニューについて
ご回答ありがとうございます。
プロジェクトの規約のため、 Curl標準のRecordGridを継承したクラスを使用しています。 私の方でも、該当の右クリックメニュー表示が遅いグリッドを Curl標準のRecordGridに変えてみたところ、 列数を減らした時よりも早く、右クリックメニューが表示されました。 hokadaさんのソースと同じような実装になっています。 列数だけの問題かと思っていましたが、 継承したグリッドのソースコードを見直しをしています。 試しに、プロファイリングをしてみたところ、 標準のRecordGridUIを継承したUIクラスの note-columns-collection-changedメソッドで 時間がかかっているようです。 継承したUIクラスに下記メソッドが存在し、 {method public {context-menu-at xistance, yistance}:#MenuPane let menu-pane:#MenuPane {with self.grid.editable? = false do set menu-pane = {super.context-menu-at x, y} } {return menu-pane} } {with self.grid.editable? = false do のeditableでRecordGridColumnを継承したクラスの ローカルオプションを参照し、その処理内で UIクラスのnote-columns-collection-changedメソッドを呼んでいるようです。 {define-class public ExBaseRecordGridColumn {inherits RecordGridColumn} ・・・コード略・・・ {local-option public editable?:bool {self.note-columns-collection-changed} } ・・・コード略・・・ {method protected {note-columns-collection-changed}:void {if-non-null rg = self.grid then {(rg.ui asa RecordGridUI).note-columns-collection-changed} } } } 試しに、note-columns-collection-changedの 処理内容をコメントアウトしてみたところ、 右クリックメニューの表示が早くなりました。 今回のプロジェクトでどのような仕様でRecordGridを実装すべきか 一旦、フレームワーク作成者と相談してみます。 |
|||||
03-06-2012, 03:16 PM,
(This post was last modified: 03-06-2012, 03:30 PM by hokada.)
|
|||||
|
|||||
RE: RecordGridの右クリックメニューについて
なるほど。
まあ、RecordGridUI.note-columns-collection-changedメソッドは、すでに作成しているカラムなどの情報を全てクリアしてしまいますので、遅くなってしまいますね。 |
|||||
« Next Oldest | Next Newest »
|
Users browsing this thread:
1 Guest(s)
1 Guest(s)