• 締切済み

delphiにてみたび、ノードの間隔

お世話になっております。 みたび(いつまで続くのか?)TreeViewについてです。 ツリーの項目をドラッグドロップで順番入れ替えたりできるようにしている最中です。 とりあえず簡単な移動は何とかできたのですが、そのテストをしている最中にはたと 気づきました。フォルダをつかんでフォルダの列の中に 移動させようとすると、フォルダの中に入ってしまいます。 で、そうならないように、つまりあるフォルダのひとつ上のノードにもうひとつの フォルダを移動させたいのです。 そこで、ツリーのノードとノードの間を取得すればできるのではないかと思ったのですが、その取得方法 (なのか、それともツリーのノード同士の間隔を広げる方法なのか?なのですが) まだ見付けられずにいます。 どなたかdelphi使いの先輩がた、教えてください。よろしくお願いいたします。

みんなの回答

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

こんにちは。 GetHitTestInfoAtでどの状態か調べて、naAddChild、naAdd、naInsertを分岐します。 procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer); var Mode: TNodeAttachMode; Hit : THitTests; begin  Mode := naInsert;  Hit := TreeView1.GetHitTestInfoAt(x,y);  if htOnItem in Hit then Mode := naAddChild  else if htNowhere in Hit then Mode := naAdd  else if [htOnIndent,htOnButton] >= Hit then Mode := naInsert; TreeView1.Selected.MoveTo(TreeView1.GetNodeAt(x,y),Mode); end; アイテム上でドロップすると、子になります。

yo-ya
質問者

お礼

ありがとうございました。 要は選択したノード以下に作成されなければ いいので、上の記述を参考に考えてみます。

関連するQ&A