Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Como puedo arrastrar una imagen y soltarla dentro de otra (https://www.clubdelphi.com/foros/showthread.php?t=14179)

maravert 12-09-2004 01:49:59

Como puedo arrastrar una imagen y soltarla dentro de otra
 
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

Como colocar una imagen dentro de otra (Drag Drop)
 
Hola... gracias por tu apoyo, fijate que no sigue saliendo, la imagen no se mueve correctamente.


Aquí les muestro el codigo.


Código Delphi [-]
 
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


La franja horaria es GMT +2. Ahora son las 15:51:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi