Compartir a través de


Enumerar y agregar categorías

En este ejemplo se muestra cómo enumerar las categorías y agregar una categoría a la lista principal de categorías.

Ejemplo

Nota:

El siguiente ejemplo de código es un fragmento de Programming Applications for Microsoft Office Outlook 2007 (Programación de aplicaciones para Microsoft Office Outlook 2007).

El modelo de objetos de Microsoft Outlook admite categorías que ayudan a organizar los elementos de la Bandeja de entrada del usuario. Para mantener un mayor nivel de organización, puede hacer lo siguiente:

  • Clasifique los elementos de Outlook y muéstrelos por categoría.
  • Aplicar varias categorías de color a un solo elemento de Outlook.
  • Agrupar y ordenar elementos de Outlook por categoría de color.
  • Asignar teclas de método abreviado a cada categoría de color, lo que permite a los usuarios asignar más fácilmente categorías a los elementos.
  • Cree, elimine y cambie las categorías de color mediante programación o mediante una acción del usuario en la interfaz de usuario de Outlook.

Para exponer la funcionalidad de las categorías, el modelo de objetos de Outlook proporciona un objeto Category que representa una categoría de color definida por el usuario en la lista de categorías principales. La lista principal de categorías contiene categorías de color que se presentan en la interfaz de usuario de Outlook. La lista se representa mediante la colección Categories del objeto NameSpace. Para crear un objeto Category, use el método Add(String, Object, Object) de la colección Categories. Al crear un objeto Category, se crea un identificador único global (GUID). Este identificador no se puede cambiar. Se representa mediante la propiedad CategoryID. No obstante, el nombre, el color y la tecla de acceso directo asociados a una categoría de color pueden cambiarse estableciendo las propiedades Name, Color y ShortcutKey, respectivamente, del objeto Category. La propiedad Color puede cambiarse estableciendo u obteniendo su constante OlCategoryColor. Para reproducir el color de un control personalizado, utilice las siguientes propiedades de solo lectura del objeto Category:

Estas propiedades devuelven un valor OLE_COLOR , que depende de la propiedad Color del objeto Category .

Los elementos de Outlook se muestran en función del nombre de categoría. Cada objeto de elemento tiene una propiedad Categories que almacena una cadena delimitada por comas que representa los nombres de categoría. (Por ejemplo, para el objeto MailItem , usaría la propiedad MailItemCategories ). Esto le permite agregar una categoría al elemento, incluso si no existe la categoría en la lista de principal de categorías.

Nota:

Si la propiedad Categories de un elemento contiene un nombre de categoría que no está en la colección Categories del objeto NameSpace, el nombre de categoría asociado a ese elemento de Outlook se muestra, pero sin un color asociado. La propiedad Categories en un objeto Item no devuelve una colección Categories.

En el ejemplo de código siguiente, el primer procedimiento, EnumerateCategories, obtiene la lista principal de categorías del usuario actual representada mediante la colección Categories. Después enumera los objetos Category de la colección y escribe las propiedades Name y CategoryID en los agentes de escucha de seguimiento de la colección Listeners. El segundo procedimiento, AddACategory, obtiene la lista principal de categorías del usuario actual y usa el método CategoryExists para comprobar si existe una categoría denominada "ISV" en la colección. Si no existe ninguna categoría con el nombre "ISV", AddACategory agrega una categoría denominada "ISV" a la lista principal de categorías y le asigna un color azul oscuro mediante el método Add de la colección Categories. También asigna CTRL+F11 como la tecla de método abreviado para la categoría.

using Outlook = Microsoft.Office.Interop.Outlook;
private void EnumerateCategories()
{
    Outlook.Categories categories =
        Application.Session.Categories;
    foreach (Outlook.Category category in categories)
    {
        Debug.WriteLine(category.Name);
        Debug.WriteLine(category.CategoryID);
    }
}

private void AddACategory()
{
    Outlook.Categories categories =
        Application.Session.Categories;
    if (!CategoryExists("ISV"))
    {
        Outlook.Category category = categories.Add("ISV",
            Outlook.OlCategoryColor.olCategoryColorDarkBlue,
            Outlook.OlCategoryShortcutKey.olCategoryShortcutKeyCtrlF11);
    }
}

private bool CategoryExists(string categoryName)
{
    try
    {
        Outlook.Category category = 
            Application.Session.Categories[categoryName];
        if(category != null)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    catch { return false; }
}

Vea también