TreeViewとListViewの使用方法

 

NodeとListItemの追加
TreeViewとListViewの関連付け
テキストファイルへの保存と読込
ドラッグ&ドロップ
ドラッグ&ドロップ 3/4
3/4

TreeViewのOnDragDropイベントで次のように記述します。


//ドロップ処理
//ListView1からItemをTreeView1にドロップした時の処理
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  i: Integer;
  loop: Boolean;
  prev_section, next_section, key, value: String;
  pt: TPoint;
begin
  //ドロップしたのが、どのNodeかを特定
  next_section := TreeView1.GetNodeAt(X, Y).Text;

  if Source is TListView then
  begin
    i := 0;
    loop := True;
    //元々選択されていたNodeを特定
    prev_section := (Sender as TTreeView).Selected.Text;

    if next_section <> prev_section then
    begin
      //以下のループでドラッグされた(選択されていた)ListView1のItemを順番に
      //調べて、ドラッグされたItemはドラッグ先のNodeへ変更
      while (i < ListView1.Items.Count) do
      begin
        if ListView1.Items[i].Selected then
        begin
          key := ListView1.Items[i].Caption;
          value := ListView1.Items[i].SubItems.Strings[0];
          FListIni.DeleteKey(prev_section, key);
          FListIni.WriteString(next_section, key, value);
          ListView1.Items[i].Delete;
          dec(i, 1);
        end;
        inc(i, 1);
      end;
    end;
  end;
end;

 
3/4