Supongo que habrá mejores formas de hacerlo, pero puedes utilizar las propiedades y eventos relacionadas con arrastrar y soltar (propiedades
Drag... y
OnDrag...).
Aquí te pongo un ejemplo muy sencillito:
Código Delphi
[-]
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure FormDragDrop(Sender, Source: TObject; X, Y: Integer);
end;
implementation
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if Source = Edit1 then
Accept := True;
end;
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if Source = Edit1 then
with Edit1 do
begin
Left := X;
Top := Y;
end;
end;
(Para que el ejemplo funcione tienes que poner la propiedad
DragMode del componente
Edit1 a
dmAutomatic).
Saludos!
P.D: Se me había pasado que tambien preguntabas el tema de "agregar", para ello tendrías que crear el componente en tiempo de ejecución (lo único es que tendrías que decidir cuando "crearlo").