Mostrar pestañas contextuales
En una aplicación de marco de la cinta de Opciones de Windows, una pestaña contextual es un control Tab oculto que se muestra en la fila de fichas cuando se selecciona o resalta un objeto en el área de trabajo de la aplicación, como una imagen.
Introducción
A diferencia de las pestañas principales, que contienen varios comandos comunes que son relevantes independientemente del contexto del área de trabajo, las pestañas contextuales suelen contener uno o varios comandos que se aplican solo a un objeto seleccionado o resaltado.
Cuando se selecciona o resalta un objeto en el área de trabajo de la aplicación, el tipo y el contexto del objeto pueden requerir comandos dispares que no tengan sentido organizativo o funcional en una pestaña contextual. En estos casos, pueden ser necesarias varias pestañas contextuales, que se encuentran dentro de un grupo de pestañas. Por ejemplo, la selección de una imagen contenida en una celda de tabla puede requerir dos pestañas contextuales que exponen la funcionalidad de tabla e imagen.
Nota
Además de varias pestañas contextuales, el marco de la cinta de opciones también admite varios controles de grupo de pestañas dentro de una cinta de opciones.
Al mostrar pestañas contextuales, el marco de la cinta de opciones aplica un conjunto básico de comportamientos que incluyen:
- Las pestañas contextuales se colocan en el orden en que se declaran y a la derecha de las pestañas principales de la fila de fichas de la cinta de opciones.
- Cuando se cambia el tamaño de la cinta de opciones, las pestañas se escalan y las etiquetas de tabulación se truncan según sea necesario el espacio. Sin embargo, a las pestañas contextuales visibles se les asigna una prioridad de visualización más alta en la que se escalan y se truncan en último lugar.
- La etiqueta de un grupo de pestañas se muestra en la barra de título de la aplicación y abarca todas las pestañas contextuales asociadas.
- Cuando se muestran varios controles de grupo de pestañas al mismo tiempo, se asigna uno de los cinco colores únicos al fondo de cada grupo de pestañas en la barra de título de la aplicación. Este color también se usa como color de resaltado para las pestañas contextuales del grupo de fichas.
- La asignación de color de grupo de pestañas se basa en el orden en que los elementos De grupo de pestañas se declaran en marcado. El marco define los colores y la aplicación no puede especificar los colores.
- Los colores del grupo de pestañas definidos por el marco se pueden modificar indirectamente a través de las claves de propiedad Propiedades del marco de trabajo. Para obtener más información, vea Personalización de colores de la cinta de opciones.
- Cuando se muestran más de cinco controles de grupo de pestañas en cualquier momento, el marco recorre los colores asociados.
- El número máximo de controles Tab de una cinta de opciones está limitado a 100. Esto incluye pestañas contextuales, visibles o no.
En la captura de pantalla siguiente se muestra una pestaña contextual de Windows 7 Paint.
Implementación de pestañas contextuales
En esta sección se describen los detalles de implementación de las pestañas contextuales de la cinta de opciones y se explica cómo incorporarlos en una aplicación de cinta de opciones.
marcado
En los ejemplos siguientes se muestra el marcado básico de un elemento TabGroup que contiene dos pestañas contextuales.
En esta sección de código se muestran las declaraciones TabGroup y Tab Command.
<!-- Contextual Tabs -->
<Command Name='cmdContextualTab1'
LabelTitle='Contextual Tab 1'
Symbol='ID_CONTEXTUALTAB1'/>
<Command Name='cmdContextualTab2'
LabelTitle='Contextual Tab 2'
Symbol='ID_CONTEXTUALTAB2'/>
<Command Name='cmdContextualTabGroup'
LabelTitle='Contextual Tabs'
Symbol='ID_CONTEXTUALTAB_GROUP'/>
En esta sección de código se muestran las declaraciones de control necesarias para mostrar dos pestañas contextuales dentro de un TabGroup.
<Ribbon.ContextualTabs>
<TabGroup CommandName='cmdContextualTabGroup'>
<Tab CommandName='cmdContextualTab1'>
<!--InRibbonGallery Group-->
<Group CommandName='cmdInRibbonGalleryGroup'
SizeDefinition='OneInRibbonGallery'>
<InRibbonGallery CommandName='cmdTextSizeGallery3'
HasLargeItems='true'
ItemHeight='32'
ItemWidth='32'
MaxColumns='3' >
<InRibbonGallery.MenuLayout>
<FlowMenuLayout Columns='3'
Gripper ='Corner'/>
</InRibbonGallery.MenuLayout>
</InRibbonGallery>
</Group>
<!--Command Galleries Group-->
<Group CommandName='cmdCommandGalleriesGroup'
SizeDefinition='OneInRibbonGallery'>
<InRibbonGallery CommandName='cmdCommandGallery1'
Type='Commands'
MaxRows='3'
MaxColumns='3'>
<InRibbonGallery.MenuLayout>
<FlowMenuLayout Columns='3'
Gripper ='Corner'/>
</InRibbonGallery.MenuLayout>
</InRibbonGallery>
</Group>
</Tab>
<Tab CommandName='cmdContextualTab2'></Tab>
</TabGroup>
</Ribbon.ContextualTabs>
Código
UI_PKEY_ContextAvailable es la clave de propiedad única definida por el marco para especificar la visibilidad y el estado de las pestañas contextuales. Cuando se selecciona un objeto en el área de trabajo de la aplicación, esta propiedad se puede asignar uno de los tres valores de la enumeración UI_CONTEXTAVAILABILITY que definen si existe una pestaña contextual y, si es así, si se muestra como la pestaña activa.
Una aplicación solicita una actualización de grupo de pestañas invalidando y actualizando la propiedad UI_PKEY_ContextAvailable cuando cambia el contexto del área de trabajo.
En las secciones siguientes del código se muestra cómo mostrar una pestaña contextual cuando se selecciona una imagen en un área de trabajo de la aplicación.
// Initialize the image tools contextual tab visibility setting.
UI_CONTEXTAVAILABILITY g_ImageTools = UI_CONTEXTAVAILABILITY_NOTAVAILABLE;
// Called when an image is selected in the application.
void SelectImage()
{
...
g_ImageTools = UI_CONTEXTAVAILABILITY_ACTIVE;
// Invalidate the UI_PKEY_ContextAvailable property of the image tools
// contextual tab Command and trigger the UpdatePropery callback function.
pUIFramework->InvalidateUICommand(
cmdImageTabSet,
UI_INVALIDATIONS_PROPERTY,
UI_PKEY_ContextAvailable);
...
}
// Update Tab Group properties.
HRESULT MyTabGroupCommandHandler::UpdateProperty(
UINT nCmdID,
REFPROPERTYKEY key,
const PROPVARIANT* ppropvarCurrentValue,
PROPVARIANT* ppropvarNewValue)
{
HRESULT hr = E_FAIL;
if (key == UI_PKEY_ContextAvailable)
{
hr = UIInitPropertyFromUInt32(key, g_ImageTools, ppropvarNewValue);
}
...
return hr;
}
Temas relacionados