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

IHM Discussion :

[A-00] Image de fond récurrente


Sujet :

IHM

  1. #21
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Citation Envoyé par le.dams
    qui ne fonctionnera du coup plus puisque les images pointeront vers du genre c:\mabase_frontale_PAClocal\Images.
    je m'en doutais un peu. il ne faut pas faire ainsi. tu mets comme chemin pour l'image:
    "i:\Images\monimage.bmp"
    sur les postes clients tu connectes un lecteur réseau sur le partage du serveur avec la lettre "i" et sur le serveur tu substitues le lecteur "i:" à ton dossier en local partagé. ainsi le serveur va chercher en local alors que le client sur le serveur. (bien sur il est possible de faire cela aussi en ligne de commande si nécessaire).

    Citation Envoyé par le.dams
    Je commence à avoir honte de vous embêter ainsi
    oui, c'est vrai ca: t'as pas honte ? je culpabilise à mort de pas faire avancer le shimili bili, le schim lebini... le chie milli brique..., l'oeuf, c'est ca...


  2. #22
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 56
    Points : 34
    Points
    34
    Par défaut
    Re RE rehue rheuuu arheu arehreureu ARHHEEUUU !

    Ilank :
    L'équivalent de ton bouton 1 chez moi insère bien quelque chose dans la table, mais impossible de l'ouvrir après : le champs OLEImage m'affiche "données binaire" au lieu de bitmap et sur double clic pour afficher l'image : msgbox "erreur de communication entre mabase et le serveur OLE..." => impossible d'ouvrir l'image (qui n'apparait du coup pas non plus sur le champs OLE dans les forms).
    Pour le bouton 2 => toujours éxactement la même erreur...
    Je commence à croire que c'est une connerie de paramétrage de ma part car par exemple quand je repars d'une base complètement vierge pour vérif, là je le message "type non défini par l'utilisateur" sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim FichierHnd As Long, Rcd As DAO.Recordset
    ... je commence à rêver d'incantation vaudou


    Vodiem:
    J'utilise déjà un lecteur "Q" (pour Qualité et non pas pour petit cochon !) automatiquement créé dans le poste de travail à chaque connexion winXP Pro... donc ton idée à son intérêt sauf que j'ai tendance à croire que je vais perdre en vitesse de chargement (image à transiter par le RJ45 plutôt que directement à charger depuis Hard drive local) non ? Ton avis

    ... et puis autre raison mais moins primordiale : j'embarque des fois en déplacement professionel une version "déconnectée" de ma base complète sur mon notebook (frontale + dorsale) où je n'ai qu'à repointer les liaisons de tables dans ma frontale. Mais avec ta solution il faudrait repasser sur tous les liens d'image, à moins que cela soit automatisable ? => Je peux peut être essayer de recréer le lecteur Q mais qui pointe cette fois-ci vers un répertoire local qui contiendra les images préalablement importées en local... est ce que cela te parait cohérent ? Connais tu une commande qui me permettrait de recréer les liaisons de table mais de manière automatique (comme cela je pourrais tout automatiser pour la version "déconnectée") ?

    Merci

  3. #23
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Citation Envoyé par le.dams
    L'équivalent de ton bouton 1 chez moi insère bien quelque chose dans la table, mais impossible de l'ouvrir après : le champs OLEImage m'affiche "données binaire" au lieu de bitmap et sur double clic pour afficher l'image : msgbox "erreur de communication entre mabase et le serveur OLE..." => impossible d'ouvrir l'image (qui n'apparait du coup pas non plus sur le champs OLE dans les forms).
    J'ai exactement la même chose chez moi. Mais je n'utilise pas de control OLE sur mon formulaire.
    Citation Envoyé par le.dams
    Pour le bouton 2 => toujours éxactement la même erreur...
    Là je ne comprends pas. Ce qui serait bien à tester; c'est de créer un fichier de puis le champ OLE; pour voir ce qui se passe.
    ...là je le message "type non défini par l'utilisateur" sur la ligne
    Base vierge dans laquelle tu as peut-être oublié d'ajouter la référence DAO ?!

  4. #24
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Ok, le.dams. Je viens de tester la création d'un fichier bmp depuis le champ OLEImage et c'est moi qui fais n'importe quoi. Je te donne les deux codes pour tester; l'import dans la table et l'export sur le disque.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    'Uniquement pour les BMP pour le moment
    Public Sub IntegreImage(ByVal NomFichier As String)
     Dim buffer() As Byte
     Dim FichierHnd As Long, Rcd As DAO.Recordset
     FichierHnd = FreeFile
     Open NomFichier For Binary Access Read As FichierHnd
     Get FichierHnd, , BFHeader
     ReDim buffer(0 To LOF(FichierHnd) - Len(BFHeader) - 1)
     Get FichierHnd, , buffer
     Close FichierHnd
    'Ajoute le fichier BMP dans la table 
     Set Rcd = CurrentDb.OpenRecordset("SELECT * FROM MesImages")
     Rcd.AddNew
     Rcd!MonImage = Mid(NomFichier, InStrRev(NomFichier, "\") + 1)
     Rcd!OLEImage.AppendChunk buffer
     Rcd.Update
     Rcd.Close
     Set Rcd = Nothing
    End Sub
    Je pense de donner le code pour l'enregistrement sur disque au moins comme ça, tu pourras voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    Public Sub ExporteImage(ByVal Dossier As String, ByVal NomImage As String)
      Dim Buffer() As Byte, FichierHnd As Long, Rcd As DAO.Recordset, NomFichier As String, TailleImage As Long
        Set Rcd = CurrentDb.OpenRecordset("SELECT * FROM MesImages WHERE MonImage='" & NomImage & "'")
        If Rcd.BOF Or Rcd.EOF Then
           MsgBox "L'image " & NomImage & " n'a pas été trouvé dans la table."
           Rcd.Close
           Set Rcd=Nothing
           Exit Sub
        End If
        TailleImage = Rcd!oleimage.FieldSize
        TailleImage = IIf((TailleImage Mod 2) <> 0, TailleImage - 1, TailleImage)
        ReDim Buffer(0 To TailleImage - 1)
        Buffer = Rcd!oleimage.GetChunk(0, TailleImage)
        Rcd.Close
        Set Rcd = Nothing
        NomFichier = Dossier & "\" & NomImage
        If Dir(NomFichier) <> "" Then
           If MsgBox("Le fichier " & vbcrlf & "'" & NomFichier & "' existe déjà." & vbCrLf & "Voulez-vous le remplacer ?", vbYesNo) = vbNo Then Exit Sub
           Kill NomFichier
        End If
        BFHeader.bfType = 19778
        BFHeader.bfReserved = 0
        BFHeader.bfSize = Len(BFHeader) + TailleImage
        FichierHnd = FreeFile
        Open NomFichier For Binary Access Write As FichierHnd
        Put FichierHnd, , BFHeader
        Put FichierHnd, , Buffer
        Close FichierHnd
    End Sub

  5. #25
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 56
    Points : 34
    Points
    34
    Par défaut
    Je cherche à prendre des actions chez les fabricant d'aspirine, paracétamol, et autres tranquilisants doux ou même forts !!!

    Vodiem :
    Une petite réponse à mes 2 questions ?

    Ilank :
    Désolé pour le retard (j'ai voulu le tester sur un autre poste de mon réseau).
    Ton code d'importation fonctionne si ce n'est qu'il me met encore un objet OLE non reconnu dans la table et de type "donnée binaire" inouvrable dans access (MsgBx : Un problème est survenu pendant la communication entre votreBase et le serveur OLE ou le controle activeX. Fermez le sereveur OLE et redémarrez le en dehors de votreBase...').
    Mais ce même objet exporté avec ton autre code devient là de nouveau un bmp dans l'explorer, parfaitement affichable

    Citation:
    Envoyé par le.dams
    Pour le bouton 2 => toujours éxactement la même erreur...
    Là je ne comprends pas. Ce qui serait bien à tester; c'est de créer un fichier de puis le champ OLE; pour voir ce qui se passe.
    Comme c'est bien cette partie qui m'est la plus chère, je reviens dessus : en fait j'ai déjà testé depuis le début sur un fichier "correctement" importé depuis le champs OLE (cf. méthodologie "à la con", pardon pas du tout ergonomique (!) que j'ai cité plus haut)... toujours le même bug sur insertion en fond de form selon ton code
    T'as pas encore une autre piste à me faire tester ?
    Je commence à croire que sous une version plus récente d'Access je n'aurais pas tout ces problèmes mais la migration va sans doute être très longue et douloureuse (100 requètes, encore plus de macros, 50 formulaires,...) alors je fuis vraiment cette option !

  6. #26
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    bonjour le.dams,
    tu cherches ici à manipuler deux notions complètement différentes.
    Le champ de type OLE, permet d'inscrire des données binaires et pas uniquement des données OLE. Je place dans le champ OLEImage les données contenues dans la propriété PICTUREDATA du formulaire; ces données ne sont pas de type OLE mais binaires uniquement. Dans la table le champ indiquera "Données binaires" en double cliquant dessus; c'est à dire en voulant utiliser ces données comme des données OLE tu auras une erreur de communication avec le serveur OLE. Ce qui est normal puisque le contenu du champ n'est pas lié à une application.
    il est tout à fait normal
    1) de voir "Données Binaires" dans le champ
    2) d'avoir le message d'erreur de communication en double cliquant sur le champ.

    De même, avec un fichier correctement inséré dans le champ comme tu le dis tu auras bien un contenu OLE mais inexploitable pour le picturedata de ton formulaire; puisque lui ne gère pas les données de type OLE.

    Si tu veux, je peux aussi bien me servir d'un champ mémo pour intégrer ton image mais le champ mémo est limité à 64Ko. En clair je me sers du champ OLE uniquement pour l'espace de stockage offert.

    Tu mélanges donc d'après ce que je comprends; ces deux notions.
    J'ajoute pour finir, si tu as testé mon code d'affectation de l'image de fond sur une image correctement insérée (donc OLE et non binaire) logiquement ça plante.

  7. #27
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 56
    Points : 34
    Points
    34
    Par défaut
    Heuuu comment dirais-je... le.dams (donc moi même) = GROSSE TURNE et Ilank = mec qui maitrise !

    Ca marche ! effectivement, je m'acharnais sur un objet image "correctement " inséré. Je fais pleins de tests demain et te dis si tout est OK !

    Et à l'inverse, si je puis me permettre, comment insérer "correctement" une image en code (pour pouvoir me servir des différents logos par exemple dans mes états) ?... oui d'accord j'abuse

  8. #28
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    L'idée reste la même pour tes logos si ceux sont des bmp. Pour le moment je n'ai pas testé les autres formats.
    Tu ajoutes un control image dans l'état et dans l'événement Open tu affectes le contenu du champ oleimage de l'enregistrement correspondant au logo à la propriété picturedata du control image.

    Exemple : Pour une image 'Logo.bmp' insérée dans la table MesImages, un control image LogoEtat dans mon état.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Report_Open(Cancel as Integer)
     Dim Rcd As DAO.Recordset
     Set Rcd=CurrentDB.OpenRecordSet("SELECT OLEImage FROM MesImages WHERE MonImage='Logo.bmp'")
     IF Not Rcd.BOF And Not Rcd.Eof Then
        LogoEtat.PictureData=Rcd!OLEImage.GetChunk (0,Rcd!OLEImage.FieldSize)
     End if
     Rcd.Close
     Set Rcd=Nothing
    End sub

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Image de fond pour xdm
    Par BloodyImp dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 15/09/2004, 16h47
  2. boîte de dialogue avec image de fond + texte
    Par Eugénie dans le forum MFC
    Réponses: 13
    Dernier message: 31/08/2004, 13h32
  3. image de fond à la taille de la form
    Par littledoudou dans le forum C++Builder
    Réponses: 5
    Dernier message: 20/01/2004, 14h15
  4. Comment mettre une image en fond de JFrame
    Par marc26 dans le forum Débuter
    Réponses: 3
    Dernier message: 19/01/2004, 17h57
  5. [VB6] [Graphisme] Image de fond stretchable dans mdiform
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 17/02/2003, 10h45

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