Карта сайтаСсылкиКонтакты

Перетаскивание пунктов TreeView

PDF Печать
Статьи

Для того, чтобы позволить перетаскивание пунктов TreeView, нужно установить свойство DragMode в dmAutomatic. А в событии OnDragOver записать следующее:


procedure TForm1.TreeView1DragOver(
    Sender, Source: TObject; X, Y: Integer;
    State: TDragState; var Accept: Boolean);
var
    AnItem: TTreeNode;
    AttachMode: TNodeAttachMode;
    HT: THitTests;
 begin
    if TreeView1.Selected = nil then Exit;
    HT := TreeView1.GetHitTestInfoAt(X, Y) ;
    AnItem := TreeView1.GetNodeAt(X, Y) ;
    if (HT -
      [htOnItem, htOnIcon, htNowhere, htOnIndent]
 <> HT) then
    begin
      if (htOnItem in HT) or
         (htOnIcon in HT) then
          AttachMode := naAddChild
      else if htNowhere in HT then
 AttachMode := naAdd
      else if htOnIndent in HT then
 AttachMode := naInsert;
      TreeView1.Selected.
 MoveTo(AnItem, AttachMode) ;
    end;
 end;

 

Добавить комментарий


Защитный код
Обновить