Das ImageList-Steuerelement

Die beiden Steuerelemente TreeView und ListView sind praktische Helfer, wenn es um die Darstellung von Daten in hierarchischer oder Listenform geht. Beide können sogar Icons anzeigen. Diese beziehen sie ausschließlich aus dem ImageList-Steuerelement, das vorher mit diesen Icons gefüllt werden muss. Wie Sie dies erledigen, zeigt der vorliegende Artikel.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in den Datenbanken 1311_ImageList.mdb und 1311_ImageList.accdb (für die Beispiele mit Anlage-Feld).

ImageList-Steuerelement hinzufügen

Das ImageList-Steuerelement finden Sie wie die übrigen Steuerelemente der Klasse MSCOMCTL.ocx in dem Dialog, den Sie mit einem Klick auf den Eintrag ActiveX-Steuerelemente öffnen (siehe Bild 1).

öffnen des Dialogs zum Hinzufügen von ActiveX-Steuerelementen

Bild 1: öffnen des Dialogs zum Hinzufügen von ActiveX-Steuerelementen

Damit öffnen Sie einen Dialog, der alle verfügbaren ActiveX-Steuerelemente anzeigt. Hier wählen Sie den Eintrag Microsoft ImageList Control, version 6.0 aus (siehe Bild 2).

Auswahl des ImageList-Steuerelements aus der Liste der ActiveX-Steuerelemente

Bild 2: Auswahl des ImageList-Steuerelements aus der Liste der ActiveX-Steuerelemente

Nach dem Hinzufügen entweder per Doppelklick oder durch Markieren und anschließendes Betätigen der OK-Schaltfläche erscheint das Steuerelement recht unscheinbar in der linken oberen Ecke des Zielformulars (siehe Bild 3).

Ein sonst leeres Formular mit einem ImageList-Steuerelement

Bild 3: Ein sonst leeres Formular mit einem ImageList-Steuerelement

Noch interessanter wird es, wenn Sie nun in die Formularansicht wechseln – das Steuerelement ist dann nämlich gar nicht mehr zu sehen. Das ist auch kein Wunder, denn es soll schlicht und einfach als Container für die in TreeView– und ListView-Steuerelementen anzuzeigenden Icons dienen.

Bevor wir uns das Steuerelement genauer ansehen, geben wir ihm noch einen Namen – in diesem Fall ctlImageList.

Eigenschaften des ImageList-Steuerelements

Wenn Sie in der Entwurfsansicht des Formulars mit der rechten Maustaste auf das ImageList-Steuerelement klicken, können Sie den Kontextmenü-Eintrag ImageListCtlObject|Properties auswählen. Dies öffnet den Dialog aus Bild 4. Sie können aber auch einfach doppelt auf das Steuerelement klicken!

Eigenschaftsfenster des ImageList-Steuerelements

Bild 4: Eigenschaftsfenster des ImageList-Steuerelements

Der Eigenschaften-Dialog hat zwei Registerseiten. General enthält allgemeine Einstellungen wie etwa die Größe der gespeicherten Icons, Images ist für die Verwaltung der eigentlichen Bilder verantwortlich.

Auf der Seite General stellen sie zunächst die Größe ein, in der die Icons im ListView– oder TreeView-Steuerelement angezeigt werden sollen. Diese Einstellung können Sie nur vornehmen, wenn das ImageList-Steuerelement noch keine Icons enthält. üblicherweise zeigt etwa ein TreeView-Steuerelement seine Icons in der Größe 16 x 16 Pixel an. Sie können diese aber nach Wunsch auch in der Größe 32 x 32 oder 48 x 48 Pixel anzeigen – oder eine ganz andere Größe verwenden. Dazu wählen Sie die Option Custom und geben die Höhe und die Breite für die beiden Eigenschaften Height und Width ein.

Wichtig ist an dieser Stelle der Hinweis, dass die Icons immer an die gewählte Größe angepasst werden.

ImageList-Steuerelement manuell füllen

Wenn Sie dem ImageList-Steuerelement Bilder hinzufügen möchten, wechseln Sie zur Registerseite Images. Dort finden Sie als wichtigstes Element eine Schaltfläche namens Insert Picture vor (siehe Bild 5).

Icons zum ImageList-Steuerelement hinzufügen

Bild 5: Icons zum ImageList-Steuerelement hinzufügen

Ein Klick auf diese Schaltfläche öffnet einen Dialog zum Auswählen eines oder mehrerer Icons. Das Problem bei der Sache ist: Abhängig von den Eigenschaften der Bilddatei, die Sie hinzufügen möchten, kommt es gelegentlich zur Fehlermeldung Invalid Picture.

Sollten Sie über Bilddateien verfügen, die sich problemlos hinzufügen lassen, können Sie zusätzlich noch die beiden Eigenschaften Key und Tag für ein Bild einstellen.

Wichtig ist die Key-Eigenschaft: Sie muss einen eindeutigen Wert enthaltenen und identifiziert etwa beim Hinzufügen eines im ImageList-Steuerelement gespeicherten Icons in ein TreeView-Steuerelement das gewünschte Bild.

Sie können allerdings auch den numerischen Index des hinzuzufügenden Bilds angeben.

ImageList-Steuerelement per VBA füllen

Wenn Sie über Icons verfügen, die in einem Format vorliegen, dass sich nicht manuell in das ImageList-Steuerelement importieren lässt, können Sie dies per VBA erledigen. Hier gibt es zahlreiche Varianten – Sie können die Bilder direkt aus einem Verzeichnis importieren, aus dem OLE-Feld einer Tabelle oder auch aus einem Anlage-Feld (siehe hierzu auch die Artikel Bilder in Access, Teil II: Bilder in OLE-Feldern und Anlage-Felder und VBA).

Bilder aus dem Dateisystem importieren

Im ersten Beispiel gehen wir davon aus, dass sich die Icons, die Sie in einem Steuerelement wie etwa einem TreeView anzeigen möchten, in einem Ordner im Dateisystem befinden, in diesem Fall im gleichen Verzeichnis wie die Datenbank-Datei.

Ziel ist es, die vier Icons wie in Bild 6 in einem TreeView-Steuerelement abzubilden. Das Beispiel finden Sie im Formular frmImageListVBA_Dateisystem.

TreeView-Steuerelement mit einigen Beispiel-icons aus dem Dateisystem

Bild 6: TreeView-Steuerelement mit einigen Beispiel-icons aus dem Dateisystem

Wir schauen uns zunächst den Vorgang für ein einzelnes Icon an. Dazu deklarieren Sie zunächst zwei Objektvariablen, um das ImageList-Steuerelement und das TreeView-Steuerelement zu referenzieren:

Dim objTreeView As MSComctlLib.TreeView
Dim objImageList As MSComctlLib.ImageList

Dann legen Sie eine Ereignisprozedur an, die durch das Ereignis Beim Laden des Formulars ausgelöst wird. Dieses deklariert zwei weitere Variablen, nämlich objPicture, um zwischenzeitlich einen Verweis auf das in aus der Datei in den Speicher geladene Icon zu referenzieren und strPicture, um den Namen der Bilddatei zu speichern:

Private Sub Form_Load()
    Dim objPicture As stdole.StdPicture
    Dim strPicture As String

Im ersten Schritt setzt die Prozedur dann den Verweis auf das ImageList-Steuerelement:

    Set objImageList =                  Me!ctlImageList.Object

Dann speichert die Prozedur den Namen der hinzuzufügenden Bilddatei, hier add.png, in der Variablen strPicture (wir benötigen diesen Namen später mehrmals):

    strPicture = "add.png"

Nun liest die Prozedur die Bilddatei in die Variable objPicture ein. Dazu nutzt sie eine Funktion aus dem Modul mdlOGL0713, das einige für die Verwendung von Bildern wichtige Funktionen bereithält.

Dieses Modul müssen Sie, wenn Sie die Funktion in eigenen Datenbanken verwenden möchten, zum VBA-Projekt der jeweiligen Datenbank hinzufügen. Die Funktion erwartet den Pfad der einzulesenden Datei als Parameter:

    Set objPicture =            mdlOGL0713.LoadPictureGDIP(                  CurrentProject.Path                     & "\" & strPicture)

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar