FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
TreeView excepción
Buenos días a todos.
Vamos a ver si me sé explicar: estoy utilizando un TtreeView (en Delphi 7)para hacer una estructura recursiva entre tablas de la base de datos, vamos, que tengo un porrón de nodos. De todas formas ese no es el problema, el caso es que si intento arrastrar un nodo (de dentro) al nodo raiz, y sobre paso este por encima, se cuelga mi aplicación y se cierra inmediatamente sin mostrarme ni un puñetero mensaje de error. Supongo que me he explicado como el culo, vamos ni que fuera lunes. Esto me pasaba también si intentaba arrastrar (drag over) un elemento desde la parte superior a cualquiera de los nodos "escondidos" por el scroll ya que no cabían en la pantalla y el treeview se hacia la "picha un lío" para tratar de encontrar el nodo target donde soltar el elemento. Esto lo solucioné de la siguiente manera, metiendo en el evento drag over estas lineas de código if Y <= DistanceToScroll then SendMessage(TV.Handle, WM_VSCROLL, SB_LINEUP, 0) else if Y >= TV.ClientHeight - DistanceToScroll then SendMessage(TV.Handle, WM_VSCROLL, SB_LINEDOWN, 0); Pues bien, esta "solución" no es del todo válida porque si el drag over se hace muy deprisa o se te va la pinza y te mueves por el árbol hasta el final, donde no hay nodos, la aplicación casca igual. En fin, si alguien me puede echar un cable con esto, estaría eternamente agradecido. |
#2
|
|||
|
|||
Ya he visto que la gente ha leído mi problema y aun así no tengo solución. Yo le he seguido dando vueltas y supongo que una solución sería evitar de alguna manera el drag & drop fuera del "contenedor" del componente, pero tampoco he conseguido hacerlo así que, una vez más, si alguien me puede echar un cable... ES IMPORTANTE !!!
Gracias a todos. |
#3
|
||||
|
||||
Cita:
solo permitirá el arrastrar y soltar dentro del mismo Treeview. El hecho de que casque es que el elemento seleccionado en el treeview sea nil. Comprueba siempre esa posiblidad:
Tienes que hacer esa comprobación tanto para el nodo Origen como Destino de la operacion "arrastrar y soltar" Para ser más exactos, pon el código de Ondragdrop para localizar el fallo. Saludos |
|
|
|