Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-09-2004
keglevich keglevich is offline
Registrado
 
Registrado: oct 2003
Posts: 9
Poder: 0
keglevich Va por buen camino
Mover un Bitmap con el ratón

¡Saludos a toda la peña!
A ver si alguien sabe como mover un bitmap con el ratón, es decir, hacer click sobre el bitmap y mientras esté pulsado moverlo por la pantalla sin parpadeos ni cosas raras. Lo de drag&drop no me gusta porque necesito que el bitmap se vea mientras lo muevo y que pueda solapar a otros bitmaps, cosa que con el drag no puedo hacer...lo dicho, gracias de antemano

Talegor!
Responder Con Cita
  #2  
Antiguo 14-09-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Hace tiempo salió una consulta similar en los foros, así que que adjunto el código a ver si te sirve. Crea un Form con dos TImage; Si te fijas, utiliza las mismas tres rutinas de gestion del ratón para todos los TImage. No hace falta usarlo así exactamente, pero te puede dar ideas.
El código de la Unit quedaría así:

Código Delphi [-]
unit Unit1_Drag_Controls;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Buttons, RxGIF, jpeg;
type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
    Capturing:Boolean;
    MouseDownSpot:TPoint;
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
 

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Capturing then begin
    TImage(Sender).Left := TImage(Sender).Left - (MouseDownSpot.x - x);
    TImage(Sender).Top := TImage(Sender).Top - (MouseDownSpot.y - y);
  end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Capturing then begin
    ReleaseCapture;
    Capturing := false;
    TImage(Sender).Left := TImage(Sender).Left - (MouseDownSpot.x - x);
    TImage(Sender).Top := TImage(Sender).Top - (MouseDownSpot.y - y);
  end;
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
//  if ssCtrl in Shift then begin
    Capturing := true;
    MouseDownSpot.X := x;
    MouseDownSpot.Y := Y;
//  end;
end;
end.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 14-09-2004
keglevich keglevich is offline
Registrado
 
Registrado: oct 2003
Posts: 9
Poder: 0
keglevich Va por buen camino
PerfeSto

¡¡Muchas gracias Neftalí, funciona perfectamente!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 22:06:06.


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
Copyright 1996-2007 Club Delphi