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]
