Hola Alejandro,
Alejandro Rivas Morán escribió:
--- Ariel Constenla-Haile
<[EMAIL PROTECTED]> escribió:
Alejandro Rivas Morÿffffffffffe1n escribió:
Saludos
Tengo un pequeño cuadro de dialogo con 4 textbox
llamados: nombre, apellido, edad y origen
El cuadro está en la librería REGISTROS y el el
diálogo INGRESO de tal manera que la referencio así:
dim cuadrodialogingreso as object
dim datonombre, datoape, datoedad, datoorigen
cuadrodialogingreso=CreateunoDialog(DialogLibraries.REGISTROS.INGRESO)
datonombre=
cuadrodialogingreso.GetControl("nombre").text
datoape=
cuadrodialogingreso.GetControl("apellido").text
datoedad=
cuadrodialogingreso.GetControl("edad").text
datonorigen=
cuadrodialogingreso.GetControl("origen").text
Hasta hoy sé como asignar el foco a un cuadro con,
por ejemplo:
cuadrodialogingreso.GetControl("nombre").SetFocus()
Necesito establecer la ubicación del foco, pues
resulta que cuando van llenando los cuadros a veces
mueven el cursor a otro cuadrotexto y el proceso se
distorciona
¿ Cómo podría saber en cual cuadro está el foco?
asignando un focus listener a cada control, tendrás
una notificación
cuando el control recibe/pierde el foco:
http://api.openoffice.org/docs/common/ref/com/sun/star/awt/XFocusListener.html
La forma más fácil de implementarlo es simplemente
asignando una macro
mediante la ventana Propiedades - Eventos (en la
versión en inglés están
las opciones "When receiving focus" y "When losing
focus").
Gracias Ariel.
Estoy en camino de experimentar lo sugerido por Ud.
Esta vez le solicito una ayudita mas. ¿ Como puedo
lograr que cuando el cursor sea pasado de un
cuadrotextbox al otro, quede seleccionado el contenido
de dicho cuadrotextbox.
para no correr el riesgo de reinventar la rueda, necesitaría saber con
claridad que andas buscando.
Si entendí bien la primera vez, deseas controlar el orden en que los
controles de tu diálogo reciben foco; y ahora deseas que el texto se
seleccione automáticamente al recibir foco el control.
Ambas cosas pueden hacerse sin necesidad de recurrir a ninguna macro:
desde la ventana "Propiedades", las propiedades "Tabstop"(define si a un
control se puede acceder mediante la tecla de tabulación ) y "Tab
order" (el orden en que se recorren los controles mediante la tecla de
tabulación) [no me acuerdo la versión castellana, pero no es difícil de
darse cuenta].
A esto le puedes sumar lo que se llama "mnemonics", y consiste en
escribir ~ delante de una letra, luego presionando alt + esa letra,
recibirá el foco el control (si es conveniente, como en el caso de
botones, por ejemplo en el texto del botón escribes Ace~ptar, al
presionar alt+p el botón recibe el foco) o el control que le sigue en el
"Tab order" (en el caso de etiquetas [fixed text/ labels])
http://wiki.services.openoffice.org/wiki/Documentation/DevGuide/GUI/Label_Field
http://wiki.services.openoffice.org/wiki/Mnemonics_ES
Un ejemplo concreto puedes verlo en
http://www.ArielConstenlaHaile.com.ar/ooo/temp/dlg_focus.odt
mediante la tecla tabulación se navega por el diálogo en un orden
preestablecido. Al recibir el foco, se selecciona el texto en los
cuadros de texto que tengan. Si presionas ALT + el carácter subrayado en
la etiqueta delante de cada cuadro de texto, el cuadro recibe el foco.
Todo esto sin macros.
De cualquier modo, si quieres saber cómo se selecciona texto mediante
programación: todos los controles que permiten el ingreso de texto
implementan la interfaz com.sun.star.awt.XTextComponent, que tiene un
método setSelection():
http://api.openoffice.org/docs/common/ref/com/sun/star/awt/XTextComponent.html#setSelection
ejemplificado en el diálogo que cité arriba.
Saludos
Ariel.
--
Ariel Constenla-Haile
La Plata, Argentina
[EMAIL PROTECTED]
[EMAIL PROTECTED]
http://www.ArielConstenlaHaile.com.ar/ooo/
"Aus der Kriegsschule des Lebens
- Was mich nicht umbringt,
macht mich härter."
Nietzsche Götzendämmerung, Sprüche und Pfeile, 8.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]