CITA1:
Re: Asignar Fecha a un campo mediante un boton
por Cascabel » Jue May 27, 2010 5:26 pm
(...). Para obtener el formulario, debes trepar por el modelo del botón y más arriba, hasta llegar a Evento.Source.Model.Parent, que es el formulario en sí.
En esquema:
Código:
Evento.Source--->Botón
.Model--->Modelo del botón
.Parent--->Formulario
.GetByName("datk_fecha_sal")--->Campo de fecha
CITA2:
(Trozo de código de GESTFACTURA.ODB de Ramón Muñoz)
Sub PonerCampos( Evento )
Dim oFrm As Object
oFrm = Evento.Source.Model.Parent
'Hay que pasar el foco a otro control y hacer una pausa en el Runtime (0 milisegundos es suficiente)
'para que el listbox guarde el valor correcto en el origen de datos
'yo paso el control al campo "Nota"
Dim oCtrl As Object
oCtrl = oFrm.Parent.Parent.GetByName("Nota")
oCtrl = oFrm.Parent.Parent.Parent.Parent.CurrentController.GetControl(oCtrl)
oCtrl.SetFocus
(...)
Estoy aprendiendo OOo. (intentando, al menos).En Access lo sabia hacer casi todo, pero mi empresa ha decidido pasarse al software libre. Writer y Calc está ya practicamente superado. Casi todas las macros que tenía en Excel/Word ya las he podido transformar. Pero en Base... Puf, Eso es harina de otro costal... El libro de Mauricio me está ayudando pero en algunos apartados me quedo un pelín corto.
Uno de estos momentos es en la duda que me surge: La palabra reservada “Parent” hace referencia al formulario, pero corregidme si me equivoco:
NO puedo coger una macro creada para un formulario específico y acoplarlo a otro, pues el árbol o la dependencia de ese formulario puede ser diferente a la macro origen.¿es así, no? En Access el código era tan sencillo como Me.Marcas!CodMarca.SetFocus pero aquí...Si veis lo que he puesto en negrita en la CITA2 se me hace un poco cuesta arriba...
Si hago un formulario que llama a otro formulario y este a su vez a otro. (Por ejemplo, el menu principal en un formulario llamado “MAIN”, que llama a un formulario llamado “Vehiculos” y este a otro que se llama “Marcas”) Cuando hago un SetFocus en el campo CodMarca del ultimo formulario debo de poner... ¿Cuantos “Parent”? y... ¿Me valdría la macro si ese mismo formulario es llamado desde “MAIN”?
Ante todo: Gracias!
[RESUELTO]Duda sobre la palabra reservada "Parent"
[RESUELTO]Duda sobre la palabra reservada "Parent"
Última edición por castleshe el Mié Sep 08, 2010 5:58 pm, editado 1 vez en total.
Somos lo que programamos...
Windows XP SP3
OpenOffice 3.3
Windows XP SP3
OpenOffice 3.3
Re: Duda sobre la palabra reservada "Parent"
Hola...
Al principio cuesta un poco de trabajo, pero después le toma uno el modo y descubre su gran potencial. Hay un concepto muy importante que tienes que comprender a cabalidad si quieres avanzar en tu aprendizaje, claro, si deseas aprender. Uno de ellos es el concepto Modelo-Vista, lo trato superficialmente en mi libro, si sabes ingles esta corta lectura te ayudará: http://wiki.services.openoffice.org/wik ... w_Paradigm
En los ejemplos, cuando haces:
Estas accediendo al modelo del control, en este caso el que se llama datk_fecha_sal, pero muy importante, accedes a través del modelo del control (Evento.Source) que llama a la rutina, desde donde accedes al formulario (Parent) que lo contiene, esto no tiene por que ser así, puedes declarar y usar todos tus controles al abrir el formulario. Para enviar el cursor a un control, al ser este visible, tienes que acceder a la vista del control, pues es esta vista la que tiene el método setFocus, para un control que no esta visible, no hay una razón técnica para enviarle el cursor. Para acceder a la vista, tiene que hacerse a través del controlador del documento, OJO, recuerda que todos los formularios, son realmente documentos de Writer con ciertas características funcionando como "contendedores" de los formularios y los controles, en el segundo ejemplo:
Primero se accede al modelo (Model) del control, después se accede a su vista (View), después ya puedes usar el método setFocus, aquí se ve complicado, por como accedes desde un nivel más bajo, tienes que ir subiendo en la jerarquía de objetos (Parent.Parent.Parent.Parent), hasta llegar al deseado, esto, de nuevo, no tiene por que ser así, tanto los formularios como el documento que lo contiene, tienen eventos de apertura y carga que puedes usar perfectamente para declarar todas las variables de objeto que necesites e iniciarlos en el momento que consideres para usarlos cuando quieras.
Hay muchas posibilidades, mi recomendación es que no desesperes, en estos foros encontraras mucha gente dispuesta a ayudarte con respuestas de mucha calidad (técnica y humana), pero debes de tener siempre en mente que OOo Basic, no es VBA, es simplemente diferente.
Estoy en preparación de mi siguiente libro que es precisamente Base, espero no tardar mucho y todavía te sirva.
Saludos
Al principio cuesta un poco de trabajo, pero después le toma uno el modo y descubre su gran potencial. Hay un concepto muy importante que tienes que comprender a cabalidad si quieres avanzar en tu aprendizaje, claro, si deseas aprender. Uno de ellos es el concepto Modelo-Vista, lo trato superficialmente en mi libro, si sabes ingles esta corta lectura te ayudará: http://wiki.services.openoffice.org/wik ... w_Paradigm
En los ejemplos, cuando haces:
Código: Seleccionar todo
Evento.Source--->Botón
.Model--->Modelo del botón
.Parent--->Formulario
.GetByName("datk_fecha_sal")--->Campo de fechaCódigo: Seleccionar todo
oCtrl = oFrm.Parent.Parent.GetByName("Nota")
oCtrl = oFrm.Parent.Parent.Parent.Parent.CurrentController.GetControl(oCtrl)
oCtrl.SetFocusHay muchas posibilidades, mi recomendación es que no desesperes, en estos foros encontraras mucha gente dispuesta a ayudarte con respuestas de mucha calidad (técnica y humana), pero debes de tener siempre en mente que OOo Basic, no es VBA, es simplemente diferente.
Estoy en preparación de mi siguiente libro que es precisamente Base, espero no tardar mucho y todavía te sirva.
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Duda sobre la palabra reservada "Parent"
Vaya... altamente instructivo...me he quedado sin palabras... Gracias Mauricio, espero con muchísima impaciencia tu siguiente libro. Mientras, no dudes que me seguiré dedicando en cuerpo y alma al aprendizaje de OOo.
PD.- Interesante vínculo.
PD.- Interesante vínculo.
Somos lo que programamos...
Windows XP SP3
OpenOffice 3.3
Windows XP SP3
OpenOffice 3.3