掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
グリッド間のドラッグ&ドロップ (ID:11329)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
あるグリッドの列を別のグリッドの列へドロップ&ドロップで設定する処理を作成しましたが、クリックした同時にドラッグをしても、ドラッグ処理がされず 一度、列をクリック選択した後に、もう一度、クリックした同時にドラッグすると 上手く、ドラッグされます。 2度クリック処理をさせず、一回のクリックでドラッグしドロップさせたいです。 以下のやり方でやっています。 グリッドをクリックした時に、DragModeを制御しドラッグの動作をさせています。 デザイン時にDragModeをdmAutomaticに設定すると1行目の1列目しか選択 できない状態になるのでそれを回避する為に行っています。 クリックイベントでDragModeを切り替えるやり方は良くないでしょうか? procedure TFrmA.StringGrid1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := true; end; procedure TFrmA.StringGrid1DragDrop(Sender, Source: TObject; X, Y: Integer); var acol,arow:integer; begin 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; StrGrdYoso4.DragMode:=dmManual; end; procedure TFrmA.StrGrdYoso4Click(Sender: TObject); begin StrGrdYoso4.DragMode:=dmAutomatic; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.