Re: [Gambas-user-es] Cambiar de Focus
Brought to you by:
gambas
|
From: <la...@lu...> - 2005-03-10 20:22:46
|
Christian E. López Finnberg wrote:
>>>El código en concreto que estoy utilizando es:
>>>(TextBox1.next).setfocus
>>>
>>>
>>Hola,
>>
>>Sólo
>>
>>TextBox1.setfocus
>>
>>(De hecho fijate que si ponés Textbox1 y ponés el punto se te aparecerá
>>un menú desplegable con las propiedades, métodos y eventos del control,
>>entre los que se encuentra "SetFocus")
>>
>>
>
>Si, pero lo que yo quiero es poner el foco en el siguiente de la lista (por
>eso intento el next), es decir, hacer una función más genérica que pueda
>llamar desde varios Textbox y que sea desde donde sea que se llame, te pase
>al siguiente Textbox de la lista.
>
>
>
Yo he usado MUY poco gambas. Lo utilicé apenas abandoné güindous (y VB).
Al poco tiempo de utilizar Linux comencé aprender C++ (cosa que estoy
haciendo), de modo que gambas lo utilizo MUY de vez en cuando.
El Gambas que tengo es el 0.94 (no he logrado compilar el gambas2-1.9.3,
ni siquiera con la opción "--disable-gtk" como me recomendó Daniel
Campos, de modo que voy a esperar a actualizar mi Distro antes de volver
a intentar su compilación).
En VB existen al menos 3 formas para hacer lo que buscas, en el gambas
que tengo yo (0.94) ninguna de ellas funciona (ojo, son las que se me
ocurren a mi, de seguro habrán un montón más). Te las dejo a ver si las
podés depurar o si tenés la suerte que en gambas más actualizados que el
mío se pueda
*********************
1º FORMA: Matrices de controles
El cambio será entonces.
If Index = TextBox1.Count then
'No se lo que quieras hacer cuando se pierda el foco del último
elemento de la matriz
else
TextBox1(index + 1).setfocus
endif
(Index = índice de la matriz)
Lamentablemente no veo la manera de crear matrices de controles en
Gambas 0.94.
********************
2º FORMA: FOR EACH
(Esta forma puede llegar a ser bastante compleja, pero es la única que
puede ayudarte (de las formas que te listo))
En VB hay una propiedad llamada TabIndex. En Gambas no la veo PERO SE
QUE EXISTE (dado que la tecla Tab la utiliza de algún modo).
dim Txt as TextBox
FOR EACH Txt in Form1
If Txt.TabIndex = Txt.TabIndex +1 then
Txt.SetFocus
Return
endif
NEXT
En este caso el TabIndex se podría llegar a reemplazar por la propiedad
Tag (asignándole previamente valores). El problema es que Gambas 0.94 no
toma a Form1 como una colección válida
********************
3º FORMA: SendKey
En VB existe algo llamado Sendkey (o SendKeys, ya no me acuerdo) y que
también podría ser una solución a tu necesidad (emular el llamado de la
tecla Tab).
El problema es que veo nada parecido en Gambas 0.94
NOTA: Cómo *ULTIMO* recurso podés poner la siguiente COCHINADA:
select case Last.Tag 'Antes debés haberle cargado los valores.
case = 1
TextBox2.SetFocus
...
Bueno, te dejo esto como güía. Si podés solucionarlo, contanos cómo
--
Iván (Vanchi) La Malfa
Mail/JID: la...@lu...
|