treeviewでドラッグ中のテキストが表示されない

解決


みみ  2006-02-20 17:16:09  No: 20120  IP: 192.*.*.*

お世話になります。

treeviewで、ドラッグ中にNODEのテキストを表示したいのですが、
いくつかtreeviewがあるうち、表示されない(マウスカーソルと□だけしか表示されない)treeviewがあります。

treeviewで、ドラッグ中にNODEのテキストが表示されない条件というのはあるのでしょうか。
今、テキスト表示されているtreeviewとされていないもののプロパティを比べているのですが、アイコン設定している/していないというのくらいしか違いがないように見えます。

関係ありそうなプロパティの値です。
DragCursor:crDrag
DragKind:dkDrag
DragMode:dmAutomatic
showHint:true

編集 削除
違いが分かる貴女に…  2006-02-21 09:00:55  No: 20121  IP: 192.*.*.*

>アイコン設定している/していないというのくらいしか違いがないように見えます。

確かに Imagesプロパティを「設定する/しない」だけでドラッグ中の表示が変わりますね。
Imageプロパティが設定されている場合だけ、ドラッグイメージに「アイコンとNodeテキストの画像」が追加される仕様なのか…
そこで、裏技(苦肉の策?)大発表!?。

procedure TForm1.TreeView1StartDrag(Sender: TObject; var DragObject: TDragObject);
begin
  ...................
  with TTreeview(Sender) do begin
    Items.BeginUpdate;
    Images := ImageListDummy;   // 空のImageList
  end;
end;

procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
  with TTreeview(Sender) do
  if Assigned(Images) then begin
    Images := nil;
    Items.EndUpdate;
  end;
  ..................
end;

編集 削除
みみ  2006-02-21 15:59:32  No: 20122  IP: 192.*.*.*

すごいです!
動作しました。ありがとうございます。

理屈はわかったようなわかっていないような。

ドラッグ開始時にImageListを割り当てて、
ドラッグ中はそのまま、ドロップする時に解除ってことかしら。

ドラッグ中は、ドラッグしているもの以外の描画が入らないってこと?

編集 削除
みみ  2006-02-22 13:28:21  No: 20123  IP: 192.*.*.*

解決忘れです。

編集 削除