SDIテキストエディタにテンプレート挿入機能を実装しています。
他のウインドウで、テンプレートが編集されても対応できるよう、
起動時のみでなくアプリケーションがアクティブになった時もテンプレートを読み込みます。
読み込み処理では、TTreeViewにアイテムをAddしていき、非常に時間がかかります。
ためしたところ、TreeViewのItemsをAssignさせれば非常に高速です。
他ウインドウにあるTreeViewのItemsを参照するにはどうしたらよいでしょうか?
テンプレートってなんですか? Delphi5には無いですけど。
Delphi6以降にはあるんですか?
私の作っているテキストエディタの機能です
編集 削除あっ、そうですか。それじゃ誰にも分かりませんね。
編集 削除いぇいぇ、だから、タイトルからも分かるように、TreeViewのItemsを他のウインドウからAssignする方法はないかと?
編集 削除> TreeViewのItemsを他のウインドウからAssignする方法はないかと?
他のウィンドウって、ほかのプロセスからってことですか?
それなら Assign する方法はありません。
そうですか
編集 削除他のプロセスですが同じ実行ファイルです。
無理ですか?
では複数のプロセスで同じTTreeNodesを使用する事はできませんか?
編集 削除> 他のプロセスですが同じ実行ファイルです。
はい、メモリ空間はプロセス毎に割り当てられますので、同じ exe ファイルの
違うプロセスどうしでは、VCL のプロパティーにアクセスできません。
> では複数のプロセスで同じTTreeNodesを使用する事はできませんか?
上と同じ理由で、できません。VCL は、言語上のライブラリであって、Windows は
そのことを知りません。したがって、Delphiアプリであっても OS を通して異なる
プロセス間のあいだで、クラスのインスタンスを共有することはできません。
Windows のコモンコントロールとして見えるだけです。
> 読み込み処理では、TTreeViewにアイテムをAddしていき、非常に時間がかかります。
BeginUpdate, EndUpdateしていますか?
ほかのプロセスの場合、TREEVIEW_*系のAPI(実態はメッセージ)で1アイテムずつ取得できますが、やはり1つずつ読み込むのと同じくらいかかると思います。
BeginUpdate,EndUpdateをしていないと、1アイテムをAddするたびに描画が更新されるため遅いです。
beginUpdateとかしてませんでした
編集 削除凄く早い
編集 削除