Udostępnij za pośrednictwem


selektor kolorów Drop-Down

Struktura wstążki systemu Windows udostępnia wyspecjalizowaną kontrolkę selektora kolorów Drop-Down, która uwidacznia różne ustawienia kolorów za pomocą przycisku podziału i selektora kolorów listy rozwijanej.

Wprowadzenie

Emulując wygląd i funkcjonalność selektora kolorów pakietu Microsoft Office, platforma wstążki może korzystać zarówno z zalet, jak i przyczynić się do spójności i znajomości w wielu aplikacjach.

Adiustacja

Podobnie jak wszystkie kontrolki wstążki, selektor kolorów Drop-Down jest łatwo implementowany i dostosowywany za pomocą znaczników. Platforma udostępnia wiele atrybutów elementów dla selektora kolorów Drop-Down uwidaczniać różne poziomy funkcjonalności. W poniższej tabeli wymieniono atrybuty selektora kolorów Drop-Down.

Atrybut Opis
ColorTemplate Szablony układów określające typ selektora kolorów Drop-Down.
Istnieją trzy szablony, z których każdy określa układ kontrolki i wartości domyślne skojarzonych atrybutów i kluczy właściwości.
  • ThemeColors
  • StandardColors
  • HighlightColors
ChipSize Rozmiar każdego mikroukładu (lub próbki).
  • Small
  • Medium
  • Large
Kolumny Liczba kolumn mikroukładu kolorów (lub próbki).
CommandName Nazwa skojarzonej deklaracji polecenia.
IsAutomaticColorButtonVisible Wyświetla (lub ukrywa) przycisk Automatyczny.
Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors lub StandardColors.
IsNoColorButtonVisible Wyświetla (lub ukrywa) przycisk Brak koloru.
Prawidłowe dla wszystkich wartości ColorTemplate.
RecentColorGridRows Liczba wierszy mikroukładu kolorów (lub próbki) w obszarze Ostatnie kolory.
Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors.
StandardColorGridRows Liczba wierszy mikroukładu (lub próbki) w kolorach Standard obszarze.
ThemeColorGridRows Liczba wierszy mikroukładu kolorów (lub próbki) w kolorach motywu obszarze.
Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors.

Poniższe zrzuty ekranu ilustrują domyślne układy selektora kolorów Drop-Down dla trzech szablonów kolorów.

     
ThemeColors:[newline] zrzut ekranu elementu dropdowncolorpicker z atrybutem colortemplate ustawionym na [newline] standardcolors:[newline] zrzut ekranu elementu dropdowncolorpicker z atrybutem colortemplate ustawionym na [newline] highlightcolors:[newline] zrzut ekranu elementu dropdowncolorpicker z atrybutem colortemplate ustawionym na

Podstawowe znaczniki wymagane dla każdego typu selektora kolorów Drop-Down przedstawiono w następujących przykładach:

Nuta

Selektor kolorów Drop-Down to prawidłowa kontrolka przycisku w szablonie SizeDefinition.

<!-- DropDownColorPickers -->
<Command Name="cmdDropDownColorPickerGroup"
         Symbol="cmdDropDownColorPickerGroup"
         Comment="DropDownColorPicker Group"
         Id="55000"/>
<Command Name="cmdDropDownColorPickerThemeColors"
         Symbol="cmdDropDownColorPickerThemeColors"
         Comment="DropDownColorPicker ThemeColors"
         Id="55010"
         LabelTitle="ThemeColors"
         LabelDescription="ThemeColors\ndescription."/>
<Command Name="cmdDropDownColorPickerStandardColors"
         Symbol="cmdDropDownColorPickerStandardColors"
         Comment="DropDownColorPicker StandardColors"
         Id="55011"
         LabelTitle="StandardColors"/>
<Command Name="cmdDropDownColorPickerHighlightColors"
         Symbol="cmdDropDownColorPickerHighlightColors"
         Comment="DropDownColorPicker HighlightColors"
         Id="55012"
         LabelTitle="HighlightColors"/>

<Group CommandName=&quot;cmdDropDownColorPickerGroup&quot;
       SizeDefinition=&quot;ThreeButtons&quot;>
  <DropDownColorPicker
    CommandName=&quot;cmdDropDownColorPickerThemeColors&quot;
    ColorTemplate=&quot;ThemeColors&quot;/>
  <DropDownColorPicker
    CommandName=&quot;cmdDropDownColorPickerStandardColors&quot;
    ColorTemplate=&quot;StandardColors&quot;/>
  <DropDownColorPicker
    CommandName=&quot;cmdDropDownColorPickerHighlightColors&quot;
    ColorTemplate=&quot;HighlightColors&quot;
    StandardColorGridRows=&quot;1&quot;/>
</Group>

Kod

Jako wyspecjalizowana kontrolka, która obsługuje dostosowywanie, każda implementacja selektora kolorów Drop-Down, która korzysta z tych możliwości, wymaga wyspecjalizowanego kodu aplikacji do zarządzania właściwościami i obsługi wszystkich poleceń wystawionych przez kontrolkę.

Właściwości

Struktura wstążki definiuje kolekcję kluczy właściwości dla kontrolki selektora kolorów Drop-Down.

Zazwyczaj właściwość selektora kolorów Drop-Down jest aktualizowana w interfejsie użytkownika wstążki przez unieważnienie polecenia skojarzonego z kontrolką za pomocą wywołania metody IUIFramework::InvalidateUICommand. Zdarzenie unieważniania jest obsługiwane, a zdefiniowane właściwości są aktualizowane przez metodę wywołania zwrotnego IUICommandHandler::UpdateProperty wywołania zwrotnego.

Metoda wywołania zwrotnego IUICommandHandler::UpdateProperty nie jest wykonywana, a aplikacja odpytuje zaktualizowaną wartość właściwości, dopóki właściwość nie będzie wymagana przez strukturę. Na przykład po aktywowaniu karty i ujawnieniu kontrolki w interfejsie użytkownika wstążki lub po wyświetleniu etykietki narzędzia.

Nuta

W niektórych przypadkach właściwość można pobrać za pomocą metody IUIFramework::GetUICommandProperty i ustawić za pomocą metody IUIFramework::SetUICommandProperty.

W poniższej tabeli wymieniono klucze właściwości skojarzone z kontrolką selektora kolorów Drop-Down.

Klucz właściwości Opis Notatki
UI_PKEY_AutomaticColorLabel Definiuje etykietę przycisku koloru automatycznego.
Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors lub StandardColors.
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty.
UI_PKEY_Color Definiuje wybraną wartość koloru jako COLORREF.
Prawidłowe tylko wtedy, gdy UI_PKEY_ColorType ma wartość UI_SWATCHCOLORTYPE_RGB.
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty.
UI_PKEY_ColorType Definiuje wybrany typ koloru.
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty.
UI_PKEY_Enabled Definiuje możliwość reagowania na interakcję użytkownika z kontrolką.
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty.
UI_PKEY_Keytip Można aktualizować tylko za pomocą unieważnienia.
UI_PKEY_Label Definiuje ciąg znaków dla etykiety kontrolki.
Można aktualizować tylko za pomocą unieważnienia.
UI_PKEY_LargeHighContrastImage Definiuje duży obraz o dużym kontraście do wyświetlenia dla kontrolki.
Można aktualizować tylko za pomocą unieważnienia.
Aby uzyskać więcej informacji na temat formatów obrazów, zobacz Określanie zasobów obrazów wstążki.
UI_PKEY_LargeImage Definiuje duży obraz do wyświetlenia dla kontrolki.
Można aktualizować tylko za pomocą unieważnienia.
Aby uzyskać więcej informacji na temat formatów obrazów, zobacz Określanie zasobów obrazów wstążki.
UI_PKEY_MoreColorsLabel Definiuje etykietę dla przycisku Więcej kolorów....
Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors lub StandardColors.
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty.
UI_PKEY_NoColorLabel Definiuje etykietę przycisku Brak koloru.
Prawidłowe dla wszystkich wartości ColorTemplate.
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty.
UI_PKEY_RecentColorsCategoryLabel Definiuje etykietę dla kategorii Ostatnie kolory.
Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors. Jest to jedyny szablon zawierający kategorie oznaczone etykietami.
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty.
UI_PKEY_SmallHighContrastImage Definiuje mały obraz o dużym kontraście do wyświetlenia dla kontrolki.
Można aktualizować tylko za pomocą unieważnienia.
Aby uzyskać więcej informacji na temat formatów obrazów, zobacz Określanie zasobów obrazów wstążki.
UI_PKEY_SmallImage Definiuje mały obraz do wyświetlenia dla kontrolki.
Można aktualizować tylko za pomocą unieważnienia.
Aby uzyskać więcej informacji na temat formatów obrazów, zobacz Określanie zasobów obrazów wstążki.
UI_PKEY_StandardColors Definiuje tablicę wartości COLORREF dla próbek selektora kolorów Drop-Down.
Każdy selektor kolorów Drop-Down ColorTemplate zawiera siatkę StandardColors.
Uwaga: wartości COLORREF z początkowej StandardColorGridRows x kolumn tablic y są wyświetlane. Jeśli tablica definiuje mniej kolorów niż liczba StandardColors próbki zadeklarowane w znacznikach, puste spacje są wyświetlane dla brakujących chipów.
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty.
UI_PKEY_StandardColorsCategoryLabel Definiuje etykietę dla kolorów Standardowa kategorii.
Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors. Jest to jedyny szablon zawierający kategorie oznaczone etykietami.
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty.
UI_PKEY_StandardColorsTooltips Definiuje tablicę ciągów etykietek narzędzi do próbkowania kolorów dla siatki StandardColors.
Każdy selektor kolorów Drop-Down ColorTemplate zawiera siatkę StandardColors.
Uwaga: Używane są tylko te wskazówki dotyczące narzędzi wymagane do oznaczania etykietami kolorów próbek wyświetlanych w siatce StandardColors. W przypadku podania mniejszej liczby etykiet niż liczba próbek w siatce StandardColors zostanie podana wartość domyślna dla pozostałych próbek.
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty.
UI_PKEY_ThemeColors Definiuje tablicę wartości COLORREF dla próbek selektora kolorów Drop-Down.
Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors.
Uwaga: wartości COLORREF z początkowej ThemeColorGridRows x Kolumny tablicy są wyświetlane. Jeśli tablica definiuje mniej kolorów niż liczba ThemeColors próbki zadeklarowane w znacznikach, puste spacje są wyświetlane dla brakujących chipów.
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty.
UI_PKEY_ThemeColorsTooltips Definiuje tablicę ciągów etykietek narzędzi do próbkowania kolorów dla siatki ThemeColors.
Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors.
Uwaga: Używane są tylko te wskazówki dotyczące narzędzi wymagane do oznaczania etykietami kolorów próbek wyświetlanych w siatce ThemeColors. W przypadku podania mniejszej liczby etykiet niż liczba próbek w siatce ThemeColors zostanie podana wartość domyślna dla pozostałych próbek.
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty.
UI_PKEY_ThemeColorsCategoryLabel Definiuje etykietę kolorów motywu kategorii.
Prawidłowe tylko wtedy, gdy ColorTemplate ma wartość ThemeColors. Jest to jedyny szablon zawierający kategorie oznaczone etykietami.
Obsługuje IUIFramework::GetUICommandProperty i IUIFramework::SetUICommandProperty.
UI_PKEY_TooltipDescription Definiuje ciąg znaków opis etykietki narzędzia skojarzony z UI_PKEY_TooltipTitle.
Można aktualizować tylko za pomocą unieważnienia.
UI_PKEY_TooltipTitle Definiuje ciąg znaków dla etykietki narzędzia Polecenia.
Można aktualizować tylko za pomocą unieważnienia.

Programy obsługi poleceń

Metoda IUICommandHandler::UpdateProperty służy do dostosowywania selektora kolorów Drop-Down za pomocą kluczy właściwości wymienionych powyżej. W poniższym przykładzie pokazano, jak ustawić próbki kolorów selektora kolorów Drop-Down na podstawie niestandardowych preferencji stylu lub niestandardowej siatki próbkowania zadeklarowanej w znacznikach.

STDMETHODIMP DropDownColorPickerHandler::UpdateProperty(
              UINT nCmdID,
              __in REFPROPERTYKEY key,
              __in_opt const PROPVARIANT* ppropvarCurrentValue,
              __out PROPVARIANT* ppropvarNewValue)
{
  HRESULT hr = E_NOTIMPL;
  if (key == UI_PKEY_ThemeColors)
  {
    COLORREF rThemeColors[TOT_THEME_COLORS];
    for (LONG i = 0; i < ARRAYSIZE(rThemeColors); i++)
    {
      // any COLORREF
      rThemeColors[i] = RGB(0, 255, 0); 
    }
    hr = InitPropVariantFromUInt32Vector(
           &rThemeColors, ARRAYSIZE(rThemeColors), ppropvarNewValue);
  }

  else if (key == UI_PKEY_StandardColors)
  {
    ULONG rStandardColors[TOT_STANDARD_COLORS];
    for (LONG i = 0; i < ARRAYSIZE(rStandardColors); i++)
    {
      // any COLORREF
      rStandardColors[i] = RGB(255, 0, 0); 
    }
    hr = InitPropVariantFromUInt32Vector(
           &rStandardColors, ARRAYSIZE(rStandardColors),ppropvarNewValue);
  }

  else if (key == UI_PKEY_ThemeColorsTooltips)
  {
    BSTR rThemeTooltips[TOT_THEME_COLORS];
    for (LONG i = 0; i < ARRAYSIZE(rThemeTooltips); i++)
    {
      // any constant character string
      rThemeTooltips[i] = L"Green"; 
    }
    hr = InitPropVariantFromStringVector((PCWSTR *)&rThemeTooltips, 50, ppropvarNewValue);
  }
  else if (key == UI_PKEY_StandardColorsTooltips)
  {
    static BSTR rStandardTooltips[TOT_STANDARD_COLORS];
    for (LONG i = 0; i < ARRAYSize(rStandardTooltips); i++)
    {
      // any constant character string
      rStandardTooltips[i] = L"Red"; 
    }
    hr = InitPropVariantFromStringVector(
           (PCWSTR *)&rStandardTooltips, 20, ppropvarNewValue);
  }
  return hr;
}

W poniższym przykładzie pokazano implementację metody IUICommandHandler::Execute, która uwidacznia kolory selektora kolorów Drop-Down aplikacji wstążki.

STDMETHODIMP DropDownColorPickerHandler::Execute(
                 UINT nCmdID,
                 UI_EXECUTIONVERB verb,
                 __in_opt const PROPERTYKEY* key,
                 __in_opt const PROPVARIANT* ppropvarValue,
                 __in_opt IUISimplePropertySet* pCommandExecutionProperties)
{
  HRESULT hr = E_NOTIMPL;
  if (*key == UI_PKEY_ColorType)
  {
    UI_SWATCHCOLORTYPE uType = 
      (UI_SWATCHCOLORTYPE)PropVariantToUInt32WithDefault(
        *ppropvarValue, 
        UI_SWATCHCOLORTYPE_NOCOLOR);

    COLORREF color;
    switch(uType)
    {
      case UI_SWATCHCOLORTYPE_RGB:
        PROPVARIANT var;
        pCommandExecutionProperties->GetValue(UI_PKEY_Color, &var);
        color = PropVariantToUInt32WithDefault(var, 0);
        break;
      case UI_SWATCHCOLORTYPE_AUTOMATIC:
        color = COLOR_WINDOWTEXT;
        break;
      case UI_SWATCHCOLORTYPE_NOCOLOR:
        color = MSONoFill;
        break;
    }

    // do with your color what you will...
    gInternalColor = color;
    hr = S_OK;
  }
  return hr;
}

biblioteka kontrolek struktury wstążki systemu Windows

element znaczników DropDownColorPicker

właściwości selektora kolorów

dostosowywanie wstążki za pomocą definicji rozmiarów i zasad skalowania

DropDownColorPicker Sample