私は見つけられませんでした2つのノードの間のディバイダを有効にするオプション、私は自分でそれを描く必要があると思う。
これを行うには、CDIS_DROPHILITED
アイテムの状態でNM_CUSTOMDRAW
通知を使用する必要があると思います。しかし、私はこれをキャッチすることはできません。どうして?
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
Unit2, Vcl.ComCtrls;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
procedure TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
var PaintImages, DefaultDraw: Boolean);
procedure TreeView1Changing(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
private
procedure WMNotify(var Msg: TMessage); message WM_NOTIFY;
end;
var
Form1: TForm1;
implementation
uses
CommCtrl;
{$R *.dfm}
procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
var PaintImages, DefaultDraw: Boolean);
begin
if (cdsDropHilited in State) then
Write;
end;
procedure TForm1.TreeView1Changing(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
begin
AllowChange := Node <> TreeView1.Items[1];
end;
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := True;
GetComCtlVersion();
end;
procedure TForm1.WMNotify(var Msg: TMessage);
begin
case (PNMHdr(Msg.LParam)^.code) of
NM_CUSTOMDRAW:
if (PNMTVCustomDraw(Msg.LParam)^.nmcd.uItemState and CDIS_NEARHOT <> 0) then
Write;
end;
inherited;
end;
end.
TreeView1AdvancedCustomDrawItem()
もWMNotify()
Write
文を達するどちらも。
提案がありますか? &ドロップ機能を実装しているときに、ノードディバイダを描画するにはどうすればよいですか?私はマウスがトップ以下の上にあるとき、あなたはデバイダあなただけ描かれていることに興味があることが分かりますWindows 7のエクスプローラがそのツリーノードを描画する方法をよく見ると
外部画像ホストの代わりに画像にStackOverflowの組み込み機能を使用してください。 –
これを行う代わりに、[VirtualTreeView](http://www.jam-software.de/virtual-treeview/)を参考にしてください。 –
@BrandonStaggs「申し訳ありませんが、リクエストされたページは現在利用できないか、存在しません」というメッセージを投稿する前にURLを確認してください。 – Sami