> Uzさんのプログラムについて、 > 以下の修正点を行いました。 > ・ルートをドラッグするとエラーが発生する > ⇒ エラートラップで逃げた (MouseMove) > ・ルートを子にドロップ等、あり得ない作業をした場合に > エラーが発生 ⇒ NodeをNothingにして、Exit Subするよ > うにし た。(Ole_DragAndDrop) > ・非常にまれに発生することがあるのですが、 > 選択が戻ることがあります。選択を何度も繰り返していると > 発生した。(Uzさんのサンプルに何も手をつけていない > 状態で起こった。) > > これは、青い反転表示されているものと実際に選択されている > 物が異なる時に発生するように見受けられます。 > まぁ殆ど発生しないので、いいかと思っています。
僕のサンプルはあくまでサンプルなので、余り細かいところは 気にしてません。 実際に使われるときは、ご自身で精度を上げてご利用ください。
> ところで、OLEドロップを使用したのは何故ですか? > 私は、TreeViewのドラッグドロップを使っていました。 > これらに違いはあるのでしょうか? OLE〜の方が新しい技術で、機能が増えてるので、 こっちでやっておいたほうが、いい気がします。
> そもそもOLEドロップというのが何なのか私はわかって > おりません。 OLEDataObject(だったかな?)を使ったD&Dで、クリップボード なんかでもこれを使ってます。 あらかじめデータを詰め込むのではなく、データの型を詰め込ん で、要求されたデータだけを転送して、無駄をなくすように使わ れたりします。 詳しくはOLEドラッグ&ドロップ関連のヘルプを見てください。
> もう一つ質問があります。 > > ドラッグアンドドロップ等のようなプログラムに通信等の > 割り込み処理を加えた場合、プロシージャの途中でも割り込み > の処理の方へ行ってしまいますでしょうか?(一つのプロシー > ジャを終了させてから割り込み処理へ行く等) やってみればわかるでしょう。 割り込みにもいろいろあります。 タイマーだったり、他のアプリだったり。 まぁ、D&Dは割り込みでも、キャンセルになるぐらいなので、 気にすること無いんじゃないの? ドラッグ中に[Esc]キーを押してみましょう。 キーボード割り込みによる、キャンセル。 ってのもあるんで、キャンセルには対応できるようにして おきましょう。
|