Images und Icons im ListView-Steuerelement

Zusammenfassung

Verwenden Sie das ListView, um Images und Icons aus verschiedenen Quellen anzuzeigen.

Techniken

ListView-Steuerelement, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

ListView.mdb, MSCOMCTL.msi

André Minhorst, Duisburg

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. Wie das funktioniert, erfahren Sie in diesem Beitrag.

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 nimmt sich dieser Beitrag in den nächsten Abschnitten vor.

Keine Bilder ohne ImageList

Das ListView-Steuerelement zeigt keine Bilder ohne ImageList an. Eine ImageList ist ein Container für Bilddateien, der entweder im Entwurf oder auch zur Laufzeit mit Bilddateien gefüllt werden kann. Die Bilder einer ImageList 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 Resourcen 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 Pixeln haben kann.

Weitere Informationen zu diesem Thema finden Sie im Beitrag Das ImageList-Steuerelement (Shortlink 322).

Die voreingestellte Ansicht des ListView-Steuerelements heißt lvwIcon und sorgt für die Anzeige eines Bildes, soweit eines in einem verknüpften ImageList-Steuerelement vorliegt und dem jeweiligen ListItem-Element zugewiesen ist. Um die nachfolgenden Beispiele nachvollziehen zu können, benötigen Sie eine Datenbank mit der Tabelle Personal der Nordwind-Datenbank und die zu der Tabelle gehörenden Bilddateien mit den Mitarbeiterportraits – diese müssen im vorliegenden Fall im gleichen Verzeichnis wie die Beispieldatenbank liegen. Außerdem legen Sie ein Formular mit je einem ListView namens ctlListView und einem ImageList-Steuerelement namens ctlImageList an.

Das Füllen der beiden Steuerelemente erfolgt per VBA in der Load-Ereignisprozedur. Die komplette Routine finden Sie in Quellcode 1, die Erläuterungen in den nächsten Abschnitten.

Bild 1: Anzeige von Bilddateien im einem ListView-Steuerelement

Füllen des ImageList-Steuerelements

Da das ListView-Steuerelement seine Bilder nur aus dem ImageList-Steuerelement beziehen kann, füllt man dieses zunächst mit den anzuzeigenden Bildern.

Dabei durchläuft man die Datensätze der Tabelle Personal und ermittelt aus dem Feld Foto den Dateinamen des zum Mitarbeiter gehörenden Portraits. Zusammen mit dem per CurrentProject.Path ermittelten Verzeichnis erhält man den kompletten Pfad.

Und dann geht es rund: Die Anwendung liest die in den Datensätzen angegebenen und im Dateisystem gespeicherten Bilder in das ImageList-Steuerelement ein und erledigt nebenher eine ganze Menge Arbeit. Als fleißige Helfer erweisen sich dabei die Funktionen aus dem Modul mdlGDIPlus von Sascha Trowitzsch, das Access im Unternehmen Ihnen im Beitrag Bilder im Griff mit VBA und GDI+ (Shortlink 337) vorstellt.

Für das Zwischenspeichern im ImageList-Steuerelement müssen die Bilder alle die gleiche Größe haben. Da dies bei einer Vielzahl von Bildern nicht zwingend der Fall ist, sind ein paar Zwischenschritte erforderlich.

Im ersten Schritt lädt die Prozedur das per Pfad angegebene Bild mit der Funktion LoadPictureGDIP in eine Objektvariable des Typs StdPicture ein. Dann ermittelt die Funktion GetDimensionsGDIP die Abmessungen des Bildes in Pixel. Die Funktion liefert eine Struktur mit den beiden Elementen x und y zurück, aus denen sich die Abmessungen bequem auslesen lassen.


Nur für Abonnenten

Ab hier wird’s wirklich spannend – der Rest ist exklusiv für Abonnenten.

Mit dem Abo von Access im Unternehmen bekommst du den kompletten Artikel – inklusive vollständigem Code, Beispieldatenbank und Schritt-für-Schritt-Erklärung.

So sparst du dir stundenlanges Herumprobieren, vermeidest teure Fehler in deiner Access-Anwendung und kannst Lösungen direkt in deinem Unternehmen einsetzen, statt nur darüber zu lesen.

Teste Access im Unternehmen jetzt 4 Wochen lang kostenlos: Voller Zugriff auf alle Artikel, Downloads und Beispieldatenbanken. Kein Risiko – wenn es für dich nicht passt, kündigst du einfach innerhalb der ersten vier Wochen.

Bereits Abonnent? Hier einloggen


Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →

Schreibe einen Kommentar