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

解決


みみ  2006-02-21 02:16:09  No: 20120  IP: [192.*.*.*]

お世話になります。

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

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

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

編集    削除
違いが分かる貴女に…  2006-02-21 18: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-22 00:59:32  No: 20122  IP: [192.*.*.*]

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

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

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

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

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

解決忘れです。

編集    削除