お世話になります。
treeviewで、ドラッグ中にNODEのテキストを表示したいのですが、
いくつかtreeviewがあるうち、表示されない(マウスカーソルと□だけしか表示されない)treeviewがあります。
treeviewで、ドラッグ中にNODEのテキストが表示されない条件というのはあるのでしょうか。
今、テキスト表示されているtreeviewとされていないもののプロパティを比べているのですが、アイコン設定している/していないというのくらいしか違いがないように見えます。
関係ありそうなプロパティの値です。
DragCursor:crDrag
DragKind:dkDrag
DragMode:dmAutomatic
showHint:true
>アイコン設定している/していないというのくらいしか違いがないように見えます。
確かに 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;
すごいです!
動作しました。ありがとうございます。
理屈はわかったようなわかっていないような。
ドラッグ開始時にImageListを割り当てて、
ドラッグ中はそのまま、ドロップする時に解除ってことかしら。
ドラッグ中は、ドラッグしているもの以外の描画が入らないってこと?
解決忘れです。
ツイート | ![]() |