Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Mover componentes en runtime (https://www.clubdelphi.com/foros/showthread.php?t=50158)

felipe88 09-11-2007 17:45:44

Mover componentes en runtime
 
Hola a todos los compañeros del club delphi...
Tengo una simple inquietud, he creado este hilo porque hasta ahora no vi ninguno que me orientara, la verdad estoy buscando la forma de mover componentes en tiempo de ejecucion (asi como los speedbutton con la controlbar), lei un poco sobre las propiedades dragmode y dragkind pero no son lo que buscaba ademas el componente final debe poner tener la propiedad text o caption, agradeceria cualquier ayuda...

poliburro 09-11-2007 18:30:21

revisa este sitio

www.q3.nu\trucomania

Neftali [Germán.Estévez] 09-11-2007 18:59:06

Aquí tienes un ejemplo de mover componentes en Runtime, pero me parece que no es eso lo que estás pensando. Tal vez debías explicarte un poco mejor.
Si lo que necesitas son las títpicas barras de botones que te permiten reorganizar los botones que contienen, creo que el camino no va por ahí.

Un saludo.

Lepe 09-11-2007 19:07:29

Pues nada, que ya sobra este mensaje jeje

Neftali, nos ofrece unos componentes para hacer eso, y además un ejemplo, con código y explicaciones, no te lo pierdas ;).

http://www.neftali.clubdelphi.com/

En concreto: Crear, mover y redimensionar controles en Runtime (IDE)

Aunque te recomiendo todos los ejemplos y componentes de esa página ;).

SAludos

felipe88 09-11-2007 21:32:20

Cita:

Empezado por Neftali (Mensaje 244960)
Aquí tienes un ejemplo de mover componentes en Runtime

Gracias Neftali en realidad es un muy buen ejemplo el que me proporcionas algo asi es lo que busco hacer, la unica diferencia es que al ser imagenes no puedo cambiar ninguna propiedad como texto, la cual se realizaria aleatoriamente desde codigo... pero eso no importa ahora, tratare de basarme en tu ejemplo a ver que logro sin hembargo si tienes otra sugerencia te lo agradecere...

felipe88 15-11-2007 16:41:43

Moviendo componentes con teclado
 
Hola de nuevo, he estado trabajndo un poco con el codigo que me proporciono Neftali, cambie el componente Image para poder crear algo similar a lo que necesito, pero ahora lo que sucede es que tambien desearia poder mover los componentes con el teclado y ademas que entre estos no se cruzen, por esta razon tomaba como ejemplo los speedbutton y la controlbar; ya que estos se pueden cambiar de lugar sin que suceda, alguna idea con la que me puedan ayudar...?

Neftali [Germán.Estévez] 15-11-2007 17:07:56

Cita:

Empezado por felipe88 (Mensaje 246386)
pero ahora lo que sucede es que tambien desearia poder mover los componentes con el teclado y ademas que entre estos no se cruzen

Eso no he acabado de enterderlo (lo de que no se cruzen), ¿Puedes explicarlo mejor?

Cita:

Empezado por felipe88 (Mensaje 246386)
pero ahora lo que sucede es que tambien desearia poder mover los componentes con el teclado

Eso casi es más sencillo que con el ratón, ya que lo único que debes hacer es segun las teclas (OnKeyPress/OnKeyDown) cambiar las propiedades Top y Left del componente afectado.

felipe88 15-11-2007 17:19:51

Cita:

Empezado por Neftali (Mensaje 246390)
Eso no he acabado de enterderlo (lo de que no se cruzen), ¿Puedes explicarlo mejor?

Bueno es facil, como podras ver en tu propia aplicacion yo puedo pasar un angelito sobre otro, lo que yo quiero intentar es que eso no pase cuando los este moviendo ;)

Cita:

Empezado por Neftali (Mensaje 246390)
Eso casi es más sencillo que con el ratón, ya que lo único que debes hacer es segun las teclas (OnKeyPress/OnKeyDown) cambiar las propiedades Top y Left del componente afectado.

....Claro lo unico que debo hacer es usar estas lineas :rolleyes:

Neftali [Germán.Estévez] 15-11-2007 17:48:42

Cita:

Empezado por felipe88 (Mensaje 246395)
Bueno es facil, como podras ver en tu propia aplicacion yo puedo pasar un angelito sobre otro, lo que yo quiero intentar es que eso no pase cuando los este moviendo

Se me antoja difícil y costoso.
Podrías hacer una rutina que te detectara las "colisiones" entre los diferentes controles del form, mirando las coordenadas y tamaño de todos los existentes, en cada movimiento. Aun así también deberías tener en cuenta que dos controles que se "solapen" pueden estar en diferentes contenedores.

No acabo de ver hacia donde quieres ir...

felipe88 16-11-2007 17:07:17

Bueno pues vere que me invento, aunque con este cuento de las coordenadas como que %&#&)(?¿´ no me entiendo bien...
Ademas...
Cita:

Empezado por Neftali (Mensaje 246407)
No acabo de ver hacia donde quieres ir...

Es algo parecido a esta imagen http://tbn0.google.com/images?q=tbn:...11m/puzle3.jpg
si lo has judado entenderas...

Neftali [Germán.Estévez] 16-11-2007 17:46:24

Ok, un poco más claro...
Entonces tal vez deberías utilizar opciones de Drag And Drop combinado con lo que hemos hablado.
Si formaras un array de controles con las posiciones (3x3 por ejemplo) eso te permitiría definir cuales son las pociones válidas (controles válidos sobre los que arrastrar); Una vez que tengas los controles válidos, el sistema controla dónde puedes y no puedes "soltar".

Revisa algun ejemplo de Drag & Drop.

Chris 17-11-2007 00:15:57

una humilde opinión de mi parte: ¿no sería mejor que utilizes TActionToolbar de una sola vez?

Puedes hacer un escaneado de los componentes en el toolbar y determinar si alguno se encuentra bajo del que intentas arrastrar, si se da el caso entonces muevelo.

Código Delphi [-]
For I := 0 to Toolbar1.ControlCount - 1 do
Begin
 if TWinControl(Toolbar1.Controls[i]).BoundsRect in MousePos Then
   IF Toolbar1.Controls[i] <> ControlArrastrado Then
  /// mover controles
end;

oviamente, ese código no es valido, pero creo que por ahí va. Lo estoy haciendo de memoria.

Saludo.


La franja horaria es GMT +2. Ahora son las 17:09:11.

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