IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Images dans un formulaire continu avant 2007


Sujet :

Contribuez

  1. #1
    Expert éminent sénior
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut Images dans un formulaire continu avant 2007
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ImageToOLE([chemin];[OleImg];Vrai;Vrai)
    - Pour une utilisation du module ModImageOLEPlus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =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.


  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Bonjour Arkham46,

    J'ai testé ce module avec Access 2003, Windows XP.
    edit : et Access 2007 Windows 7
    J'ai Access2000, Windows XP et c'est OK.

    Merci pour cette contribution.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut

    Juste une chose à dire

    Philippe

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 428
    Points : 20 008
    Points
    20 008
    Billets dans le blog
    67
    Par défaut
    Très intéressant,

    J'ai testé avec Access 2003 et Windows 7 (et oui ça fonctionne )

  5. #5
    Expert éminent sénior
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Merci pour vos retours.

    Il ne manque plus que des tests sur Access 97 ([edit] : tests KO) et Office 2010 (64 bits?).

    J'ai quand même testé avec des grandes images (prises par appareil photo 12Mp je crois), c'est un peu lent mais ce n'est pas étonnant vu le poids des images.

    Pour rappel pour Access 2007 et 2010, si vous n'avez pas besoin de compatibilité descendante :
    Access 2007 par l'exemple : Intégration d'images dans les Formulaires Continus

  6. #6
    Expert éminent sénior
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    bjr,

    Modif sur le module ModImageOLE :
    - passage de pImgCtrl en optionnel
    - ajout de 4 bytes pour le checksum (non calculé) en fin d'objet OLE car petit soucis sinon dans de très rares cas

    Nouveau module ModImageOLEPlus qui utilise gdiplus.dll au lieu de gdi32.dll :
    - Lit les images PNG et ICO
    - Applique la transparence des images PNG, ICO et GIF (sur contrôle ou formulaire avec fond uni uniquement)
    - Utilise les miniatures Exif des photos pour un affichage plus rapide
    - Peut nécessiter la librairire gdiplus.dll en fonction du système d'exploitation (win 2000 notamment)

    Ajout dans la démo de fonctions personnalisées (ImageToOLECustom et ImageToOLEPlusCustom dans chacun des formulaires de démo) pour exemple d'affichage d'une image en cas de fichier incorrect ou inexistant.

    Bilan des tests Access 97 (merci Claude) => ça ne semble pas fonctionner avec cette version.

    Cela reste utile pour Access 2000, 2002 et 2003 et c'est déjà pas mal.

Discussions similaires

  1. [AC-2010] images dans un formulaire continu
    Par Tierisa dans le forum VBA Access
    Réponses: 0
    Dernier message: 28/08/2013, 14h00
  2. [AC-2007] Source d'une image dans un formulaire continu
    Par vandrie dans le forum IHM
    Réponses: 3
    Dernier message: 16/05/2011, 18h59
  3. Réponses: 4
    Dernier message: 24/09/2008, 18h13
  4. Réponses: 4
    Dernier message: 01/05/2007, 00h46
  5. [Access 2007 - Nouveauté] Images dans les formulaires continus
    Par Tofalu dans le forum Sondages et Débats
    Réponses: 5
    Dernier message: 17/10/2006, 08h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo