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

VBA Access Discussion :

Créer un bouton via des images


Sujet :

VBA Access

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut Créer un bouton via des images
    Bonjour,

    J'aimerais créer des boutons personnalisés via des images

    • image1 = bouton de base
    • image2 = bouton au survol
    • image3 = bouton au clic


    Est-ce possible ?

    Il faudrait aussi que la souris change au survol des images (comme sur un bouton normal)

    Mes questions :
    1. Comme créer le bouton avec les différentes options ?
    2. Où placer les images (le top serait dans une table avec pièces jointes) ?

    Merci d'avance pour vos lumières

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 499
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 499
    Par défaut
    Salut,

    Sauf erreur de ma part, les boutons ont une propriété Picture, qui représente l'image affichée sur le bouton.
    Quand à assigner une image par programmation, le mieux est peut-être d'utiliser des contrôles Image, qui ont aussi une propriété Picture, et d'assigner l'un à l'autre.
    Ainsi les images sont stockées dans le formulaire.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        '// assigne une image
    Set Commande0.Picture = Image1.Picture
     
        '// Supprime une image
    Set Commande0.Picture = Nothing
    Note:
    Bien que l'on puisse stocker des images dans une BDD, et que l'on puisse lier les contrôles d'un formulaire à une table ou requête retournant des images (comme n'importe quel contrôle en fait), ce n'est pas vraiment conseillé, car il y a des contraintes:
    - D'une part les images prennent beaucoup de place
    - Les images enregistrées en tant que pièce jointe en prennent moins, pour pouvoir les charger, il faut d'abord les extraire sur le disque.

    A toi de voir ce qui te convient en fonction de la taille / quantité des images, et si les contraintes sont acceptables ou pas.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut
    Bonjour,

    La suite...

    J'ai intégré trois images à mon formulaire [Visible = false]

    • Image9 = bouton01.bmp
    • Image7 = bouton02.bmp
    • Image8 = bouton03.bmp

    J'ai créé un bouton [Commande3] qui affiche l'image bouton01.bmp

    Sur ce bouton [Sur souris déplacée], je mets le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Me.Commande3.Picture <> Image7.Picture Then Me.Commande3.Picture = Image7.Picture
    Et là chose étrange :
    • Lors du premier lancement, juste après avoir défini les images, cela fonctionne nickel
    • Mais lorsque je ferme le fichier Access et que je le relance, j'ai le message suivant : (pour que cela refonctionne une fois, je dois rééditer les images...)

    Erreur exécution '2220'
    Microsoft Office Access ne peur ouvrir le fichier << bouton02.bmp >>".
    Une idée ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut
    Je dois "peut-être" charger les images au démarrage du formulaire, mais comment accéder aux images intégrées dans ce formulaire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set image7 = LoadPicture(...
    J'ai essayé ceci, mais toujours le même problème d'erreur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set Image7 = LoadPicture(Image7.Picture)
    Set Image7.PictureData = LoadPicture(Image7.Picture)

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut
    Bon et bien j'ai utilisé le système D...

    3 images et un bouton transparent juste au dessus avec des .Visible = ...

  6. #6
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 955
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 955
    Par défaut
    bonjouir,
    Citation Envoyé par Crachover Voir le message
    Bon et bien j'ai utilisé le système D...

    3 images et un bouton transparent juste au dessus avec des .Visible = ...
    pas "système D", puisque c'est dans l'esprit de l'exemple donné dans l'aide en ligne de learn.Microsoft pour la propriété PictureData
    donc:

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 499
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 499
    Par défaut
    Pourquoi passes-tu par LoadPicture ?

    Sauf si tes images sont 100% dynamiques, tu n'as aucune raison de faire cela.
    Charge une image dans ton formulaire en mode création, enregistre le et Basta !
    Nom : Capture d'écran 2024-05-04 224749.png
Affichages : 199
Taille : 15,1 Ko
    pourquoi simple quand on peut faire compliqué ...

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut
    Bonjour,

    J'ai effectivement oublié les .LoadPicture... pour la suite

    J'ai cependant encore une question... Comment faire pour détecter que le bouton gauche de la souris est enfoncé ?

    J'ai essayé ceci, mais non...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Me.Commande18.OnMouseDown.Right Then...
    If Me.Commande18.OnMouseDown = 0 Then...
    If Me.Commande18.OnMouseDown = True Then...
    Une idée ?

    Ps : Je sais qu'il y a l'événement sur souris appuyée, mais j'ai besoin de faire un test sur souris déplacée.

    Et tant que j'y suis... Comme détecter par exemple un :
    • CTRL + A
    • SHIFT + B
    • SHIFT + ENTER
    • CTRL + SOURIS CLIC DROIT
    • ALT + CTRL + SOURIS CLIC DROIT
    • etc...

Discussions similaires

  1. message d'alerte via des images
    Par nrdz83 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/06/2008, 13h32
  2. remplacer les boutons par des images
    Par sotfage dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 18/06/2007, 17h41
  3. Problème de création de bord de cadre via des images
    Par bilou95 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/04/2007, 11h19
  4. Personnaliser des boutons avec des images
    Par rar77 dans le forum WinDev
    Réponses: 1
    Dernier message: 30/08/2006, 17h56
  5. Insertion des boutons et des images dans une JTable
    Par anouar dans le forum Composants
    Réponses: 2
    Dernier message: 17/11/2005, 20h23

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