El sáb, 25-02-2006 a las 05:37, Ismael Fanlo escribió: > Hola, Alexandro! > [...] > > 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]
