W poprzedniej notce opisałem jak w prosty sposób zaprojektować listę rozwijaną z własną grafiką.
Lista vs. Galeria
Kontrolka dropdown świetnie realizuje to zadanie, jednak nie sprawdza się tak dobrze w sytuacji gdy danych na liście jest więcej. Powód jest prosty – znalezienie odpowiedniego wpisu jest trudniejsze i trwa znacznie dłużej.
W takiej sytuacji na pomoc przychodzi galeria. Ta bardzo zaawansowana kontrolka pozwala wyświetlać użytkownikowi dane zorganizowane w formie tablicy gdzie listę wierszy i kolumn określamy samodzielnie, podobnie jak wielkość obrazków.
W poniższym przykładzie galeria wyświetla nazwy i flagi wszystkich państw należących do Unii Europejskiej. Po wybraniu odpowiedniego kraju, jego nazwa zostaje sczytana do zaznaczonych komórek arkusza.
Screen
Kod XML
> <group
id="GrupaUniaEuropejskka"
label="Kraje Unii Europejskiej">
<gallery
columns="3"
id="galKraje"
image="UE_png"
label="Wybierz kraj UE"
rows="9"
onAction="galKraje_onAction">
<item
id="Austria"
image="Austria_png"
label="Austria"/>
<item
id="Belgia"
image="Belgia_png"
label="Belgia"/>
<item
id="Bułgaria"
image="Bulgaria_png"
label="Bułgaria"/>
<item
id="Cypr"
image="Cypr_png"
label="Cypr"/>
<item
id="Czechy"
image="Czechy_png"
label="Czechy"/>
<item
id="Dania"
image="Dania_png"
label="Dania"/>
<item
id="Estonia"
image="Estonia_png"
label="Estonia"/>
<item
id="Finlandia"
image="Finlandia_png"
label="Finlandia"/>
<item
id="Francja"
image="Francja_png"
label="Francja"/>
<item
id="Grecja"
image="Grecja_png"
label="Grecja"/>
<item
id="Hiszpania"
image="Hiszpania_png"
label="Hiszpania"/>
<item
id="Holandia"
image="Holandia_png"
label="Holandia"/>
<item
id="Irlandia"
image="Irlandia_png"
label="Irlandia"/>
<item
id="Litwa"
image="Litwa_png"
label="Litwa"/>
<item
id="Łotwa"
image="Lotwa_png"
label="Łotwa"/>
<item
id="Luksemburg"
image="Luksemburg_png"
label="Luksemburg"/>
<item
id="Malta"
image="Malta_png"
label="Malta"/>
<item
id="Niemcy"
image="Niemcy_png"
label="Niemcy"/>
<item
id="Polska"
image="Polska_png"
label="Polska"/>
<item
id="Portugalia"
image="Portugalia_png"
label="Portugalia"/>
<item
id="Rumunia"
image="Rumunia_png"
label="Rumunia"/>
<item
id="Słowacja"
image="Slowacja_png"
label="Słowacja"/>
<item
id="Słowenia"
image="Slowenia_png"
label="Słowenia"/>
<item
id="Szwecja"
image="Szwecja_png"
label="Szwecja"/>
<item
id="Węgry"
image="Wegry_png"
label="Węgry"/>
<item
id="Wielka_Brytania"
image="Wielka_Brytania_png"
label="Wielka Brytania"/>
<item
id="Włochy"
image="Wlochy_png"
label="Włochy"/>
</gallery >
</group >
Kod Makra
Kod sczytujący nazwę kraju do komórek arkusza to:
Public Sub galKraje_onAction(control As IRibbonControl, selectedId As String, selectedIndex As Integer)
'
' Code for onAction callback. Ribbon control gallery
If TypeOf Selection Is Excel.Range Then
Selection.Value = Replace(selectedId, "_", " ")
End If
End Sub