VBATools

CC1 – ImageComboBox

ImageComboBox to kontrolka ActiveX z zestawu biblioteki Common Controls 1 (plik mscomctl.ocx) dla kompilacji Office 32/64 bit.

Kontrolka służąca do wyboru opcji z listy rozwijanej, w której oprócz danych tekstowych można również zaprezentować obrazy lub ikony reprezentujące te pozycje. ImageCombo współpracuje z kontrolką ImageList aby pobierać zmagazynowaną w projekcie grafikę.

Obrazek

ImageCombo może być również ładowane obrazkami bezpośrednio, jednakże w tym przypadku i tak trzeba odnieść się do plików przetrzymywanych na dysku i załadować je przez ImageList (inne metody w linku). Kontrolki tej używam głownie do zmiany języka interfejsu, zbudowanych formularzy, ładując do kontrolki flagi państw.

Prezentuje jak obsłużyć taki przypadek. Wpierw przygotuje miniaturki flag:

Obrazek

Następnie po dodaniu kontenera grafiki na formę przekazuje doń nazwy plików podczas procedury Initialize, przez co uzyskuje następujący efekt:

Obrazek

Po wybraniu konkretnej pozycji mogę zapamiętać które pole zostało wybrane i od tego uzależnić dalsze postępowanie. W tym przypadku przekazuje tą informację w komunikacie msgbox.

Tak wygląda kod tworzenia listy wyboru i import zdjęć powołując się na ich lokalizację.

Private Sub UserForm_Initialize() 
Const sciezka$ = "c:\TEMP\" 'stała ze ścieżką przetrzymywania plików 
With ImageList1 'ładowanie obrazków do kontrolki 
 .ListImages.Clear 'opróżnienie kontenera z kolekcji plików 
 .ListImages.Add 1, "PL", LoadPicture(sciezka & "pl.gif") 'kolejność, nazwa klucza, plik 
 .ListImages.Add 2, "GB", LoadPicture(sciezka & "gb.gif") 
 .ListImages.Add 3, "DE", LoadPicture(sciezka & "de.gif") 
 .ListImages.Add 4, "RU", LoadPicture(sciezka & "ru.gif") 
 .ListImages.Add 5, "CZ", LoadPicture(sciezka & "cz.gif") 
End With 
With ImageCombo1 
 .ImageList = ImageList1 'przypisanie listy obrazków do listy tworzonych pól listy wyboru 
 .ComboItems.Add 1, "PL", "Polska", "PL" 'określenie klucza, nazwy oraz powołanie się na nazwę obrazka 
 .ComboItems.Add 2, "GB", "English", "GB" 
 .ComboItems.Add 3, "DE", "German", "DE" 
 .ComboItems.Add 4, "RU", "Russian", "RU" 
 .ComboItems.Add 5, "CZ", "Czech", "CZ" 
  
 '.ComboItems.Item("PL").Selected = True 'możliwość określenia konkretnej pozycji podczas uruchomienia 
 Set .SelectedItem = ImageCombo1.ComboItems(1) 'określenie pierwszej pozycji listy 
End With 
End Sub 
 
Private Sub ImageCombo1_Click() 
MsgBox "Wybrano: " & ImageCombo1.SelectedItem.Key, vbInformation, "VBATools.pl" 
End Sub

Jak można zauważyć daje to szerokie możliwości nie tylko wykorzystując flagi, ale również inne oznaczenia graficzne elementów list wzbogacając wygląd naszego interfejsu formularza.


Jeśli uważasz że pokazane materiały są godne polecenia – podziel się tą wiadomością z innymi pozostawiając odnośnik to tego materiału.

(c) Shon Oskar – http://VBATools.pl
Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.