Desplazamiento por botones de opcion

20/12/2003 - 10:11 por Desastres | Informe spam
Buenos dias

Pretendo gestionar un programa desde un formularios, procurando que se vean lo menos posible ( o nada) los
libros-hojas con los que se trabaja.
Mediante opciones diversas, "salir" a otros formularios, ejecutar acciones y volver al formulario base, que
estará en un libro que pudiera tener las macros.
Habra dos formas de lanzar las distintas macros de la aplicacion.
-Por botones de opcion directamnete
-Mediante un textBox (quizas invisible al usuario) que recibe el foco y, mediante la introduccion de un
codigo, modifica la propiedad value de un boton de opcion a True con lo que se ejecuta aquello que este
contenido en el evento click del boton.

Pero tengo dos problemas y tres preguntas
1º-hay veces ( aun no he abiero otros libros con él) despues de llamar tan solo a un MsgBox no vuelve a poner
el foco en el TextBox ni poniendo, al final del evento click, la instruccion :
Textbox.Setfocus -o-
Formulario.TextBox.setfocus -o-
Proyecto.formulario.TextBox.setfocus
Ni siquiera cuando es el unico control que tiene la propiedad TabStop=True
¿Donde meto la pezuña?

2º-Al recorrer con Flecha Arriba-Flecha Abajo, los botones de opcion de un formulario, ordenados de arriba
abajo mediante el TabIndex ascendente,no me recorre ordenadamente los distintos botones ni en modo diseño ni
en modo ejecucion. A algunos botones ni siquiera accede, estando en la misma "vertical" todos los botones i
alineados.
¿Por qué?

3º-Si se puede, ¿ cómo lanzar el evento click de un boto de opcion si me he posicionado sobre el, bien sea con
el tabulador bien con las flechas de direccion?

Saludos
Des

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
21/12/2003 - 06:09 | Informe spam
hola, Des !

... gestionar un programa desde un formularios ... dos formas de lanzar las ... macros ...
-Por botones de opcion directamente
-Mediante un textBox (quizas invisible al usuario) [...]



==> si el TextBox fuera 'invisible al usuario'... [creo que] NO 'tendria sentido' [usar un TextBox] ;) <=
... dos problemas y tres preguntas
1º- hay veces ... despues de ... no vuelve ... el foco en el TextBox ni poniendo, al final del evento click, la instruccion :
Textbox.Setfocus [...]



[tampoco le 'veo sentido' a...] 'tratar' de 'devolverle' el enfoque a un control que [en realidad] NO 'lo ha perdido'
la manera 'correcta' de 'mandar' el enfoque a un control 'especifico' es [p.e.] en los eventos de 'otro' control

2º- Al recorrer ... los botones de opcion ... no me recorre ordenadamente ... ni en modo diseño ni en modo ejecucion.
A algunos botones ni siquiera accede, estando en la misma "vertical" todos los botones i alineados.



en modo de diseño TODOS los controles son 'accesibles' al programador [sin importar propiedades como 'visible', etc.]
si [en modo de ejecucion] no 'estan' accesibles [probablemente con el tabulador] 'verifica' la propiedad 'TabStop'

3º- ... ¿como lanzar el evento click de un boton ... si me he posicionado sobre el ... con el tabulador ... flechas de direccion?



'a falta' de acciones del 'mouse', los [eventos de y] botones [y 'casillas de verificacion] se 'activan' con la barra 'espaciadora'

saludos,
hector.
Respuesta Responder a este mensaje
#2 Desastres
21/12/2003 - 10:28 | Informe spam
Hola Héctor.
Gracias.

==> si el TextBox fuera 'invisible al usuario'... [creo que] NO 'tendria sentido' [usar un TextBox] ;)


<=Tu postura es lógica. Pero una de las cosas que intento es probar cosas, incluidas algunas guasas mentales ( o
previsiones)

> 1º- hay veces que... no vuelve ... el foco en el TextBox ni poniendo, : Textbox.Setfocus [...]

[tampoco le 'veo sentido' a...] 'tratar' de 'devolverle' el enfoque a un control que [en realidad] NO 'lo ha


perdido'

Tienes razon, Change no es Exit, pero lo ha perdido[creo] . No me cuentes como, pero la ha perdido[creo] .
O es que el muy c... me esta tomando el pelo.
O sencillamente no lo estoy entendiendo ( que es lo mas probable).
Lo cierto es que, como prueba, antes de lanzar macros lanzo msgbox y luego del aceptar el mensaje( con lo cual
se ha terminado el proceso que lancé) , ni tintinea el cursor indicando el lugar activo en el textBox, ni
ejecuta ninguno de las ordenes dada a traves de los nuevos codigos tecleados(no pongo introducidos por que no
veo que lo esten) que deberian lanzar nuevas acciones.
De echo la situacion era la siguiente.
1 textbox trabajando mediante el evento change ( el exit me daba problemas, se ejecutaba dos veces[no se
porque])
10 botones de opcion con TabStop False ( los que lanzan el MsgBox)
A pesar de esta situacion tan sencilla, el foco no retornaba al Textbos. esta mañana probaré de nuevo
-
la manera 'correcta' de 'mandar' el enfoque a un control 'especifico' es [p.e.] en los eventos de 'otro'


control

No se si te entiendo. ¿puedes explirmelo? ¿y un ejemplo simple? ( lo utilizo pero no se si de forma correcta)
-
> 2º- Al recorrer los botones .. no lo hace ordenadamente ... ni en diseño ni ejecucion A algunos ni


siquiera accede,

en modo de diseño TODOS los controles son 'accesibles' al programador [sin importar propiedades como


'visible', etc.]

A glope de click, si. Flecha arriba y abajo no.Ya se que no es lo logico, por eso hice la pregunta.
si [en modo de ejecucion] no 'estan' accesibles [probablemente con el tabulador] 'verifica' la propiedad


'TabStop'

Lo sé. Lo utilizo.Especialmente cuando hay muchos ( 20-30) controles en un formulario.Entonces prefiero el
raton.
Las flechas de desplazamiento creo que llevan ( hasta donde sé) desde el que esta mas arriba en la pantalla,
al que esta debajo de el, se cual sea el orden de Tab index y tengan o no actibado TabStop, Pues aqui no
funcionaba así. Ni siquiera entendí la pauta ( para ver si habia alguna logica asociada a las propiedades
TabStop y TabIndex). En sentido desdendente hacia 1-2-4-6-7 y no pasaba al 8 ni rogando. Luego subia
7-6-5-4-3-2-1 y bajaba 1-2-3-4-5-6-7. Despues repetia el mismo ciclo.
El problema empezó cuando quise mover un marco en diseño y no se donde fue a parar.
Los dos marcos que queban los agrandé al maximo para ver si los veia y no lo conseguí.( entrando con macros
desactivadas)
(si hubiera podido activarlas, con una macro hubiera intentado preguntar donde estaban)
Quite los marcos pero los problemas persistian.

A partir de ahí , se que genera un errores de excepcion general , se cierra Excel y se crea un informe.
Te puede parecer muy tonto, a mi me pone como una moto, porque he perdido 3 dias de trabajo.
El problema no son los botones sino las macros creadas( aun no activas) que sustituiran a los MsgBox de
comprobacion, y que no me boy a arriesgar a lanzar en esta situacion.
Así que me he cargado los libros
Noto que excel no absorbe bien los errores, cuando se estan haciendo pruebas.
Conoces alguna forma de , no se como decir, "desproblematizarlo", sin salir de la aplicacion y resetear el
ordenador ( que es lo que hago)

> 3º- ... ¿como lanzar el evento click de un boton ... si me he posicionado sobre el ... con el tabulador


... flechas de direccion?
'a falta' de acciones del 'mouse', los [eventos de y] botones [y 'casillas de verificacion] se 'activan' con


la barra 'espaciadora'

Blas, una mas



Saludos
Des
Respuesta Responder a este mensaje
#3 Desastres
21/12/2003 - 18:46 | Informe spam
Hola Hector.
Estuve haciendo unas prueba esta mañana y, ademas de mantener lo que te decia en el otro correo, si el
formulario tiene su propiedad ShowModal por defecto, DESPUES DE DESCARGARLO, y estando evidentemente "no
visible" se puede ejecutar, al menos dos vece, un subprocedimiento privado del formulario.

A mi me suena a absurdo, pero como no se más es lo que me parece percibir

Saludos
Des
Respuesta Responder a este mensaje
#4 Héctor Miguel
22/12/2003 - 06:21 | Informe spam
hola, Des !

'aunque' en enero/2003 'hablamos' de los eventos '_Enter' y '_Exit' en tu consulta de '+ que texto ... testa dura' ;)
y en abril/2003 preguntabas en tu consulta acerca de... 'orden ejecutada dos veces ¿por que?' ;)
'trato de ejemplificar' el funcionamiento de algunos eventos [y su 'comportamiento'] ...
[probado con 8 optionbuttons -'dentro' de un 'frame'-, un textbox -fuera del frame- y un control label -tambien 'fuera'-]

[Des] hay veces ... no vuelve ... el foco en el TextBox ni poniendo, al final del evento click ... Textbox.Setfocus [...]
[hm] la manera 'correcta' de 'mandar' el enfoque a un control 'especifico' es [p.e.] en los eventos de 'otro'control
[Des] No se si te entiendo. ¿puedes explirmelo? ¿y un ejemplo simple? (lo utilizo pero no se si de forma correcta)

1.- en los eventos '_Click' de cada optionbutton, el siguiente codigo [obviamente la numeracion va 'en secuencia']
Private Sub OptionButton1_Click()
Label1 = "Actualmente está seleccionado el botón de opción número 1"
End Sub

2.- 'manejar' el evento '_Change' [en el caso especifico de un textbox] 'resulta' en lo siguiente [p.e.]
Private Sub TextBox1_Change()
MsgBox TextBox1
If Val(Right(TextBox1, 1)) > 0 And Val(Right(TextBox1, 1)) < 9 _
Then Controls("OptionButton" & Right(TextBox1, 1)) = True
End Sub
==> a) 'presenta' el msgbox con el contenido 'actual' del textbox
b) 'luego de aceptar' [el msgbox], se 'activa' el evento '_Click' del 'ultimo' optionbutton 'indicado'
==> el enfoque SIGUE 'retenido' por el textbox <= c) 'en resumen', el msgbox 'se presenta' CON CADA CAMBIO que sucede en el textbox [+ las lineas siguientes]
d) el enfoque [en el textbox] 'se pierde' SOLO al 'cambiar' de control 'activo' =>por raton o teclado<
3.- 'manejar' el evento '_Exit' [mismo textbox] 'resulta' en lo siguiente [p.e.]
==> 'deja' en el evento '_Change' [del textbox] SOLO la linea del msgbox <=Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Val(Right(TextBox1, 1)) > 0 And Val(Right(TextBox1, 1)) < 8 _
Then Controls("OptionButton" & Right(TextBox1, 1)) = True
End Sub
==> 'considerando' que el evento '_Exit' 'ocurre' INSTANTES ANTES de que 'suceda' <== OJO [similar al evento '_Enter']
a) 'mientras' el control tiene 'retenido' el enfoque, NO es necesaria una instruccion 'yo_mismo.SetFocus' :))
b) una vez 'pasado' el enfoque a otro control [raton o teclado], el control NO 'sabe' a cual se le 'pasara' [???]
y la UNICA forma para que lo 'retenga' =>instantes ANTES de que 'lo pierda'< es 'poniendo' en 'True' el 'Cancel' [quizas con una 'comprobacion' de algun otro parametro 'de por medio']

4.- si los optionbuttons son 'operados' por raton o teclado ['independientemente'] ...
y quisieras 'regresarle' [mas bien... 'mandarle'] el enfoque al textbox ...
es necesaria la instruccion =>TextBox1.SetFocus<= [EN los eventos de los optionbuttons]

con respecto de los 'problemas de navegacion' por los controles del formulario ... [hasta donde yo se]
en tiempo de diseño TODOS estan disponibles para el programador y 'TabIndex' y 'TabStop' 'aplican' al modo 'de ejecucion'
[sin embargo] me llama 'la atencion' tu nuevo comentario...

El problema empezo cuando quise mover un marco en diseño y no se donde fue a parar.
Los dos marcos que queban los agrande al maximo para ver si los veia y no lo consegui. (entrando con macros desactivadas)
Quite los marcos pero los problemas persistian.
A partir de ahi, se que generan errores de excepcion general, se cierra Excel y se crea un informe ... he perdido 3 dias de


trabajo.
El problema no son los botones sino las macros creadas ... que no me voy a arriesgar a lanzar en esta situacion.
Noto que excel no absorbe bien los errores, cuando se estan haciendo pruebas.



es {mas que] 'probable' que al eliminar algun/os marco/s =>junto con los controles que 'contenia/n'<= y 'probar' con las macros ...
=>[p.e.] algunas propiedades de algunos controles 'requieren' que dicho control 'pueda ser manejado'<[como ya lo 'has notado'] excel NO 'puede resolver' ese tipo de 'conflictos' [NI en diseño NI en ejecucion] y 'opta' por 'colgarse'
:((

... alguna forma de ... "desproblematizarlo", sin salir de la aplicacion y resetear el ordenador (que es lo que hago)



==> antes de 'sugerirte' algun 'manejo de errores' [aunque ya 'lo hice' en tu mensaje de 'PrintOut'] :\\
te 'recomiendo' 'reconstruir' los objetos 'perdidos' y revisar MUY BIEN sus 'afectaciones' por codigo :((

saludos,
hector.
Respuesta Responder a este mensaje
#5 Desastres
22/12/2003 - 10:52 | Informe spam
Hola Hector.
Doblemente gracias.
Por tu respuesta y por tu paciencia.

'aunque' en enero/2003 'hablamos' de los eventos '_Enter' y '_Exit' en tu consulta de '+ que texto ... testa


dura' ;)
y en abril/2003 preguntabas en tu consulta acerca de... 'orden ejecutada dos veces ¿por que?' ;)



La memoria, entre otras cosas, forma parte del marco MisInsuficiencias.Veo sin embargo que tu estas hecho una
máquina.

Hoy leeré de nuevo un trozo de Platero y yo.
Y, si me disculpas la tozudez, tambien intentaré reproducir , con el minimo de componentes, la situacion que
dió origen a la pregunta , procurarando, con tu beneplacito, exponerte mis "conocimientos" al repecto, para
que puedas valorar mis carencias y facilitarme, si es tu deseo, tus comentarios.

Saludos
Des

Pd. He leido entero tu correo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida