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]

Responder a