掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
グリッド間のドラッグ&ドロップ (ID:11330)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> クリックイベントでDragModeを切り替えるやり方は良くないでしょうか? はい、DragMode は dmManual のままにしておき、BeginDrag() と EndDrag() を 使います。BeginDrag() は OnMouseDown にするといいです。 procedure TForm1.StringGrid1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin if Source = StrGrdYoso4 then Accept := true; end; procedure TForm1.StringGrid1DragDrop(Sender, Source: TObject; X, Y: Integer); var acol,arow:integer; begin if Source <> StrGrdYoso4 then exit; StrGrdYoso4.EndDrag(true); StringGrid1.mousetocell(x, y, acol, arow); if (acol < 0) or (arow < 0) then // scroll barや最後の行より下のところにdropしたときは何もしない begin StringGrid1.DragCursor := crNoDrop; exit; end; if (Sender = StringGrid1) then // drag開始時のcellの内容をdropしたcellにcopy begin StringGrid1.mousetocell(x, y, acol, arow); StringGrid1.cells[acol, arow] := StrGrdYoso4.cells[StrGrdYoso4.Col, StrGrdYoso4.Row]; StringGrid1.repaint; end; end; procedure TForm1.StrGrdYoso4MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin StrGrdYoso4.BeginDrag(false,2); end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.