Shell   26-01-2023, 13:00
#1
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
Última modificación: 26-01-2023, 13:06 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shordi   26-01-2023, 19:05
#2
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

No podemos regresar
Shell   26-01-2023, 20:02
#3
(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.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.