Use un programa en LotusScript cambiar los iconos de la base de datos
¿Es usted una de esas personas que no han salido del área de trabajo en las Notas 5 o 6? Si es así, usted probablemente ha llegado a amar a los pequeños iconos en cada una de las bases de datos. Este truco muestra cómo cambiar el icono con LotusScript mediante la creación de un agente de noche, por lo que cada día los usuarios tendrán un nuevo icono para ver. Usted podría incluso configurarlo para que el icono se cambia cada vez que abra la base de datos. Creo que esto es una estupidez? Te puedo decir por experiencia que la aplicación de esta hace que los usuarios quieren entrar en la base de datos. Ellos quieren ver lo que el "icono de la jornada" es, y luego terminan de leer la información en la base de datos.
Hay tres cosas que usted necesita saber para poder cambiar el icono de la base de datos. En primer lugar, usted necesita saber que el icono es en realidad un documento de Notes (al igual que todos los elementos de diseño) para que pueda ser manipulado como cualquier documento de Notes. En segundo lugar, la imagen real se almacena en un campo especial denominado IconBitmap. En tercer lugar, usted necesita saber la ubicación (en la base de datos) del icono de lo que se puede obtener y manipular la misma. Que la ubicación varía de base de datos para bases de datos. Hay muchas maneras en las Notas 4 y 5 para encontrar la ubicación mediante programación utilizando la API de Notes. Notas 6 introdujo una nueva forma con la clase NotesNoteCollection nuevo. Pero que en realidad es una exageración para este ejercicio, debido a la ubicación del icono, una vez que la base de datos ha sido creada, es fijo. Así que sólo hay que mirar hacia arriba una vez y establecer el valor. Si usted desea hacer esta secuencia de comandos genérica y portátil, entonces usted puede mirar en forma dinámica conseguir una manija en el icono de documento. Pero aquí sólo tendremos que mirar hacia arriba una vez y dejarlo en eso.
Para buscar la ubicación del icono de documento, en las Notas 5 vaya a Resources \ Otros en el cliente de diseño, o en las notas 6 ir a otros recursos de base de datos \. Resaltar el icono (no haga doble clic sobre ella como si lo iban a editar) e ir a Propiedades del diseño. Y tomar nota de la identificación del documento (el valor que empiece por "NT"). Este es un valor hexadecimal, y esta es la ubicación del documento en el icono de base de datos. Eso es lo que necesita para obtener un identificador para el elemento de diseño como un documento.
Sub Inicializar
Sesión de As NotesSession Nueva
Dim db como NotesDatabase
IconDoc As NotesDocument
NuevoDoc As NotesDocument
Elemento As NotesItem
Set db = session.CurrentDatabase
Establecer iconDoc = db.GetDocumentById ("13E")
Establecer nuevoDoc = db.createdocument
Llame newDoc.ReplaceItemValue ("Forma", "frmIcon")
Llame newDoc.replaceItemValue ("Descr", "(no descritas)")
Conjunto de objetos = iconDoc.GetFirstItem ("IconBitmap")
Llame item.CopyItemToDocument (nuevoDoc "IconBitmap")
Llame newDoc.Save (True, True, True)
End Sub
El valor "13E" es el lugar de la hexagonal de los elementos de diseño icono de la base de datos de muestra. Lo más probable será diferente en cada base de datos. Este agente se encuentra que los elementos de diseño, a continuación, copia el campo IconBitmap en un nuevo documento (documento normal, no un elemento de diseño). El nuevo documento llega un campo de formulario y un campo de descripción. Esto se hace sólo para que el documento puede aparecer en puntos de vista, como lo hace en la base de datos de la muestra. El documento no tiene que aparecer en las vistas si no lo quiere.
Una vez que tenga los documentos de construcción, se convierte en una cuestión de cambiar de campo en el documento IconBitmap icono del diseño actual con el mismo campo en uno de estos documentos previamente. La base de datos de la muestra tiene un agente que los swaps en el icono de la base de datos actual con el icono almacenado en el documento seleccionado.
Para crear un "icono de la época" del agente programado, tendrá que tener primero la base de datos de iconos en alguna parte que el agente programado puede tener acceso. En las Notas 5, tiene que estar en el mismo servidor que el agente programado. En las notas 6, los agentes programados pueden acceder a otros servidores, siempre y cuando sean de confianza, por lo que la base de datos podría estar en otro servidor. El agente programado encuentra la nota de diseño de iconos, y luego escoge aleatoriamente un nuevo icono y sustituye al campo IconBitmap. Aquí hay un agente que hace el trabajo:
Sub Inicializar
Sesión de As NotesSession Nueva
Dim currDb Como NotesDatabase
IconDoc As NotesDocument
Dim iconDb Como NotesDatabase
IconColl As NotesDocumentCollection
IconPos As largo
NewIconDoc As NotesDocument
Elemento As NotesItem
Selección aleatoria
Establecer currDb = session.CurrentDatabase
Establecer iconDoc = currDb.GetDocumentById ("11A")
Si iconDoc es nada Then Exit Sub
Establecer iconDb = session.GetDatabase ("", "icons.nsf")
Si iconDb es nada Then Exit Sub
Establecer iconColl = iconDb.AllDocuments
Si iconColl es nada Then Exit Sub
iconPos = Int (Rnd () * iconColl.Count)
Establecer newIconDoc = iconColl.GetNthDocument (iconPos)
Si newIconDoc es nada Then Exit Sub
Si no newIconDoc.HasItem ("IconBitmap") Then Exit Sub
Llame iconDoc.RemoveItem ("IconBitmap")
Conjunto de objetos = newIconDoc.GetFirstItem ("IconBitmap")
Si el elemento es nada Then Exit Sub
Llame item.CopyItemToDocument (iconDoc "IconBitmap")
Llame icondoc.Save (True, True, True)
End Sub
Tenga en cuenta que "11A" es la ubicación del icono en la base de datos voy a cambiar por una noche, y "icons.nsf" es el camino a mi fuente "Icons Of The Day" base de datos (la base de datos de la muestra). El agente saca al azar un icono de todos los documentos disponibles fuente de iconos, y luego reemplaza el campo especial en el elemento de la base de datos actual icono del diseño con el mismo campo especial del documento de origen.
Disfrute de cambiar el icono de su base de datos todas las noches!
Visto 7230 veces por 2364 espectadores













