Hey, Santiago!

Gracias!!  me ayudas a entender "la cosa"...
:-)))

(en unos días consultaré algo más relativo a esa "calculadooora"; tu
asesoramiento me ayudará mucho a resolverlo)

2006/2/27, Santiago Bosio
El sáb, 25-02-2006 a las 05:37, Ismael Fanlo escribió:
> > No puedo estar de acuerdo contigo... el Basic de OOo necesita _mucho_ más
> > tiempo que el VBA.  Y la causa es ese endiablado sistema de servicios e
> > interfaces que me pone de los nervios.  La arquitectura de objetos de MSO es
> > mucho más comprensible para los seres humanos.   La de OOo sólo la entienden
> > los programadores de java (creo que corría uno por este hilo... disfrutará!)
> > :-)
>
> Y yo no puedo contradecirte, porque nunca he programado con VBA, sólo
> con StarBasic. Podríamos decir que estoy "en la vereda de enfrente" como
> se dice por aquí.
>
> Sí estoy de acuerdo que el paradigma que se implementa en UNO es dificil
> de atacar y entender. Te mareas con tantos servicios e interfaces; y
> también estoy de acuerdo contigo en que se parece más a Java que a otra
> cosa.
>
> Lo más importante (a mi juicio), que se debe comprender es el paradigma
> MVC (model / view / controller) en el manejo de los documentos
> http://api.openoffice.org/docs/DevelopersGuide/OfficeDev/OfficeDev.xhtml, y 
> del paradigma MV (model / view) en el manejo de formularios y controles 
> http://api.openoffice.org/docs/DevelopersGuide/Forms/Forms.xhtml.
>
> (no sé si en algún lado está traducido al castellano la guía del
> desarrollador, pero sería una muy buena tarea).
>
> > Por ejemplo, he dedicado horas buscando un método equivalente al setFocus
> > del VBA.  Estoy (de hecho ya es funcional) haciendo una calculadora
> > integrable en OOo y deseo que cuando se pulse una tecla de un dígito, el
> > control correspondiente tome el enfoque.  Pues estoy desesperado tras horas
> > de búsqueda y buceo en el SDK... mi limitación con el idioma tampoco ayuda.
> > :-(
>
> Aquí hay un ejemplo del MV. Para establecer el foco necesitas acceder a
> la vista (view) del control, y no al modelo, que es lo que utilizas
> generalmente en el código para modificar sus propiedades, como por
> ejemplo establecer el valor de un campo de texto.
>
> Lo primero es acceder a los controles suponiendo que conoces cuál es el
> modelo del control al que quieres pasar el foco. El modelo del control
> puedes obtenerlo a través del formulario. Un ejemplo, digamos que el
> usuario presionó el '1' y tú quieres pasarle el foco a un botón llamado
> 'boton1' dentro del formulario. Suponiendo que mantienes una referencia
> al formulario en el objeto 'oFormulario', lo logras con
>
> Dim oBoton1 as Variant
>
> oBoton1 = oFormulario.getByName("boton1") ' oBoton1 es la referencia al 
> XControlModel del control
>
> Los controles no están asociados al formulario, sino al controlador del
> documento. Supongo que esto es por que forma parte de la interacción con
> el usuario.
>
> Para obtener el control (XControl) asociado a un XControlModel lo debes
> hacer a través del método getControl de la interfaz XControlAccess, que
> está asociada al controlador del documento actual.
>
> Aquí te pongo un Sub útil para el tema del foco:
>
> '
> ' Esta subrutina pasa el foco al control del formulario asociado al modelo 
> 'oControlModel'.
> '
> Sub setFocus (oControlModel As Variant)
>
>         Dim oController As Variant
>         Dim oControl As Variant
>
>         oController = ThisComponent.getCurrentController
>         oControl = oController.getControl (oControlModel)
>         oControl.setFocus
>
> End Sub
>
>
> Si lo llamas con el modelo obtenido en el paso previo, lograrás pasar el
> foco al control que tú quieras.
>
> Espero no confundirte más...
>
> Saludos,
>
> Santiago.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


--
Ismael Fanlo

http://superalumnos.net
"Sólo el conocimiento nos hace libres"

http://apif.info
Asociación de Profesores de Informática Freelance

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Responder a