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 07-03-2005
jymy788 jymy788 is offline
Miembro
 
Registrado: jun 2004
Posts: 120
Poder: 20
jymy788 Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 08-03-2005
jymy788 jymy788 is offline
Miembro
 
Registrado: jun 2004
Posts: 120
Poder: 20
jymy788 Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 08-03-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Cita:
una solución sería evitar de alguna manera el drag & drop fuera del "contenedor"
en el dragOver pon : Accept := sender = source;
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:
Código Delphi [-]
if treview1.selected <> nil then //
begin
  treview1.selected.text ===> aqui no hay posible fallo, se puede acceder a Text sin problemas
end

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
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 14:35:13.


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