这是我实现你的程序功能的方法: var s_item:String; s_index:Integer;procedure TForm1.Button1Click(Sender: TObject); begin CheckListBox1.Cursor:=crdrag; end;procedure TForm1.CheckListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin s_item:=checklistbox1.Items[checklistbox1.itemindex]; s_index:=checklistbox1.ItemIndex; CheckListBox1.BeginDrag(True); end;procedure TForm1.CheckListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin if Source=CheckListBox1 then begin Accept:=True; CheckListBox1.ItemIndex:=CheckListBox1.ItemAtPos(Point(x,y),True); end; end;procedure TForm1.CheckListBox1EndDrag(Sender, Target: TObject; X, Y: Integer); begin if checklistbox1.itemindex <> s_index then begin checklistbox1.Items.Delete(s_index); checklistbox1.Items.Insert(checklistbox1.ItemIndex+1,s_item); end; end;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
checklistbox1.Cursor:=crdrag;
s_item:=checklistbox1.Items[checklistbox1.itemindex];
s_index:=checklistbox1.ItemIndex;end;procedure TForm1.CheckListBox1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if checklistbox1.itemindex <> s_index then
begin
checklistbox1.Items.Delete(s_index);
checklistbox1.Items.Insert(checklistbox1.ItemIndex+1,s_item);
checklistbox1.Cursor:=crdefault;
end;
end;
var
s_item:String;
s_index:Integer;procedure TForm1.Button1Click(Sender: TObject);
begin
CheckListBox1.Cursor:=crdrag;
end;procedure TForm1.CheckListBox1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
s_item:=checklistbox1.Items[checklistbox1.itemindex];
s_index:=checklistbox1.ItemIndex;
CheckListBox1.BeginDrag(True);
end;procedure TForm1.CheckListBox1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
if Source=CheckListBox1 then
begin
Accept:=True;
CheckListBox1.ItemIndex:=CheckListBox1.ItemAtPos(Point(x,y),True);
end;
end;procedure TForm1.CheckListBox1EndDrag(Sender, Target: TObject; X,
Y: Integer);
begin
if checklistbox1.itemindex <> s_index then
begin
checklistbox1.Items.Delete(s_index);
checklistbox1.Items.Insert(checklistbox1.ItemIndex+1,s_item);
end;
end;