Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

[SOLUCIONADO]  Comportamiento errático de MoveTo en un TreeView
#1
Bug 

Hola, compañeros:
Pues lo del asunto, gente. Veréis, tenía un código que, más o menos, funcionaba. Lo del más o menos es porque no tenía control de errores, pero funcionaba. Y el caso es que, de la noche a la mañana, ha dejado de hacerlo.
Se trata de un TreeView llamado «trvProyecto» que tiene unos botones añadidos para mover los ítems y resulta que que el invento funcionaba hasta hace poco —no puedo determinar cuándo, porque mis proyectos tienden a la eternización—, cuando comenzó a ocurrir que no podía cambiar el «Current» del TreeView con MoveTo(). Simplemente es que MoveTo() no hace nada de nada —y he probado luego con MoveChild, MoveParent, MoveBefore, MoveFirstet caetera, con el mismo resultado—. No sé si os ha pasado lo mismo y estáis tan desesperados como yo. Pongo ejemplo del código:

GAMBAS
  1. Public Sub pryArriba_Click()
  2.  
  3.   Dim sClave As String
  4.   Dim sEste As String
  5.   
  6.   sEste = trvProyecto.Current.Key
  7.   trvProyecto.MoveCurrent
  8.   If Not trvProyecto.MoveAbove() Then
  9.     sClave = trvProyecto.Item.Key
  10.     Try trvProyecto.Current.MoveBefore(sClave)
  11.     trvProyecto.MoveTo(sEste)
  12.  
  13.  
  14. Public Sub pryAbajo_Click()
  15.  
  16.   Dim sClave As String
  17.   Dim sEste As String
  18.   
  19.   sEste = trvProyecto.Current.Key
  20.   trvProyecto.MoveCurrent
  21.   If Not trvProyecto.MoveBelow() Then
  22.     sClave = trvProyecto.Item.Key
  23.     trvProyecto.Current.MoveAfter(sClave)
  24.     trvProyecto.MoveTo(sEste)
  25.     trvProyecto.Item.Selected = Si
  26.  
  27.  
  28. Public Sub pryPosterior_Click()
  29.  
  30.   Dim sClave As String
  31.   Dim sEste As String
  32.   
  33.   sEste = trvProyecto.Current.Key
  34.   trvProyecto.MoveCurrent
  35.   If Not trvProyecto.MoveAbove() Then
  36.     sClave = trvProyecto.Item.Key
  37.     trvProyecto.Current.Reparent(sClave)
  38.     trvProyecto.MoveTo(sEste)
  39.     trvProyecto.Item.Selected = Si
  40.  
  41.  
  42. Public Sub pryAnterior_Click()
  43.  
  44.   Dim sClave As String
  45.   Dim sEste As String
  46.   
  47.   sEste = trvProyecto.Current.Key
  48.   trvProyecto.MoveCurrent
  49.   If Not trvProyecto.MoveParent() Then
  50.     If Not trvProyecto.MoveParent() Then
  51.       sClave = trvProyecto.Item.Key
  52.       trvProyecto.Current.Reparent(sClave)
  53.       trvProyecto.MoveTo(sEste)
  54.       trvProyecto.Item.Selected = Si
  55.     Endif
  56.  
  57.  
  58. Public Sub prySuperior_Click()
  59.  
  60.   Dim sClave As String
  61.   
  62.   Debug trvProyecto.Current.Text 
  63.   sClave = trvProyecto.Current.Key
  64.   trvProyecto.Current.MoveFirst
  65.   trvProyecto.MoveTo(sClave)
  66.   Debug trvProyecto.Current.Text 
  67.  
  68.  
  69. Public Sub pryInferior_Click()
  70.  
  71.   Dim sClave As String
  72.   
  73.   Debug trvProyecto.Current.Text 
  74.   sClave = trvProyecto.Current.Key
  75.   trvProyecto.Current.MoveLast
  76.   trvProyecto.MoveTo(sClave)
  77.   Debug trvProyecto.Current.Text 
  78.  



¿Seríais tan amables de orientarme? —seguro que es una chorrada que mi ignorancia ha pasado por alto—. Gracias de antemano.
    ¡Gracias!
#2

(25-08-2021, 22:48)Grandamakulo escribió:  Y el caso es que, de la noche a la mañana, ha dejado de hacerlo.
  • En el instante que llamare A, hace un tiempo, funcionaba.
  • En el instante B, ahora, NO funciona
¿Es en ambos instantes usas la misma versión del IDE? si la respuesta es sí, entonces hay algo raro, si por el contrario estas manejando dos versiones diferentes, que debe ser lo mas probable, debe tratarse de uno de los 1000 cambios que tiene dicha versión respecto a la anterior.
Dicho esto Intente usar el código que pusiste para ver el efecto que comentas (yo tengo el IDE 3.15) pero no funciono, se ve que es algo que sacaste de un proyecto mas grande y hay unas variables llamadas "Si" que no encuentra así que remplace ese texto por "True" que es lo que espera el "trvProyecto.Item.Selected"
Tal vez si haces un ejemplo con datos en el treeview sea mas facil que encontremos una solucion.
Por otra parte que es lo que queres hacer exactamente? Mover el cursor por los elementos? o mover los elementos (items) de posición relativa respecto a otros items?


Saludos.

1 Saludo.
    ¡Gracias!
#3

Hola, @tincho:
  1. Sí, llevas razón, hubo cambio de IDE por medio, pero no recuerdo con cuál funcionaba.
  2. Exactamente. En casi todos los módulos me hago constantes «Si» y «No» como TRUE y FALSE. Se me olvidó comentároslo.
  3. También es cierto que es parte de un programa más grande. Voy a montar un ejemplo pequeñito porque hoy me he dado cuenta de que llega incluso a «borrar» variables que no tienen que ver con el control.
  4. Pretendo mover los ítems y, según me convenga, mantener el cursor interno en el propio ítem o no.
Ya digo, en breve cargo un pequeño ejemplo para verlo. Muchas gracias.

En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
[-] Los siguientes 1 usuarios dice gracias a Grandamakulo por este post:
  • gambafeliz
    ¡Gracias!
#4

Bueno, ejemplo montado. En el TextArea txtNotas se van mostrando los cambios que NO deberían producirse:

.zip FalloTreeView.zip Tamaño: 19.07 KB  Descargas: 2


A ver si vosotros sois capaces de entenderlo, porque yo, desde luego, ni idea.

En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
    ¡Gracias!
#5

(27-08-2021, 12:00)Grandamakulo escribió:  Bueno, ejemplo montado. En el TextArea txtNotas se van mostrando los cambios que NO deberían producirse:

ok, le pego un vistazo y te digo algo
Saludos.

ok, creo que ya esta.
  • Agregue una linea para que se seleccione la clave anterior al movimiento
  • Puse el treeview en mode single (antes estaba en multiple)
GAMBAS
  1. Public Sub pryArriba_Click()
  2.  
  3.   Dim sClave As String
  4.   Dim sEste As String
  5.  
  6.   txtNotas.Text &= trvProyecto.Current.Key & " >>> "
  7.  
  8.   sEste = trvProyecto.Current.Key
  9.  
  10.   trvProyecto.MoveCurrent
  11.   If Not trvProyecto.MoveAbove() Then
  12.     sClave = trvProyecto.Item.Key
  13.     Try trvProyecto.Current.MoveBefore(sClave)
  14.     trvProyecto.MoveTo(sEste)
  15.  
  16.   trvProyecto[sEste].Selected = True
  17.  
  18.   txtNotas.Text &= trvProyecto.Current.Key & gb.Lf
  19.  


Saludos.

1 Saludo.
[-] Los siguientes 1 usuarios dice gracias a tincho por este post:
  • Grandamakulo
    ¡Gracias!
#6

¡Releñes, @tincho, se me pasó tu respuesta! Y yo esperando aquí sentado, jajaja.
Pues muchísimas gracias. Voy corriendo a probarlo, a ver si le pongo el [SOLUCIONADO]  Big Grin .

En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
    ¡Gracias!
#7

Pues a mí se me pasó este hilo... es lo que tiene mirar en el móvil. No te pones a responder pero luego te lo da como leído y no lo recuerdas...

Big Grin Big Grin Tongue

No podemos regresar
    ¡Gracias!
#8

(31-08-2021, 09:57)Shordi escribió:  Pues a mí se me pasó este hilo... es lo que tiene mirar en el móvil. No te pones a responder pero luego te lo da como leído y no lo recuerdas...

Es mas practico usar "Temas recientes" que muestra eso, lo reciente, porque el de "Temas nuevos" se no muestra lo que ya viste.
Saludos.

(31-08-2021, 08:44)Grandamakulo escribió:  ¡Releñes, @tincho, se me pasó tu respuesta! Y yo esperando aquí sentado, jajaja.
Pues muchísimas gracias. Voy corriendo a probarlo, a ver si le pongo el [SOLUCIONADO]  Big Grin .

De nada manchoso, es que venia con buen impulso pues me bebí un vino de por ahí de tus lares. Big Grin
[Imagen: BZ2Iydt.jpg]
Saludos.

1 Saludo.
    ¡Gracias!
#9

Sí señor. Por aquí vino queso aceitaco y harinaca. Así nos criamos Big Grin Big Grin Big Grin Rolleyes

No podemos regresar
    ¡Gracias!
#10

(31-08-2021, 11:07)Shordi escribió:  Sí señor. Por aquí vino queso aceitaco y harinaca. Así nos criamos Big Grin Big Grin Big Grin Rolleyes

Y torreznacos, no nos olvidemos del colesterol  Big Grin

En un lugar de La Mancha de cuyo nombre me acuerdo perfectamente...
    ¡Gracias!


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)