ドラッグして、問題の上下動し、マウスを使用してリストビュー。(100ポイント)

在OnDragDrop事件中處理:
以下是デルファイ的例子

手順TForm1.ListBox1DragOver(送信者、出典:TObjectを; X、Y:整数;状態:TDragState; varが受け入れ:ブール);

始める
受け入れ:=ソースTLabelです。

終わり;

このOnDragDropイベントハンドラは、ドロップ動作を実装します。

手順TForm1.ListBox1DragDrop(送信者、出典:TObjectを; X、Y:整数);

始まり
、その後(出典TLabelである)場合(SenderがTListBoxコンポーネントです)と
始まり
TListBoxコンポーネントがそうであるように、送信者で
始まる
フォント:.Font =(TLabelとしてソース)。
カラー:.Color =(TLabelなど出所);
終わり;
終わり;
終わり;

 

ドラッグがTRUEに設定されている場合でも、
醜いマウスブラーになります
取り払うためにどのように?

 

以下は、ListBox1があり、ほぼ同じ、あなたはそれを見て参照している
複数のフォームレベルの変数をoldrect宣言する:; Trectを、プライベート以下のに追加することができます

手順TForm1.FormDragOver(送信者、出典:TObjectを ; X、Y: 整数;
状態:TDragState;受け入れVAR:ブール);
開始
操作でLISTBOXからドラッグ取得に受け入れ// FORM、FORMの外のスペースを残すために、ノート
ソースを= ListBox1がその後のIF
受け入れ:= trueに;
END;

手順TForm1.ListBox1EndDrag(送信者、ターゲット:TObjectを、X-、Y:整数);
開始
IF(目標<> NIL)及び(target.ClassName <> sender.ClassName)を
listbox1.Items.Delete(ListBox1.ItemIndex);
標的IF次いで、ゼロ=
listbox1.Canvas.DrawFocusRect(oldrect);
oldrect.Bottom:= 0; //ドラッグの完了後矩形変数空ドロップ
終了、

手順TForm1.ListBox1DragOver(送信者、出典:TObjectを、X-、Y:整数。
状態:TDragState;受け入れVAR:ブール値);
VARの
MyPos:TPoint;
開始
ソースは= ListBox1がその後のIF
受け入れ:; = trueに
:=のX; mypos.xを
mypos.y:= Y;
真のIF listbox1.ItemAtPos(MyPos、)< > -1その後、
開始 
// 'の排他的または'最後のフレームを除去することで、listbox1.Canvas.DrawFocusRect(oldrect)
(listbox1.ItemRect(listbox1.ItemAtPos(mypos、listbox1.Canvas.DrawFocusRect ))真の); // ビデオ上のボックス
oldrect:= listbox1.ItemRect(真)にlistbox1.ItemAtPos(MyPos、);
END;

END;

手順TForm1.ListBox1DragDrop(送信者、出典:TObjectを、X-、Y:整数);
VARの
P_move:TPoint;
開始
{} ITEM座標により得られる
P_move.x:= Xを、
p_move.y:= Y。

( - 1 ListBox1.ItemIndexは、<>)および(listbox1.ItemAtPos(trueにP_move、)<> - 1)その後、IF
//この1つはそれが最後の数置き換えることができ
listbox1.Items.Exchange(listbox1.itemindex、listbox1.ItemAtPosを(P_move、真)); //スワップITEM

//ドラッグし、その最後の画像フレームFOCUSを取り除きたい場合は、次の文が失敗したドロップ
IF listbox1.ItemAtPos(P_move、真の)= - 1、その後
listbox1.Canvas.DrawFocusRect( oldrect);

おすすめ

転載: www.cnblogs.com/jijm123/p/11106181.html