Comunidad Gambas-es
Método Next y Previous de la clase Control - Versión para impresión

+- Comunidad Gambas-es (https://gambas-es.org)
+-- Foro: Gambas (https://gambas-es.org/forum-3.html)
+--- Foro: General (https://gambas-es.org/forum-4.html)
+--- Tema: Método Next y Previous de la clase Control (/thread-1193.html)



Método Next y Previous de la clase Control - Shell - 26-01-2023

Buenas!.

¿ Habéis podido usar esos métodos ?.

Supongamos que tengo un formulario con distintos controles y uno de ellos tiene el foco. ( A lo mejor no es necesario ).
Y por un momento "he creido" que podría ser posible con esos métodos acceder al control siguiente y al anterior al que
de alguna forma esta seleccionado, tiene el foco, digo yo que será de alguna forma.

La ayuda de Gambas dice que: ( Todos esos métodos pertenecen a la clase control ).

Next : Devuelve el próximo control que tiene el mismo padre
Previous: Devuelve el control anterior que tiene el mismo padre.

Si tengo un formulario con tres botones ( sin más)

Y escribo algo como esto:

Código:
  Print Me.Next

Me.Next es nulo.
¿ Qué puedo haber hecho mal ?.
¿ Cómo puedo usar esos dos métodos ?.

Ey, esto si devuelve algo.

Código:
 Print Button1.Next.Name

Devuelve Button2

Ostras.

Y es que en ese código no se habla del padre de los controles.

Distinto sería que usase esto:

Código:
 Print Button1.Previous.Name

Devolviendo Objeto nulo

¿ Esto se remonta a la jerarquía de controles del formulario o a controles que son de la misma clase ?.

Ya que podía haber añadido después de boton1, textbox1.

Saludos


RE: Método Next y Previous de la clase Control - Shordi - 26-01-2023

Cita:Y por un momento "he creido" que podría ser posible con esos métodos acceder al control siguiente y al anterior al que
de alguna forma esta seleccionado, tiene el foco, digo yo que será de alguna forma.
Si te refieres a pasar de uno a otro, tienes el método de la clase Control SetFocus()
Button1.Next.SetFocus() debería hacer el trabajo.
 
Cita:Me.Next es nulo.
¿ Qué puedo haber hecho mal ?.
 Me.next es nulo porque estos métodos devuelven el anterior y el siguiente en la jerarquía de controles dentro del formulario. "Me" es una referencia al formulario, con lo que no tiene sentido lo de next.
Cita:
Código:
 
[list=1]
[*]Print button1.previous.name
[/list]

Devolviendo Objeto nulo
2: Button1 es el primero de la jerarquía, por lo que no tiene preivous. El Button1.Previous.Next devuelve nulo pues.
Cita:¿ Esto se remonta a la jerarquía de controles del formulario o a controles que son de la misma clase ?.
3: Se remonta a la jerarquía de controles del formulario, efectivamente.

Saludos


RE: Método Next y Previous de la clase Control - Shell - 26-01-2023

(26-01-2023, 19:05)Shordi escribió: Si te refieres a pasar de uno a otro, tienes el método de la clase Control SetFocus()
Button1.Next.SetFocus() debería hacer el trabajo.

Eso es. Estoy intentando convertir un ejemplo de la librería Tkinter donde se usan métodos parecidos y que trabajan con el foco.
A ver si lo acabo y lo puedo subir. Es una mezcla del primer ejemplo usando el evento Change y uso del Foco.
No será igual pero similar.
 
(26-01-2023, 19:05)Shordi escribió: Me.next es nulo porque estos métodos devuelven el anterior y el siguiente en la jerarquía de controles dentro del formulario. "Me" es una referencia al formulario, con lo que no tiene sentido lo de next.

Cierto.
 
(26-01-2023, 19:05)Shordi escribió: Button1 es el primero de la jerarquía, por lo que no tiene preivous. El Button1.Previous.Next devuelve nulo pues.

Era de esperar. Parece que no actúa igual esto en Tkinter.