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.6 ListView-Steuerelement mit Daten füllen

5.11.7 Icons im ListView-Steuerelement

Einer der großen Vorteile des ListView-Steuerelements gegenüber dem Listenfeld von Access ist die Möglichkeit, Images und Icons anzuzeigen. Damit lassen sich sowohl Ansichten ähnlich der Miniaturansicht im Windows Explorer als auch normale Listeneinträge mit kleinen Icons anzeigen.

ListView-Steuerelement mit Bildern

Das ListView-Steuerelement bietet mit seinen verschiedenen Ansichten unterschiedliche Möglichkeiten zur Darstellung von Bildern. Interessant ist dies etwa für Anwendungszwecke wie dem Anzeigen von Thumbnails oder zum Hinzufügen von Anwendungssymbolen zu Dateilisten. Diese beiden Fälle lernen Sie in den folgenden Abschnitten kennen.

Keine Bilder ohne ImageList

Das ListView-Steuerelement zeigt keine Bilder ohne ImageList-Steuerelement an. Das ImageList-Steuerelement ist ein Container für Bilddateien, der entweder im Entwurf oder auch zur Laufzeit mit Bilddateien gefüllt werden kann. Die Bilder eines ImageList-Steuerelements werden von Windows intern auf einer unsichtbaren Grafikfläche untergebracht, die man sich als ein rechteckiges Raster von Einzelbildern vorstellen kann - so wie die Zellen einer Tabelle. Damit es ein Einzelbild anhand des Index ermitteln kann, müssen die Zellen alle gleich groß sein.

Die Gesamtfläche der Grafik ist durch die Ressourcen des Windows-GDI je nach Betriebssystem auf ca. 32 MB begrenzt, was bedeutet, dass die Grafik bei 32-Bit-Auflösung etwa unter WinXP eine maximale Ausdehnung von ca. 2.800 x 2.800 Pixel haben kann. Ein ImageList-Steuerelement kann also nur eine begrenzte Menge von Einzelbildern aufnehmen.

Weitere Informationen zum ImageList-Steuerelement finden Sie weiter unten unter 5.12, »Das ImageList-Steuerelement«.

Im Beispiel sollen die Dateien eines Verzeichnisses in einem ListView-Steuerelement angezeigt werden - einschließlich des Icons für den jeweiligen Dateityp. Das Ergebnis soll wie in Abbildung 5.41 aussehen.

Abbildung 5.41: Das ListView-Steuerelement zeigt eine Liste von Dateien an

Die Daten zu diesem Beispiel stammen aus der Tabelle tblDateien, die lediglich das Verzeichnis und den Dateinamen einer Datei speichert (siehe Abbildung 5.42).

Das ImageList- und das ListView-Steuerelement dieses Beispiels heißen lvwDateien und ctlIcons. Die Eigenschaft View des ListView-Steuerelements muss für die Anzeige von Textspalten inklusive Icon auf 3- lvwReport eingestellt werden (diese Einstellungen nehmen Sie entweder im Eigenschaften-Dialog des Steuerelements oder per VBA vor). Damit Sie Dateien zum Löschen markieren können, aktivieren Sie außerdem die Eigenschaft FullRowSelect.

Abbildung 5.42: Aufbau der Tabelle tblDateien

Das Formular enthält eine Schaltfläche namens cmdDateiHinzufuegen, die mit der Prozedur aus dem folgenden Listing einen Dialog zum Auswählen einer oder mehrerer Dateien öffnet und die Dateien über die Routine DateiSpeichern (siehe Listing 5.29) in der Tabelle tblDateien speichert. Die Funktion zum Anzeigen des Dateidialogs finden Sie im Modul mdlTools. Nach dem Speichern der Dateiinformationen ruft die Ereignisprozedur cmdDateiHinzufuegen_Click noch die Routine AnzeigeAktualisieren auf (siehe Listing 5.30). Diese Routine enthält die Funktionalität zum Füllen des ListView-Steuerelements.

Private Sub cmdDateiHinzufuegen_Click()
    Dim strDateiname As String
    strDateiname = OpenFileName(CurrentProject.path, , _
        "Alle Dateien(*.*)", , True)
    If Len(strDateiname) > 0 Then
        DateiSpeichern strDateiname
        AnzeigeAktualisieren
    End If
End Sub

Listing 5.30: Hinzufügen einer Datei zur Tabelle tblDateien

Private Sub DateiSpeichern(strPfad As String)
    Dim strVerzeichnis As String
    Dim strDateiname As String
    Dim intPositionLetzterBackslash
    intPositionLetzterBackslash = InStrRev(strPfad, "\")
    strVerzeichnis = Left(strPfad, intPositionLetzterBackslash)
    strDateiname = Mid(strPfad, intPositionLetzterBackslash + 1)

    CurrentDb.Execute "INSERT INTO tblDateien(Verzeichnis, " _
        & "Dateiname) VALUES('" & strVerzeichnis & "','" _
        & strDateiname & "')"
End Sub

Listing 5.31: Speichern von Verzeichnis und Dateiname einer Datei in der Tabelle tblDateien

Außerdem legen Sie auf der Registerseite Spaltenköpfe des Eigenschaftsfensters des ListViews drei Spalten an. Die erste hat die Breite 200 und keine Spaltenüberschrift, die beiden weiteren die Breite 2000 und die Überschrift Verzeichnis beziehungsweise Dateiname.

Die Routine funktioniert ähnlich wie die aus dem vorherigen Beispiel. Nach dem Deklarationsteil und dem Instanzieren beziehungsweise Erstellen der Verweise für die einzelnen Objektvariablen initialisiert die Routine das ListView-Objekt, indem es die Eigenschaft SmallIcons auf Nothing setzt. Das ist notwendig, weil das ListView nicht nur beim Öffnen, sondern auch nach dem Hinzufügen einer neuen Datei aktualisiert wird. Gleiches gilt für das ImageList-Objekt: Auch dieses wird initialisiert, allerdings mit der Clear-Methode der ListItems-Auflistung.

Das Füllen der Steuerelemente erfolgt wieder in zwei Durchläufen durch die Datensätze der zugrunde liegenden Tabelle: Im ersten Durchlauf fügt die Routine die benötigten Icons im ImageList-Objekt ein. Das Icon für die Dateien zugeordnete Anwendung lässt sich relativ leicht ermitteln: Es reicht ein Aufruf der Funktion GetIconPic, die sich im Modul mdlOGL2007 befindet, das in Kapitel 11, »Bilder und binäre Dateien« ausführlich diskutiert wird.

Private Sub AnzeigeAktualisieren()
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim i As Integer
    Dim objListItem As ListItem
    Set objListView = Me!lvwDateien.Object
    Set objImageList = Me!imlIcons.Object
    Set db = CurrentDb
    Set rst = db.OpenRecordset("tblDateien", dbOpenDynaset)
    'ListView initialisieren
    Set objListView.SmallIcons = Nothing
    'ImageList initialisieren
    objImageList.ListImages.Clear
    objImageList.ImageHeight = 16
    objImageList.ImageWidth = 16
    objListView.ListItems.Clear
    If Not rst.EOF Then
        'ImageList mit Icons füllen
        Do While Not rst.EOF

            objImageList.ListImages.Add , "a" & rst!DateiID, _
                GetIconPic(rst!Verzeichnis & rst!Dateiname)
            rst.MoveNext
        Loop
        'ListView mit Icons und Dateiinformationen füllen
        rst.MoveFirst
        Set objListView.SmallIcons = objImageList
        objListView.ListItems.Clear
        Do While Not rst.EOF
            i = objImageList.ListImages("a" & rst!DateiID).Index
            Set objListItem = objListView.ListItems.Add(, "a" _
                & rst!DateiID, , , i)
            objListItem.ListSubItems.Add , , rst!Verzeichnis
            objListItem.ListSubItems.Add , , rst!Dateiname
            rst.MoveNext
        Loop
    End If
    rst.Close
    Set rst = Nothing
    Set db = Nothing
End Sub

Listing 5.32: Füllen des ListViews mit Dateiinformationen inklusive Icon

Nachdem die Icons im ImageList-Steuerelement untergebracht und mit einem Key versehen sind, der das spätere Zuordnen zum passenden Datensatz ermöglicht, geht es an das Füllen des ListView-Steuerelements. Die erste Spalte ist für das Icon reserviert. Dieses weist man mit dem letzten Parameter der Add-Methode der ListItems-Auflistung namens SmallIcon hinzu. Dieser Parameter erwartet den Index des zuzuordnenden Eintrags des ImageList-Objekts. Diesen ermitteln Sie eine Zeile vorher über die Index- Eigenschaft des Eintrags mit dem entsprechenden Key. Die Methode ListSubItems eines frisch angelegten Elements im ListView fügt schließlich das zum Datensatz passende Verzeichnis und den Dateinamen ein.

Damit das ListView-Steuerelement direkt beim Öffnen des Formulars gefüllt wird, legen Sie noch eine Routine an, die beim Laden des Formulars ausgelöst wird:

Private Sub Form_Load()
    AnzeigeAktualisieren
End Sub

Listing 5.33: Aktualisieren des ListView-Steuerelements beim Laden des Formulars

Fehlt noch eine Schaltfläche, mit der Sie einen markierten Eintrag wieder herauswerfen können. Diese nennen Sie cmdDateiLoeschen und versehen sie mit folgender Ereignisprozedur:

Private Sub cmdDateiLoeschen_Click()
    CurrentDb.Execute "DELETE FROM tblDateien WHERE DateiID = " _
        & Replace(objListView.SelectedItem.Key, "a", "")
    AnzeigeAktualisieren
End Sub

Listing 5.34: Löschen der aktuell im ListView-Steuerelement ausgewählten Datei

Nächster Abschnitt:

5.11.8 Drag and Drop mit dem ListView-Steuerelement

© 2006-2008 André Minhorst Alle Rechte vorbehalten.