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

解決


みみ  2006-02-21 02:16:09  No: 20120

お世話になります。

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

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

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


違いが分かる貴女に…  2006-02-21 18:00:55  No: 20121

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

確かに 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

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

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

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

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


みみ  2006-02-22 22:28:21  No: 20123

解決忘れです。


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

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






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