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 27-09-2005
roedecker roedecker is offline
Miembro
 
Registrado: may 2004
Posts: 10
Poder: 0
roedecker Va por buen camino
Question ¿Cómo mover Scrollbar durante un DragOver?

Hola.

No estoy muy seguro de que éste sea el subforo adecuado para esta pregunta, pero allá voy:

Estoy haciendo un formulario con un TFrame que a su vez tiene un TImage en ocasiones mayor que el propio frame, con lo que aparecen las consiguientes Scrollbars.

Ahora bien, necesito hacer un Drag&Drop de un elemento del frame a otro punto del mismo, y me gustaría saber cómo podría mover las scrollbars mientras estoy realizando el DragOver, como, por ejemplo, hace el Explorador de Windows. Es decir, que arrastrando un elemento hacia los extremos del frame, se vaya desplazando la parte "visible" del mismo. Espero haberme explicado bien

Gracias.

Edito para añadir que programo en Delphi 7.

Última edición por roedecker fecha: 27-09-2005 a las 10:51:53.
Responder Con Cita
  #2  
Antiguo 27-09-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Mas o menos puedes enfocarlos así:
Código Delphi [-]
 if RealizandoDragDrop then
 if (Y > frmppal.clientHeight -10) and // si estamos en el borde inferior
 (frmppal.VertScrollBar.Position >=10) then //si la barra no está al principio

    frmppal.VertScrollBar.Position:=frmppal.VertScrollBar.Position-10;
        // movemos la barra

Quizás tengas que poner un timer para que no corra mucho la barra.

EDITO: Esto lo pones en el FrameMouseMove

Un saludo

Última edición por Lepe fecha: 27-09-2005 a las 12:53:55.
Responder Con Cita
  #3  
Antiguo 28-09-2005
roedecker roedecker is offline
Miembro
 
Registrado: may 2004
Posts: 10
Poder: 0
roedecker Va por buen camino
Thumbs up Gracias

No era exactamente eso lo que precisaba, pero ya lo he adaptado y lo he hecho funcionar. Gracias por encaminarme en la dirección correcta.
Responder Con Cita
  #4  
Antiguo 30-09-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por roedecker
No era exactamente eso lo que precisaba, pero ya lo he adaptado y lo he hecho funcionar. (...)
¡Pues ya podías exponer cómo lo hiciste! ¿Quién sabe si la solución le vendrá bien a alguien?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 30-09-2005
roedecker roedecker is offline
Miembro
 
Registrado: may 2004
Posts: 10
Poder: 0
roedecker Va por buen camino
Ok, ok, aquí va...

En el evento DragOver del TImage, siendo FrameMapa el TFrame:

Código Delphi [-]
//movimiento hacia la izquierda
  if (X < FrameMapa.HorzScrollBar.Position + 10) then
      FrameMapa.HorzScrollBar.Position := FrameMapa.HorzScrollBar.Position - FrameMapa.HorzScrollBar.Increment;

//movimiento hacia la derecha
  if (X > FrameMapa.clientWidth + FrameMapa.HorzScrollBar.Position - 10) then
      FrameMapa.HorzScrollBar.Position := FrameMapa.HorzScrollBar.Position + FrameMapa.HorzScrollBar.Increment;

//movimiento hacia arriba
  if (Y < FrameMapa.VertScrollBar.Position + 10) then
      FrameMapa.VertScrollBar.Position := FrameMapa.VertScrollBar.Position - FrameMapa.VertScrollBar.Increment;

//movimiento hacia abajo
  if (Y > FrameMapa.clientHeight + FrameMapa.VertScrollBar.Position - 10) then
      FrameMapa.VertScrollBar.Position := FrameMapa.VertScrollBar.Position + FrameMapa.VertScrollBar.Increment;
Los ifs dependen de la posición del correspondiente ScrollBar ya que las X e Y del TImage van cambiando según cambia la parte visible del mismo.

Lo curioso es que lo he implementado en otro formulario parecido (usan incluso los mismos TFrame y TImage), y mientras que en uno el movimiento tiene una velocidad razonable, en el otro va muy rápido.
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 21:41:41.


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