Ver Mensaje Individual
  #1  
Antiguo 09-08-2011
Panasys Panasys is offline
Miembro
 
Registrado: ago 2007
Posts: 88
Reputación: 17
Panasys Va por buen camino
Arrastrar y Soltar

Hola a todos, he leido varios hilos de Drag & Drop y se ve algo complejo, he buscado en Gugle y he encontrado algo bastante sencillo.

Paso a contar, tengo una aplicacion que el usuario va a configurar a su necesidad ciertas imagenes en un panel contenedor colocandolas en la posicion que mejor le queden a su configuracion.

Para eso encontre este codigo que con una imagen anda de maravillas:


Código Delphi [-]
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if Source is TImage then
 begin
    TImage(Source).Left := X;
    TImage(Source).Top := Y;
 end;
 
end;

procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := (Source is TImage) ;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if ssCtrl in Shift then Image1.BeginDrag(True) ;
end;

end.


Bien, pense, si esto funciona tambien podria funcionar esto: (le agregue un TPanel) y con el TPanel la imagen no funciona y el panel se mueve de maravillas !

Código Delphi [-]
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if Source is TImage then
 begin
    TImage(Source).Left := X;
    TImage(Source).Top := Y;
 end;
 
 if Source is TPanel then
 begin
    TPanel(Source).Left := X;
    TPanel(Source).Top := Y;
 end;
end;

procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := (Source is TImage) ;
  Accept := (Source is TPanel) ;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if ssCtrl in Shift then Image1.BeginDrag(True) ;
end;

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if ssCtrl in Shift then Panel1.BeginDrag(True) ;
end;

end.


Pues que no estoy viendo para poder mover el panel y la imagen en el mismo form o dentro de un mismo panel?

Es mas necesito mover como 8 imagenes y por lo menos 4 paneles pero por que no lo puedo hacer con varios componentes?

"Ya verifique el DragMode, con solo la imagen o solo el panel funciona ok, pero con estos dos componentes solo funciona el panel"

Alguna idea? Gracias de antemano y un abrazo.

Javier
Responder Con Cita