掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TreeviewのD&Dについて (ID:41660)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
[CTRL] 押しながらで COPY 押してないと MOVE Selected と DropTarget が同じ場合 同階層 違う場合 Child にする コピー先に同名があれば ~1 ~2 と付けて行く procedure TForm3.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer); var I,J: Integer; B: Boolean; begin if TreeView1.DropTarget = TreeView1.Selected then begin //[CTRL] が押されている場合のみ if (GetAsyncKeyState(VK_CONTROL) and $8000) <> 0 then begin J := 1; while J <> 0 do begin B := True; for I := 0 to TreeView1.DropTarget.Owner.Count - 1 do begin if TreeView1.DropTarget.Owner.Item[I].Text = TreeView1.Selected.Text + '~' + IntToStr(J) then B := False; end; if B = False then begin Inc(J); end else begin TreeView1.Items.Add(TreeView1.DropTarget,TreeView1.Selected.Text + '~'+IntToStr(J)); J := 0; end; end; end; end else begin //同名があるか確認 B := True; for I := 0 to TreeView1.DropTarget.Count - 1 do begin if TreeView1.DropTarget.Item[I].Text = TreeView1.Selected.Text then B := False; end; //同名が無い場合 if B = True then begin TreeView1.Items.AddChild(TreeView1.DropTarget,TreeView1.Selected.Text); end else begin //同名がある場合 J := 1; while J <> 0 do begin B := True; for I := 0 to TreeView1.DropTarget.Count - 1 do begin if TreeView1.DropTarget.Item[I].Text = TreeView1.Selected.Text + '~' + IntToStr(J) then B := False; end; if B = False then begin Inc(J); end else begin TreeView1.Items.AddChild(TreeView1.DropTarget,TreeView1.Selected.Text + '~' + IntToStr(J)); J := 0; end; end; end; //MOVEの場合移動元を削除 if (GetAsyncKeyState(VK_CONTROL) and $8000) = 0 then begin TreeView1.Selected.Delete; end; end; end; procedure TForm3.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := True; if (GetAsyncKeyState(VK_CONTROL) and $8000) = 0 then begin TreeView1.DragCursor := crDefault; end else begin TreeView1.DragCursor := crDrag; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.