Mover control en un formulario

1,197 views
Skip to first unread message

Juanpa

unread,
May 26, 2010, 7:24:29 AM5/26/10
to Comunidad de Visual Foxpro en Español
Muy buenas,

Me gustaría saber si es posible mover un control (image, button, etc.)
por un formulario en tiempo de ejecución. El usuario debería poder
arrastrarlo con el ratón hasta el lugar del formulario que desee.

Un saludo,

Juan Pablo Martín Peinado.
Guadalajara - España

Luis Maria Guayan

unread,
May 26, 2010, 7:58:33 AM5/26/10
to publice...@googlegroups.com
Mira este ejemplo

PUBLIC oMiForm
oMiForm = NEWOBJECT("MiForm")
oMiForm.SHOW
RETURN

DEFINE CLASS MiForm AS FORM
  TOP = 0
  LEFT = 0
  HEIGHT = 400
  WIDTH = 600
  AUTOCENTER = .T.
  CAPTION = "Arrastre el cuadro rojo con el boton izquierdo del raton"
  XOffset = 0
  YOffset = 0
  NAME = "MiForm"

  ADD OBJECT Shape1 AS SHAPE WITH ;
    TOP = 24, LEFT = 24, HEIGHT = 85, WIDTH = 85, ;
    BACKCOLOR = RGB(255,0,0), NAME = "Shape1"

  PROCEDURE DRAGDROP
    LPARAMETERS oSource, nXCoord, nYCoord
    oSource.LEFT = nXCoord - THISFORM.XOffset
    oSource.TOP = nYCoord - THISFORM.YOffset
  ENDPROC

  PROCEDURE Shape1.DRAGDROP
    LPARAMETERS oSource, nXCoord, nYCoord
    THIS.PARENT.DRAGDROP(oSource, nXCoord, nYCoord)
  ENDPROC

  PROCEDURE Shape1.MOUSEMOVE
    LPARAMETERS nButton, nShift, nXCoord, nYCoord
    IF nButton = 1 && Boton Izquierdo
      THISFORM.XOffset = nXCoord - THIS.LEFT
      THISFORM.YOffset = nYCoord - THIS.TOP
      THIS.DRAG
    ENDIF
  ENDPROC
ENDDEFINE

Es un ejemplo resumido del que se encuentra en Solutions de VFP

DO FORM HOME(2) + "\Solution\Forms\Ddrop"

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Norman Diaz

unread,
May 26, 2010, 8:14:52 AM5/26/10
to publice...@googlegroups.com
amigo . cambie de equipo y me uni de nuevo al grupo. pero ahora todos los mensajes me llegan a mi correo a demas de que los puedo leer en el grupo.
como hago para que no melleguen a mi correo.
Gracias de antemano.
 
Norman Diaz
Venezuela.-

Jose A. Blasco

unread,
May 26, 2010, 9:27:57 AM5/26/10
to Comunidad de Visual Foxpro en Español
Una vez conectado, pinchas en "Editar mi suscripcion"
y en el apartado ¿Como deseas leer este grupo?
pinchas en "Sin correo electronico"

Un saludo.

> _________________________http://www.PortalFox.com

Norman Diaz

unread,
May 26, 2010, 9:45:20 AM5/26/10
to publice...@googlegroups.com

Panita disculpa mi incredulidad pero no encuentro esa parte aqui .
trabajo con windows live y en la parte de abajo dice grupos de noticias
entro alli pero no veo donde editar esa parte.
Gracias.

--------------------------------------------------
From: "Jose A. Blasco" <jabl...@gmail.com>
Sent: Wednesday, May 26, 2010 8:57 AM
To: "Comunidad de Visual Foxpro en Espa�ol"
<publice...@googlegroups.com>
Subject: [vfp] Re: Mover control en un formulario

>> Luis Mar�a Guay�n
>> Tucum�n, Argentina


>> _________________________http://www.PortalFox.com
>> Nada corre como un zorro
>> _________________________
>>

>> El 26/05/2010 08:24, Juanpa escribi�:
>> Muy buenas,
>>
>> Me gustar�a saber si es posible mover un control (image, button, etc.)
>> por un formulario en tiempo de ejecuci�n. El usuario deber�a poder
>> arrastrarlo con el rat�n hasta el lugar del formulario que desee.
>>
>> Un saludo,
>>
>> Juan Pablo Mart�n Peinado.
>> Guadalajara - Espa�a
>

Juanpa

unread,
May 26, 2010, 10:13:36 AM5/26/10
to Comunidad de Visual Foxpro en Español
Gracias Luis M., funciona perfecto.

Un saludo,

Juan Pablo Martín Peinado
Guadalajara - España

> DO FORM HOME(2) + "\Solution\Forms\Ddrop"Luis María Guayán Tucumán, Argentina _________________________http://www.PortalFox.comNada corre como un zorro _________________________

Luis Maria Guayan

unread,
May 26, 2010, 2:21:31 PM5/26/10
to publice...@googlegroups.com
Debes "Editar tu suscripción" desde http://groups.google.com.ar/group/publicesvfoxpro/subscribe

y allí elijes la forma de participar


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Jose Antonio

unread,
May 27, 2010, 3:21:45 AM5/27/10
to publice...@googlegroups.com
Conectacte desde aqui con tu cuenta

http://groups.google.com/group/publicesvfoxpro/topics

Un saludo.

El 26 de mayo de 2010 15:45, Norman Diaz <acc...@hotmail.com> escribió:

Panita disculpa mi incredulidad pero no encuentro esa parte aqui .
trabajo con windows live y en la parte de abajo dice grupos de noticias
entro alli pero no veo donde editar esa parte.
Gracias.

--------------------------------------------------
From: "Jose A. Blasco" <jabl...@gmail.com>
Sent: Wednesday, May 26, 2010 8:57 AM
To: "Comunidad de Visual Foxpro en Español" <publice...@googlegroups.com>
Luis María Guayán
Tucumán, Argentina

_________________________http://www.PortalFox.com
Nada corre como un zorro
_________________________

El 26/05/2010 08:24, Juanpa escribió:
Muy buenas,

Me gustaría saber si es posible mover un control (image, button, etc.)
por un formulario en tiempo de ejecución. El usuario debería poder
arrastrarlo con el ratón hasta el lugar del formulario que desee.

Un saludo,

Juan Pablo Martín Peinado.
Guadalajara - España




--
Jose A. Blasco
Zaragoza - España


Norman Diaz

unread,
May 28, 2010, 11:10:42 PM5/28/10
to publice...@googlegroups.com
amigo ya edite mi suscripcion y no se por que me siguen  llegando los correos a accp01@hotmail
gracias.-

Jorge Rubinich

unread,
Nov 16, 2012, 10:39:53 PM11/16/12
to publice...@googlegroups.com
Perdón por reflotar un tema tan viejo, pero es que buscando como mover un control cai en este grupo, en este post.
Ya me suscribí y ya aplique lo explicado por LMG con un resultado excelente.
Cree una forma (un circulo) y lo moví perfectamente.
Perooooo....
Mi problema es que el objeto que quiero mover en mi aplicacion es, justamente, un circulo..CON TEXTO ADENTRO.
Asi que tuve que crear una clase container con el circulo y el texto adentro.

Puse el codigo de LMG en los eventos MouseMove y DragDrop  del container.
y en el DragDrop del form.

Pero no se mueveee..!

Si alguien ha hecho algo de esto... desde ya se agradece cualquier colaboración!!

Jorge Rubinich

Walter R. Ojeda Valiente

unread,
Nov 17, 2012, 1:13:45 AM11/17/12
to publice...@googlegroups.com
Una posible solución:

- A tu container agrégale un botón, a su propiedad Style asígnale 1 - Invisible
- El tamaño de ese botón debe ser igual al tamaño de tu container
- La propiedad Left del botón debe estar en 0
- La propiedad Top del botón debe estar en 0
- Haz que el botón esté arriba de todos los demás controles de tu container
- Escribe código en los eventos DragDrop() y MouseMove() del botón

Si no quieres usar un botón también podrías usar un control Shape o algunos otros controles.

Saludos.

Walter.

"Si puedes razonar con gente religiosa, no son gente religiosa". Dr. House




Date: Fri, 16 Nov 2012 19:39:53 -0800
From: jorger...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Re: Mover control en un formulario


Perdón por reflotar un tema tan viejo, pero es que buscando como mover un control cai en este grupo, en este post.
Ya me suscribí y ya aplique lo explicado por LMG con un resultado excelente.
Cree una forma (un circulo) y lo moví perfectamente.
Perooooo....
Mi problema es que el objeto que quiero mover en mi aplicacion es, justamente, un circulo..CON TEXTO ADENTRO.
Asi que tuve que crear una clase container con el circulo y el texto adentro.

Puse el codigo de LMG en los eventos MouseMove y DragDrop  del container.
y en el DragDrop del form.

Pero no se mueveee..!

Si alguien ha hecho algo de esto... desde ya se agradece cualquier colaboración!!

Jorge Rubinich


El miércoles, 26 de mayo de 2010 08:24:29 UTC-3, Juanpa escribió:
Muy buenas,Me gustaría saber si es posible mover un control (image, button, etc.)

por un formulario en tiempo de ejecución. El usuario debería poder
arrastrarlo con el ratón hasta el lugar del formulario que desee.
Un saludo,
Juan Pablo Martín Peinado.
Guadalajara - España




--
 
 
 

Luis Maria Guayan

unread,
Nov 17, 2012, 9:18:38 AM11/17/12
to publice...@googlegroups.com
Muestranos tu código para ver como se puede solucionar. Quizas en los mismos métodos de los objetos incluídos deberias el método del objeto padre.


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

--
 
 
 

Luis Maria Guayan

unread,
Nov 17, 2012, 10:08:03 AM11/17/12
to publice...@googlegroups.com
Tal cual como te comente, mira y ejecuta este código:

oMiForm = NEWOBJECT("MiFormulario")
oMiForm.SHOW(1)
RETURN

DEFINE CLASS MiFormulario AS FORM

  AUTOCENTER = .T.
  CAPTION = "MiFormulario"
  WIDTH = 800
  HEIGHT = 800
  NAME = "MiFormulario"

  *- Creo estas propiedades
  xoffset = 0
  yoffset = 0

  ADD OBJECT cnt1 AS MiContenedor WITH ;
    TOP = 50, LEFT = 50, NAME = "MiContenedor"


  PROCEDURE DRAGDROP
    LPARAMETERS oSource, nXCoord, nYCoord
    oSource.LEFT = nXCoord - THISFORM.XOffset
    oSource.TOP = nYCoord - THISFORM.YOffset
  ENDPROC

  PROCEDURE MiContenedor.MOUSEMOVE

    LPARAMETERS nButton, nShift, nXCoord, nYCoord
    IF nButton = 1 && Boton Izquierdo
      THISFORM.XOffset = nXCoord - THIS.LEFT
      THISFORM.YOffset = nYCoord - THIS.TOP
      THIS.DRAG
    ENDIF
  ENDPROC

  PROCEDURE MiContenedor.DRAGDROP

    LPARAMETERS oSource, nXCoord, nYCoord
    THIS.PARENT.DRAGDROP(oSource, nXCoord, nYCoord)
  ENDPROC

ENDDEFINE

DEFINE CLASS MiContenedor AS CONTAINER

  BACKSTYLE = 0
  BORDERWIDTH = 0
  WIDTH = 100
  HEIGHT = 100
  NAME = "MiContenedor"

  ADD OBJECT MiShape AS SHAPE WITH ;
    TOP = 0, LEFT = 0, HEIGHT = 100, WIDTH = 100, ;
    CURVATURE = 99, BACKCOLOR = RGB(255,0,0), NAME = "MiShape"

  ADD OBJECT MiLabel AS LABEL WITH ;
    AUTOSIZE = .T., FONTSIZE = 12, BACKSTYLE = 0, ;
    HEIGHT = 21, LEFT = 40, TOP = 40, WIDTH = 40, ;
    CAPTION = "Texto", NAME = "MiLabel"

  PROCEDURE MiShape.MOUSEMOVE

    LPARAMETERS nButton, nShift, nXCoord, nYCoord
    THIS.PARENT.MOUSEMOVE(nButton, nShift, nXCoord, nYCoord)
  ENDPROC

  PROCEDURE MiLabel.MOUSEMOVE

    LPARAMETERS nButton, nShift, nXCoord, nYCoord
    THIS.PARENT.MOUSEMOVE(nButton, nShift, nXCoord, nYCoord)
  ENDPROC

ENDDEFINE

En cada objeto de tu contenedor, debes agregarle el siguiente código al método MouseMove:


    LPARAMETERS nButton, nShift, nXCoord, nYCoord
    THIS.PARENT.MOUSEMOVE(nButton, nShift, nXCoord, nYCoord)

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Reply all
Reply to author
Forward
0 new messages