Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

5.11.9 Reihenfolge per Drag and Drop einstellen

5.12 Das ImageList-Steuerelement

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 dem ListView-Steuerelement, das Sie weiter oben bereits kurz kennen gelernt haben und das selbst nur im Entwurf eines Formulars sichtbar ist.

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 zusätzlich ein ImageList-Steuerelement. 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 Ribbon-Eintrag Entwurf|Steuerelemente|ActiveX-Steuerelement einfügen anzeigen. Die Position des eingefügten ImageList-Steuerelements (Microsoft ImageList Control, version 6.0) müssen Sie nicht anpassen, da es in der Formularansicht ohnehin nicht sichtbar ist. Vergeben Sie einen Namen wie imlBilder.

Achten Sie wie bei den anderen ActiveX-Steuerelementen immer darauf, die aktuelle Version des Steuerelements zu verwenden - in diesem Fall ist das die Version 6.0.

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 in der Entwurfsansicht 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 und lässt sich nicht variieren. Wenn Sie unterschiedlich große Abbildungen benötigen, verwenden Sie mehrere ImageList-Steuerelemente (siehe Abbildung 5.45).

Abbildung 5.45: Einstellen der Größe der gespeicherten Images

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 Abbildung 5.46 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.

Abbildung 5.46: Liste der gespeicherten Abbildungen

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 folgende Routine. Die Routine können Sie beispielsweise beim Öffnen des Formulars aufrufen. Sie deklariert zunächst eine Objektvariable des Typs MSComctlLib.ImageList und weisen dieser das im Formular enthaltene ImageList-Steuerelement zu. Dies ist nur dann notwendig, wenn Sie die IntelliSense-Funktion des VBA-Editors verwenden möchten, anderenfalls können Sie auch direkt über den Namen des Steuerelements auf dieses zugreifen.

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

Listing 5.44: ImageList-Steuerelement mit Icons füllen

Die Routine stellt direkt die Eigenschaften Width und Height der Abbildungen ein. Die Clear-Methode leert das ImageList-Steuerelement vor dem Einfügen der Icons. 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-Methode zum Einsatz. Die Routine funktioniert nur richtig, wenn die vier Icon-Dateien sich im gleichen Verzeichnis wie die Datenbank befinden, andernfalls müssen Sie die Routine Ihren Bedürfnissen anpassen.

Mit der Methode LoadPicture der Access.Application-Bibliothek können Sie nur die folgenden Bilddateiformate laden: ICO, CUR, GIF, BMP, WMF, EMF und JPG.

Icons in anderen Steuerelementen verwenden

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

Das TreeView-Steuerelement aus Abbildung 5.47 enthält beispielsweise vier verschiedene Icons. Das Zuweisen der Icons erfolgt am Besten direkt mit dem Aufbauen der Knoten des Baums (weitere Informationen hierzu finden Sie weiter vorne in diesem Kapitel).

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.

    Jedes Element des TreeView-Steuerelements 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 Elements 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.

    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

    Listing 5.45: Einfügen von Bildern aus dem ImageList-Steuerelement in ein TreeView-Steuerelement

    Die Routine füllt den Baum aus Abbildung 5.47, wobei die Abbildungen jeweils explizit mit der jeweiligen Eigenschaft hinzugefügt werden.

    Zentrale Aufbewahrung

    Wenn Sie mehrere Formulare haben, die auf die gleichen Bilder zugreifen, können Sie das ImageList-Steuerelement in einem speziell dafür angelegten - eventuell unsichtbaren - Formular unterbringen. Sie können dann von den anderen Formularen aus zentral auf die Bilder zugreifen und müssen diese nicht mehrfach speichern.

    Abbildung 5.47: TreeView-Steuerelement mit drei verschiedenen Icons

    Nächster Abschnitt:

    5.13 Tipps und Tricks zu Steuerelementen

    © 2006-2008 André Minhorst Alle Rechte vorbehalten.