Bonjour à tous,
Je vous propose un module pour afficher des images dans un formulaire continu avec les versions antérieures à partir de Access 2000.
L'image reste stockée à l'extérieur de la base de données.
Pas de problème donc de taille de base de données.
Ne fonctionne pas avec Access 97.
J'ai testé ce module avec Access 2003, Windows XP.
edit : et Access 2007 Windows 7
1 - Téléchargez ce module et importez-le dans votre projet VBA :
ftp://ftp-developpez.com/arkham46/fi...odImageOLE.bas
Mirroir HTTP
ALT-F11 pour ouvrir l'éditeur VBA puis Fichier => Importer un fichier... (ou faites glisser le fichier dans l'explorateur)
1 bis - Si vous souhaitez utiliser les miniatures exif des photos (plus rapide) ou des images png ou gif avec transparence, utilisez ce module :
ftp://ftp-developpez.com/arkham46/fi...ageOLEPlus.bas
Mirroir HTTP
Pour ce module 1 bis, gdiplus.dll est requis (à mettre dans le répertoire de l'application si nécessaire)
2 - Déposez ensuite un cadre d'objet dépendant sur votre formulaire continu.
Nommez par exemple ce contrôle OleImg
La propriété source contrôle de ce cadre d'objet est de cette forme :
- Pour une utilisation du module ModImageOLE :
=ImageToOLE([chemin];[OleImg];Vrai;Vrai)
- Pour une utilisation du module ModImageOLEPlus :
=ImageToOLEPlus([chemin];[OleImg];Vrai;Vrai)
Les 4 paramètres sont :
- pFile : un chemin de fichier complet (ici le champ "chemin" de la table source du formulaire)
- pCtrlResize : le contrôle (ici OleImg) qui servira à redimensionner l'image
- pCenter : Mettre à Vrai pour centrer l'image (sinon elle est affichée en haut à gauche)
- pRepaintForm : Mettre à Vrai pour raffraichir le formulaire après chaque chargement d'image
Si l'image est plus grande que le contrôle, elle est redimensionnée (même en mode découpage).
Cela permet d'accélérer l'affichage qui sinon peut devenir très lent.
Un exemple d'utilisation :
ftp://ftp-developpez.com/arkham46/fi...e/imageole.zip
Mirroir HTTP
A l'ouverture, le formulaire remplit une table avec le chemin des images contenues dans le sous-dossier Images.
L'exemple montre également l'utilisation de fonctions personnalisées (ImageToOLECustom et ImageToOLEPlusCustom dans chacun des formulaires de démo) pour afficher une image en cas de fichier incorrect ou inexistant.
Pour les curieux :
- le module charge l'image avec LoadPicture
- l'image est convertie en 24 bits (sinon je galère avec les palettes de couleurs ) et redimensionnée pour accélérer l'affichage
- puis elle est encapsulée dans un objet OLE de type DIB (device independant bitmap).
- Vous trouverez en en-tête du module le lien vers les docs msdn pour l'OLE. (C'est plutôt indigeste...)
N'hésitez pas à faire part de vos remarques et retour d'expérience.
Partager