Con estos 3 procedures, solo te falta adaptarlos a tus necesidades.
Tienes que ponerlos en esos eventos:
Código Delphi
[-]
procedure TForm1.QrDBEan1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var i: integer; comp:string;
begin
guardado := false;
Screen.Cursor := crSizeAll;
ComboBox1.ItemIndex := combobox1.Items.IndexOf((Sender as Tcomponent).name);
moving:=true;
lastx:=x;
lasty:=y;
comp := copy(ComboBox1.Text,0,5);
if (comp = 'texto') then
begin
Tcaption.Text := (Sender as Tlabel).Caption;
if ((Sender as Tlabel).Alignment = taLeftJustify) then Calign.ItemIndex := 0;
if ((Sender as Tlabel).Alignment = taRightJustify) then Calign.ItemIndex := 1;
if ((Sender as Tlabel).Alignment = tacenter) then Calign.ItemIndex := 2;
if ((sender as tlabel).WordWrap = true) then
Checksalto.Checked := true
else
Checksalto.Checked := false;
Rxgrados.Value := ((sender) as tlabel).Tag;
end
else
Tcaption.Text := '';
if (comp = 'shape') then
begin
if (sender as tshape).Shape = strectangle then ComboBox2.ItemIndex := 0;
if (sender as tshape).Shape = stcircle then ComboBox2.ItemIndex := 1;
if (sender as tshape).Pen.Style = pssolid then ComboBox3.ItemIndex := 0;
if (sender as tshape).Pen.Style = psdot then ComboBox3.ItemIndex := 1;
RxSpinEdit1.Value := (sender as tshape).Pen.Width;
end;
end;
procedure TForm1.QrDBEan1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var i: integer; comp: string;
begin
comp := copy(ComboBox1.Text,0,5);
for i:=0 to (form1.ComponentCount - 1) do
if form1.Components[i].Name = ComboBox1.Text then
begin
if ((moving = true) and not (SSCtrl in Shift)) then begin
(form1.Components[i] as tcontrol).left:=(form1.Components[i] as Tcontrol).left+(x-lastx);
(form1.Components[i] as tcontrol).top:=(form1.Components[i] as Tcontrol).top+(y-lasty);
end;
end;
end;
procedure TForm1.QrDBEan1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var i: integer; comp: string;
begin
comp := copy(ComboBox1.Text,0,5);
for i:=0 to (form1.ComponentCount - 1) do
if form1.Components[i].Name = ComboBox1.Text then
begin
if ((moving = true)) then
begin
if (SSCtrl in Shift) then
begin
(form1.Components[i] as tcontrol).width:=(form1.Components[i] as Tcontrol).width+(x-lastx);
(form1.Components[i] as tcontrol).height:=(form1.Components[i] as Tcontrol).height+(y-lasty);
end
else
begin
end;
end;
end;
moving:=false;
Screen.Cursor := crArrow;
end;