PDA

Ver la Versión Completa : Como puedo arrastrar una imagen y soltarla dentro de otra


maravert
12-09-2004, 01:49:59
Hola, que tal,

Alguien podria decirme como puedo arrastrar (drag) una imagen (Timage) y ponerla dentro de otra imagen (Timage).. se los agradeceré enormemente.

Estoy haciendo esto pero la imagen que arrastro al colocarla sobre la otra, la primera no se coloca simplemente desaparece.

Ojala alguien pueda ayudarme.

Gracias por todo.


Alejandro Maraverrt.

roman
12-09-2004, 02:15:45
Me parece que tiene que ver con el orden en que colocaste las imágenes durante el diseño. La imagen que se arrastra la colocaste antes con lo que en un orden vertical queda por debajo de la otra.

Puedes solucionarlo bien cambiando el orden en que colocas las imagenes o bien poniendo

ImagenQueSeArrastra.BringToFront

al momento de soltarla.

// Saludos

maravert
12-09-2004, 16:43:55
Hola... gracias por tu apoyo, fijate que no sigue saliendo, la imagen no se mueve correctamente.


Aquí les muestro el codigo.



unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, jpeg;
type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
procedure FormDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image2DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure Image2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
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

Image1.BeginDrag(True);
end;
procedure TForm1.Image2DragDrop(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.Image2DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := (Source is TImage);
end;
end.


Espero me puedan auxuliar.

Gracias de antemano

roman
12-09-2004, 17:27:28
Estás moviendo la imagen 1, que a juzgar por la declaración de la clase del formulario, parece que se colocó antes que la otra y por eso queda debajo. Tampoco veo el BringToFront.

Por otro lado te puedes ahorrar el BeginDrag poniendo la propiedad DragMode de Image1 en dmAutomatic.

// Saludos