Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Bilder aus Tabelle per VBA in ImageList einfügen

Begonnen von hon79, Mai 04, 2020, 10:54:05

⏪ vorheriges - nächstes ⏩

hon79

Hi Leute,
ich hab mir inzwischen im Netz einen Wolf gesucht und finde immer wieder nur Beiträge, welche entweder kostenpflichtig sind, oder ein spezielles Modul brauchen, welches man nur mit kostenpflichtigem Account herunterladen kann.  ???

Mein Problem:
Ich möchte in meinem TreeView die einzelnen Nodes mit Icons versehen. Diese werden aus einem ImageList-Element geladen. Wenn ich die Icons von Hand in der Entwurfsansicht hier hinein packe, funktioniert es problemlos. Nun will ich aber nicht jedes einzelne Formular anpassen, wenn ein Icon dazu kommt. Also habe ich eine Tabelle angelegt, in der ich die Icons speichern will. (Felder: icoID als Long, icoName als Text und icoIcon als Anlage)

Nach allem was ich bisher gefunden habe ist hier ein Anlage-Feld die bessere Wahl als ein OLE-Feld. (Hier bin ich aber offen)

Kann mir nun jemand sagen, wie ich das Icon richtig in die objImageList.ListImages.Add Funktion bekomme?
Bin echt am verzweifeln.

Ich hoffe, dass ich mein Problem verständlich beschrieben habe und mir hier jemand helfen kann.

Danke und schöne Grüße,
Honk79

markusxy

Hier der erste Link, den google liefert: https://www.freetutes.com/learn-vb6-advanced/lesson4/p5.html

Lass die Bilder im Filesystem, der Rest ist langsamer, und keine Anfänger-Thema.
Im Filesystem ist das ein Kinderspiel.

hon79

Danke, aber die Lösung habe ich auch schon gefunden.
Ich brauche die Bilder aber in der Datenbank, weil sie weitergegeben werden muss und nicht sicher gestellt ist, dass die Bilder im passenden Verzeichnis auch bestehen bleiben. Deshalb meine Fragestellung.

Dass das nicht ganz so einfach ist, habe ich mir fast gedacht, sonst hätte ich die Lösung bestimmt auch schon irgendwo gefunden.

DF6GL

Hallo,

dann schreibe zunächst die Anlage(n) als Datei(en) in das DB-Verzeichnis (oder ein anderes verfügbares) und lade danach die Datei(en) in das Imagelist-Control.

markusxy

Der Weg direkt via Datenbank:
Mit Hilfe der Windows Funktion OleLoadPicture kannst du aus einem Stream direkt ein IPictureDisp erzeugen.
Wenn du dich also grundlegend mit API Programmierung auskennen solltest,
wären das die Stichworte die dich ans Ziel bringen könnten.  :D

PhilS

#5
Die Hinweise auf Grafikdateien im Dateisystem, die hier gepostet wurden, halte ich eher für unnötige Umwege.

Wenn du die Grafiken mit Application.LoadPicture lädst und dann direkt(*) binär (AppendChunk) in einer Tabelle (Binary/OLE) speicherst, solltest du sie auch genauso (GetChunk) wieder lesen und direkt der ImageList zuweisen können.

Edit: *= Ganz so direkt geht das evtl. nicht. Du brauchst evtl. ein PictureControl in einem Form, dem du erstmal das geladenen Bild zuweist, um es dann als Byte-Array über PictureData wieder auszulesen und zu speichern.

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor