Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 1/2006.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Verwenden Sie das ImageList-Steuerelement, um Bilder datenbankintern zu speichern und für verschiedene Zwecke bereitzustellen.

Techniken

Formulare, ImageList-Steuerelement, VBA

Voraussetzungen

Access 2002 und höher oder Access 97/2000 und Developer Edition oder Visual Studio 6.0

Beispieldateien

Treeview2002.mdb

Das ImageList-Steuerelement

André Minhorst, Duisburg

Die Einträge in Steuerelementen wie dem Treeview-Steuerelement oder dem Listview-Steuerelement werden aus optischen und praktischen Gründen gerne mit Icons versehen. Dies funktioniert am einfachsten mit einem weiteren Steuerelement, das allerdings nur im Entwurf eines Formulars sichtbar ist: dem ImageList-Steuerelement. Wie Sie mit diesem Steuerelement umgehen, erfahren Sie in diesem Beitrag.

ImageList einfügen

Wenn Sie das Treeview- oder das Listview-Steuerelement in einem Formular verwenden und die Listeneinträge mit Icons versehen möchten, benötigen Sie ein weiteres Steuerelement namens ImageList.

Dieses Steuerelement fungiert als eine Art "Container" für Images und stellt diese bei Bedarf zur Verfügung.

Ausgehend von einem Formular, das bereits das gewünschte Listview- oder Treeview-Steuerelement enthält, müssen Sie das ImageList-Steuerelement zunächst hinzufügen. Dazu verwenden Sie den Dialog ActiveX-Steuerelement einfügen, den Sie über den Menüpunkt Einfügen/ActiveX-Steuerelement... anzeigen (s. Abb. 1).

Achten Sie darauf, immer die aktuelle Version des Steuerelements zu verwenden - in diesem Fall ist das die Version 6.0. Wenn Ihre Anwendung mehrere Steuerelemente der CommonControls-Sammlung enthält, sollten Sie außerdem immer die gleiche Version einsetzen.

Abb. 1: Einfügen des ImageList-Steuerelements

Das Steuerelement wird dann oben links im Formular eingefügt. Sie müssen seine Position nicht verändern, da es ohnehin nicht sichtbar ist. Sie sollten ihm allerdings einen anständigen Namen wie etwa ctlImageList geben (s. Abb. 2).

Abb. 2: Das ImageList-Steuerelement in der Entwurfansicht eines Formulars.

Abb. 3: Einstellen der Größe der gespeicherten Images

Abb. 4: Liste der gespeicherten Abbildungen

Füllen des ImageList-Steuerelements

Bevor Sie Bilder aus dem ImageList-Steuerelement in einem Treeview- oder einem ähnlichen Steuerelement anzeigen können, müssen Sie diese Bilder im ImageList-Steuerelement speichern. Dazu gibt es, wie unter Access üblich, mindestens zwei verschiedene Wege.

Manuelles Füllen der ImageList

Die erste Variante erfordert lediglich einen Doppelklick auf das ImageList-Steuerelement und die Auswahl der gewünschten Abbildungen auf der zweiten Registerseite des Dialogs Eigenschaften von ImageListControl.

Zuvor können Sie auf der ersten Seite festlegen, welche Größe die gespeicherten Abbildungen beim Anzeigen im entsprechenden Steuerelement aufweisen sollen. Diese Einstellung gilt übrigens für alle Abbildungen (s. Abb. 3).

Zum Einfügen einer Abbildung klicken Sie auf der zweiten Registerseite auf die Schaltfläche Bild einfügen... und wählen im nun folgenden Dialog die einzufügende Bilddatei aus. Sollten wie in Abb. 4 bereits Bilder in der Liste enthalten sein, markieren Sie das Bild, hinter dem die neue Abbildung eingefügt werden soll.

Dies ist umso wichtiger, wenn Sie bereits Bilder in einem Steuerelement per Ordinalzahl referenzieren - wenn Sie ein neues Bild an erster Stelle einfügen, verschieben sich alle anderen Bilder um eine Position.

Einfügen von Bildern per VBA

Natürlich können Sie die Abbildungen auch per VBA in das ImageList-Steuerelement einfügen. Dazu verwenden Sie etwa die Routine aus Quellcode 1. Die Routine können Sie beispielsweise beim Öffnen des Formulars aufrufen. Sie deklariert zunächst eine Objektvariable des Typs MSComctlLib.ImageList und weist dieser das im Formular enthaltene ImageList-Steuerelement zu. Dies ist nur dann notwendig, wenn Sie die IntelliSense-Funktion des VBA-Editors verwenden möchten.

Dann stellt die Routine die Eigenschaften Width und Height der Abbildungen ein, die Sie schon von Abb. 3 kennen. Die Clear-Methode leert das ImageList-Steuerelement. Die Anweisung in der anschließenden For Next-Schleife füllt die ersten vier Plätze des Steuerelements mit den Icon-Dateien namens Icon001.ico, Icon002.ico und so weiter. Dabei kommt die LoadPicture-Funktion zum Einsatz. Die Routine funktioniert nur richtig, wenn die vier Icon-Dateien sich im gleichen Verzeichnis wie die Datenbank befinden (s. Abb. 5), andernfalls müssen Sie die Routine an Ihre Bedürfnisse anpassen.

Quellcode 1: ImageList-Steuerelement mit Icons füllen

Private Sub LoadImages()

    Dim objImagelist As MSComctlLib.ImageList

    Dim i As Integer

    Set objImagelist = Me.ctlImageList.Object

    With objImagelist

        .ImageHeight = 16

        .ImageWidth = 16

        .ListImages.Clear

        For i = 1 To 4

            .ListImages.Add i, "icon" & Format(i, "000"), LoadPicture(CurrentProject.Path _
                & "\icon" & Format(i, "000") & ".ico")

        Next i

    End With
End Sub

Abb. 5: Diese Icons werden in das ImageList-Steuerelement eingefügt.

Icons in anderen
Steuerelementen verwenden

Zum Anzeigen der Icons aus dem ImageList-Steuerelement in einem anderen Steuerelement wie dem Treeview-Steuerelement ist wiederum der Einsatz von VBA gefragt.

Das Treeview-Steuerelement aus Abb. 6 enthält beispielsweise vier verschiedene Icons. Das Zuweisen der Icons erfolgt optimalerweise direkt mit dem Aufbauen der Knoten des Baums.

Es gibt zwei Möglichkeiten zum Zuweisen der gewünschten Abbildung:

  • direkt beim Anlegen des Knotens mit dem entsprechenden Parameter der Add-Methode
  • nach dem Anlegen des Knotens durch Zuweisen des Index-Wertes der Abbildung an die Eigenschaft Image des dem Knoten entsprechenden Node-Objekts.
  • In beiden Fällen müssen Sie der Eigenschaft ImageList des Treeview-Steuerelements das ImageList-Steuerelement zuweisen.

    Jeder Knoten enthält zusätzlich zwei Eigenschaften namens SelectedImage und ExpandedImage. Diesen Eigenschaften können Sie die Ordinalzahl der Bilder aus dem ImageList-Steuerelement zuweisen, die beim entsprechenden Zustand des Knotens angezeigt werden sollen.

    Der Index der beim ausgeklappten Zustand des Knotens anzuzeigenden Abbildung kann ebenfalls mit der Add-Methode angegeben werden.

    Die Eigenschaft SelectedImage kann jedoch nur in Zusammenhang mit einem bestehenden
    Node-Objekt verwendet werden.

    Quellcode 2: Einfügen von Bildern aus dem ImageList-Steuerelement in ein Treeview-Steuerelement

    Private Sub BeispielPictureText()

        Dim objNode As MSComctlLib.Node

        Dim i As Integer

        Dim j As Integer

        Dim k As Integer

        Set objImagelist = Me.ctlImageList.Object

        objTreeview.ImageList = objImagelist

        objTreeview.Style = tvwPictureText

        For i = 1 To 5

            Set objNode = objTreeview.Nodes.Add(, , "node" & Format(i, "00"), _
                "Eintrag " & Format(i, "00"))

            objNode.Image = 1

            objNode.ExpandedImage = 2

            For j = 1 To 5

                Set objNode = objTreeview.Nodes.Add("node" & Format(i, "00"), tvwChild, "node" _
                    & Format(i, "00") & Format(j, "00"), "Eintrag " & Format(i, "00") _
                    & Format(j, "00"))

                objNode.Image = 3

                For k = 1 To 5

                    Set objNode = objTreeview.Nodes.Add("node" & Format(i, "00") & Format(j, "00"), _
                        tvwChild, "node" & Format(i, "00") & Format(j, "00") & Format(k, "00"), _
                        "Eintrag " & Format(i, "00") & Format(j, "00") & Format(k, "00"))

                    objNode.Image = 4

                Next k

            Next j

        Next i

    End Sub

    Die Routine aus Quellcode 2 füllt den Baum aus Abb. 6, wobei die Abbildungen jeweils explizit mit der jeweiligen Eigenschaft hinzugefügt werden.

    Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

    Sind Sie Abonnent?Jetzt einloggen ...
     

    Kompletten Artikel lesen?

    Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

    E-Mail:

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.