他ウインドウのインスタンスからAssignするには

解決


るるとん@K  2004-04-24 04:17:51  No: 8553

SDIテキストエディタにテンプレート挿入機能を実装しています。
他のウインドウで、テンプレートが編集されても対応できるよう、
起動時のみでなくアプリケーションがアクティブになった時もテンプレートを読み込みます。
読み込み処理では、TTreeViewにアイテムをAddしていき、非常に時間がかかります。
ためしたところ、TreeViewのItemsをAssignさせれば非常に高速です。
他ウインドウにあるTreeViewのItemsを参照するにはどうしたらよいでしょうか?


つっか  2004-04-24 04:43:16  No: 8554

テンプレートってなんですか? Delphi5には無いですけど。
Delphi6以降にはあるんですか?


るるとん@K  URL  2004-04-24 05:02:17  No: 8555

私の作っているテキストエディタの機能です


つっか  2004-04-24 05:22:49  No: 8556

あっ、そうですか。それじゃ誰にも分かりませんね。


るるとん@K  2004-04-24 05:25:48  No: 8557

いぇいぇ、だから、タイトルからも分かるように、TreeViewのItemsを他のウインドウからAssignする方法はないかと?


つっか  2004-04-24 05:56:01  No: 8558

> TreeViewのItemsを他のウインドウからAssignする方法はないかと?

他のウィンドウって、ほかのプロセスからってことですか?
それなら Assign する方法はありません。


るるとん@K  2004-04-24 06:04:04  No: 8559

そうですか


るるとん@K  2004-04-24 06:06:46  No: 8560

他のプロセスですが同じ実行ファイルです。
無理ですか?


るるとん@K  2004-04-24 06:12:18  No: 8561

では複数のプロセスで同じTTreeNodesを使用する事はできませんか?


つっか  2004-04-24 07:00:46  No: 8562

> 他のプロセスですが同じ実行ファイルです。

はい、メモリ空間はプロセス毎に割り当てられますので、同じ exe ファイルの
違うプロセスどうしでは、VCL のプロパティーにアクセスできません。

> では複数のプロセスで同じTTreeNodesを使用する事はできませんか?

上と同じ理由で、できません。VCL は、言語上のライブラリであって、Windows は
そのことを知りません。したがって、Delphiアプリであっても OS を通して異なる
プロセス間のあいだで、クラスのインスタンスを共有することはできません。

Windows のコモンコントロールとして見えるだけです。


にしの  2004-04-24 07:24:41  No: 8563

> 読み込み処理では、TTreeViewにアイテムをAddしていき、非常に時間がかかります。

BeginUpdate, EndUpdateしていますか?
ほかのプロセスの場合、TREEVIEW_*系のAPI(実態はメッセージ)で1アイテムずつ取得できますが、やはり1つずつ読み込むのと同じくらいかかると思います。
BeginUpdate,EndUpdateをしていないと、1アイテムをAddするたびに描画が更新されるため遅いです。


るるとん@K  2004-04-24 08:05:20  No: 8564

beginUpdateとかしてませんでした


るるとん@K  2004-04-24 08:19:50  No: 8565

凄く早い


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加