Palabras clave:
formulario, propiedad, personalizadaAutor:
CheaExtraído de:
Hilo de MVP-Access + Teams AUGEAntecedentesEl usuario Dabellaso
pregunta en el foro sobre la posibilidad de asignar propiedades personalizadas a un formulario.
Al mirar la
ayuda de Microsoft se lee que solo se pueden definir para los objetos Index, QueryDef y TableDef.
Posteriormente en el Teams de AUGE, Chea nos explicó que si que existe una forma de asignar propiedades a formularios.
En realidad las propiedades no se guardan en los formularios, sino en el objeto correspondiente de la colección AllForms. Se usa de la misma manera que haríamos para una propiedad personalizada de la base de datos, pero haciendo referencia a AllForms("miformulario"). Por ejemplo:
Para añadir la propiedad:
CurrentProject.AllForms("frmVisorFacturae").Properties.Add "InterfazFirma", True
Para cambiarle el valor:
CurrentProject.AllForms("frmVisorFacturae").Properties("InterfazFirma") = blnNewValue
Para leer el valor:
UsarInterfazFirma = CurrentProject.AllForms("frmVisorFacturae").Properties("InterfazFirma")
Yo lo que hago para que el manejo final me resulte más sencillo es crearme una pareja de procedimientos Property en el módulo del formulario para leer y escribir esa Propiedad.
Al meterlo en los procedimientos Property el resultado es como si usáramos una variable persistente entre sesiones. Le decimos dentro del formulario InterfazFirma = True y ahí se queda hasta que no lo cambiemos aunque cerremos la aplicación.
Horus pregunta: Tengo una duda. Si lo hacemos así, en realidad la propiedad es del formulario en el que la hayamos agregado, no es común para todos los formularios. ¿Es correcto?
Respuesta:En puridad no es una propiedad del formulario, porque no se encuentra en el propio formulario, sino en el AccessObject correspondiente a ese formulario en la colección AllForms. Sin embargo, como esos objetos contienen información de cada formulario, en cierto modo podríamos decir que es una propiedad del formulario. No podemos decir Forms!Miformulario.Mipropiedad, pero sí podemos decir CurrentProject.AllForms("Miformulario").Mipropiedad. Y, efectivamente, la propiedad es para un formulario concreto, no para todos.