Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Arrastrar y Soltar!!! (https://www.clubdelphi.com/foros/showthread.php?t=15385)

chechu 21-10-2004 17:43:38

Arrastrar y Soltar!!!
 
hola a todos! espero que puedan ayudarme con una gran duda que tengo , estoy haciendo una aplicacion en la cual ,al estilo de Paint quisiera arrastrar los componentes a mi area de aplicacion y que estos se arrastren de modo que sea una copia la que me lleve y quede el componente eligido en el mismo lugar.......¿me explico?, mi area de trabajo es un PageControl que crea las tab en forma dinamica, las cuales cada una es contenedora de un frame el cual sera el que me de el permiso de aterrizaje.........
Soy novata en delphi y llevo mucho tiempo averiguando como hacer esto ¡NO ENCUENTRO COMO! por favor ayuda...Desde ya mil gracias!!!

roman 21-10-2004 17:59:01

No entiendo lo que dices del Paint. Si te refieres al programa de dibujo que se incluye en Windows pues no veo nada ahí que pueda arrastrarse.

En todo caso, para arrastrar componentes durante la ejecución básicamente puedes hacer esto:

1. Pon la propiedad DragMode de la componente que se arrastra en dmAutomatic.

2. En la componente de "atterizaje" debes manejar los eventos OnDragOver y OnDragDrop. En OnDragOver usas el parámetro Source para asegurarte que el objeto que se está arrastrando sobre ella es la componente que quieres y con base en ello asignas el valor del parámetro Accept (true si aceptas que puede soltarse ahí el objeto, false en caso contrario).

En el evento OnDragDrop haces lo que tengas que hacer cuando se suelte el objeto. Nuevamente el parámetro Source te indica cuál fue este objeto. Los parámetros X, Y te dan las coordenadas donde se "suelta" el objeto. Entrecomillo "suelta" porque tú misma debes hacer la traslación del objeto asignando las propiedades Left y Top y posiblemente asignando a la propiedad Parent el objeto sobre el cual soltaste la componente.

// Saludos

chechu 21-10-2004 18:19:49

Ya se me explique mal....
 
:( Si es Paint el de windows , se que no se arrastra nada lo que pasa es que quiero trabajar con ese mismo estilo, elegir un componente y llevarlo a mi area de trabajo solo que yo quiero arrastrarlos.... ¡Como lo hace delphi con los componentes ! los arrastro y queda una copia en ese lugar....
Ahora como los frame se crean en tiempo de ejecucion como manejo el evento OnDrawover ? Muchas gracias por la ayuda Roman...

roman 21-10-2004 18:50:48

Cita:

Empezado por chechu
¡Como lo hace delphi con los componentes ! los arrastro y queda una copia en ese lugar....

Entonces la analogía tiene muy poco que ver con Paint y mucho con el IDE de Delphi ;)


Cita:

Empezado por chechu
Ahora como los frame se crean en tiempo de ejecucion como manejo el evento OnDrawover ?

En este caso debes declarar tú misma el método que maneja el evento:

Código Delphi [-]
type
  TForm1 = class(TForm)
  private
    procedure DragOver(
      Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
  end;

y asignarlo al momento de crear el frame:

Código Delphi [-]
Frame.OnDragOver := DragOver;

y lo mismo haces con el evento DragDrop.

// Saludos

chechu 21-10-2004 19:53:56

Una ultima ayudita.........
 
:confused: Gracias por la ayuda pero......(como aclare soy nueva en delphi..) No puedo resolver este error (al declarar el procedimiento): Unsatisfied forward or external declaration: TForm.Mover........Mover lo llame el procedimiento¿Que es lo que pasa?

roman 21-10-2004 19:57:14

Es que tienes que implementarlo:

Código Delphi [-]
interface

procedure TForm1.Mover(
  Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin

  { Aquí tu código }

end;

// Saludos

chechu 21-10-2004 20:26:35

Gracias Roman!!!
 
Muchas gracias por tu ayuda ya di con tu ayuda otro pasito.....Este trabajo es muy importante para mi:) ...........


La franja horaria es GMT +2. Ahora son las 03:02:53.

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