Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-10-2008
Avatar de Lord Delfos
Lord Delfos Lord Delfos is offline
Miembro
 
Registrado: ene 2008
Ubicación: Tandil, Argentina
Posts: 558
Poder: 17
Lord Delfos Va por buen camino
Problema visual con scroll automático en TScrollBox.

Buenas, gente. A ver si alguno sabe a qué se debe esto.

Tengo una TScrollBox con controles TImage adentro, algo como una galería. El usuario puede cambiar las imágenes de lugar arrastrándolas y soltándolas sobre otras.

Actualmente estoy usando un TDragControlObject para poder obtener una imagen para mostrar mientras se arrastra. Hasta acá no hay ningún problema. Todo se ve perfecto.

La cosa es que se me ocurrió agregar la posibilidad de que la imagen pueda ser arrastrada fuera del recuadro visual de la scrollbox, es decir, que si yo estoy en la imagen 150, y la quiero arrastrar hasta la posición 1, puede arrastrarla hacia la parte superior de la scrollbox y ésta va a "autoescrolear" hacia arriba.

La cosa es que gráficamente se rompe total y completamente. Aparecen partes de imágenes sobre las que pasé, va quedando una "estela fantasma" de la imagen que arrastro, en fin, se rompe feo, feo.

El código que tengo actualmente en el OnDragOver de las TImage es éste:

Código Delphi [-]
procedure TScrollImagenes.DragOverImagen(Sender, [...]
begin
  Accept:= (Source is TMyDragObject);
  if Accept then
    begin
    if ScreenToClient(Mouse.CursorPos).Y<100 then
      if VertScrollBar.Position>10 then
        Self.Perform(WM_VSCROLL, 0, 0);
    end;
  //Refresh;
end;
El resultado:

http://link.imgshare.us/0rjSjj

La única imagen de arrastre que debería verse es la de arriba del todo, las demás van quedando por el camino.

Al principio pensé hacer un refresh (que ahí en el código está comentado), que aunque es ineficiente y causa algún parpadeo... digamos que podría vivir con ello si solucionara el otro problema. Pero el resultado no fue mucho mejor:

http://link.imgshare.us/0rjSl7

Fíjense que la imagen que arrastro está "contaminada" por otras imágenes por las que pasé antes.

Todo esto pasa únicamente cuando hay que hacer scroll, si se arrastra dentro del campo visual la cosa se ve perfectamente:

http://link.imgshare.us/0rjSkh

... Algo bastante loco.

Si alguien sabe algo al respecto, incluyendo cómo debe hacerse un autoscroll correctamente, se los agradecería hasta el infinito.

PD: Si piensan que el culpable es el Perform(WM_SCROLL, 0, 0), están equivocados, ya probé con el ScrollBy y la cosa no anduvo tampoco: hacía scroll pero no cambiaba el Top de las imágenes, así que el resultado era desastroso.

Última edición por Lord Delfos fecha: 28-10-2008 a las 18:20:06.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
propiedad Canvas de TScrollBox islu Varios 2 13-06-2007 10:04:32
Scroll automático con TeeChart José Craviotto Gráficos 0 08-02-2006 10:41:45
Problema con TScrollBox madmai Varios 2 10-10-2005 22:21:13
componente con scroll automatico Masu Varios 1 28-12-2003 20:30:15
Agregar controles a un TScrollBox fraguillen Gráficos 1 07-05-2003 23:32:28


La franja horaria es GMT +2. Ahora son las 09:13:08.


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