Veo que te aplicas...
La razón es que los controles de los formularios, tienen dos niveles de
acceso, el nivel "modelo" y el nivel "vista", el modelo ya lo vimos en el
ejemplo anterior, y efectivamente, en este nivel de acceso no existe el
método setFocus como correctamente te lo informa el editor de OOo Basic,
para poder usar este método, hay que entrar a la "vista" del control, lo
cual hacemos a travez del "modelo", lo cual creo, quedara más claro con un
ejemplo que completa lo que quieres.
Modifica la misma macro para que quede de la siguiente manera:
Sub PierdeFoco()
Dim sTmp As String
Dim PaginaDibujo As Object
Dim Formulario As Object
Dim txtPruebas As Object, txtPruebasVista As Object
Dim oControlador As Object
PaginaDibujo =
ThisComponent.getCurrentController.getActiveSheet.getDrawPage
Formulario = PaginaDibujo.Forms.getByName("frmPruebas")
txtPruebas = Formulario.getByName("txtPruebas")
sTmp = Trim(txtPruebas.Text())
If sTmp = "" Then
MsgBox "Es campo no puede estar vacio"
oControlador = ThisComponent.getCurrentController()
txtPruebasVista = oControlador.getControl(txtPruebas)
txtPruebasVista.setFocus()
Else
MsgBox sTmp
End If
End Sub
Ahora si, pruebala y notaras que cuando el campo esta vacio, nos muestra el
mensaje de notificación y el foco regresa el control...
Aun sigo sin entender muy bien las razones de la diferencia en "modelo" y
"vista", ojala que algún buen samaritano nos ilustre al respecto. Esta es
una de las razones por las que no me gusta mucho trabajar con formularios,
prefiero los cuadros de dialogo que ya tengo bastante "domesticados"...
Ojala resuelva tu duda...
Saludos a todos...
Mauricio
El 10 de septiembre de 2008 14:50, Manuel Andres Ramirez <
[EMAIL PROTECTED]> escribió:
> Gracias Mauricio por tu tiempo.
>
> Seguí tus indicaciones la macro funciona según lo esperado.
>
> Pero la modifiqué para aclarar mi inquietud sobre el foco así:
>
>> Veamos un ejemplo...
>>
>>
>>
>> Sub PierdeFoco()
>> Dim sTmp As String
>> Dim PaginaDibujo As Object
>> Dim Formulario As Object
>> Dim txtPruebas As Object
>>
>> PaginaDibujo =
>> ThisComponent.getCurrentController.getActiveSheet.getDrawPage
>> Formulario = PaginaDibujo.Forms.getByName("frmPruebas")
>> txtPruebas = Formulario.getByName("txtPruebas")
>> sTmp = txtPruebas.Text()
>>
>>
> If sTmp = "" Then
> msgbox "digite un valor", 0 ,"Error de datos"
> txtPruebas.setFocus()
> Else
> MsgBox sTmp
> end if
> End Sub
>
>>
>>
> Y en la linea txtPruebas.setFocus() me genera el error "Propiedad o Método
> no encontrados"
>
> He probado con Xray para conocer las propiedades y métodos de los objetos
> pero tampoco he podido encontrar el adecuado para establecer el Foco a la
> caja de texto.
>
>
>
>
> --
> Manuel Andrés Ramírez P.
> Administrador Informático
> GNU/Linux Registered User:412887
>
> Visite:www.obtengalinux.org
>
> "El placer más noble es el júbilo de comprender"
> (Leonardo Da Vinci)
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
--
_______________________________
Todo lo que no es dado es perdido