从richedit拖文本到edit,其他的都一样
procedure TForm1.Edit1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if Source is TRichedit then
    Accept:=true
  else
    Accept:=false;
end;procedure TForm1.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  if Source is TRichedit then
    Edit1.Text :=s;
end;procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button=mbLeft then
  begin
    if RichEdit1.SelLength >0 then
    begin
      s:=RichEdit1.seltext;
      RichEdit1.BeginDrag(false);
    end;
  end;
end;procedure TForm1.RichEdit1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
  if target<> nil then
    RichEdit1.Update ;
end;