Hola todos.
La cuestión que hoy se me plantea es la siguiente:
Utilizo un TImage como contenedor de otro TImage que creo de forma dinámica.
La idea, es que este nuevo TImage creado de forma dinamica pueda hacérsele Drag and Drop dentro del TImage que hace las veces de contenedor.
Todo me funciona, es decir, crear dinámicamente el TImage, que este se vea dentro del contenedor, y que incluso, cargue la imágen.
Pero a la hora de dar las pautas para que se pueda hacer drag and drop, no sé como manejar los eventos de un objeto que se crea en tiempo de ejecución.
Muestro el código de todo lo que hago...
//A partir de un Listbox, creo de forma dinámica el TImage, que a partir de aquí, se llamará "NewPedal"
Código:
procedure TForm1.LstModelDblClick(Sender: TObject);
var
imgPath: string;
NewPedal: TImage;
begin
if LstModel.Selected [0] then
imgPath := ExtractFilePath(ParamStr(0)) + 'Rec\Boss\Boss AC-3.jpg';
NewPedal := TImage.Create(Self);
with NewPedal do begin
Parent := Self;
SetBounds(30, 200, 800, 800);
Picture.LoadFromFile(imgPath);
end;
end;
Como el contenedor del nuevo TImage, es otro TImage, haciendo pruebas, vi viable asignar los siguientes eventos a este TImage (El contenedor)
Código:
procedure TForm1.ImgGroundDragDrop(Sender, Source: TObject; X, Y: Integer);
//El tema del DragDrop
begin
if Source is TImage then
begin
TImage(Source).Left := X;
TImage(Source).Top := Y;
end;
end;
procedure TForm1.ImgGroundDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
//Más del DragDrop sobre el Imageground
begin
Accept := (Source is TImage);
end;
Muy bien, ahora ha llegado el momento de asignar el evento Mouse Down, es decir, quiero que cuando se de Click Izquierdo al Mouse, presionando sobre el TImage creado dinámicamente, se pueda dentro del contenedor arrastrar y soltar a petción... Y aquií esta mi cuello de botella:
Que hice: Intenté hacerlo igual a como lo haría con un TIMge ya creado, pero por todos lados el compilador (Delphi 2010) me tira error. Hice esto, y no tira error, pero igual nada pasa:
Código:
procedure TForm1.NewPedalMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
NewPedal: TImage;
begin
if Button = mbLeft then NewPedal.BeginDrag(True) ;
end;
Agradecería mucho si alguien me puede orientar.
Un gran saludo, y mil gracias,
Julián