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

WinDev Discussion :

Logo (image) sur un état


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable sécurité incendie
    Inscrit en
    Février 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable sécurité incendie
    Secteur : Service public

    Informations forums :
    Inscription : Février 2017
    Messages : 47
    Points : 29
    Points
    29
    Par défaut Logo (image) sur un état
    Bonjour,

    Je dispose d'un code pour insérer une image dans un état

    Sur le code du bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    sFichier est une chaîne
     
    // Ouvre le sélecteur d'images
    sFichier = fSélecteurImage("", "", "Sélectionnez une image.....")
     
    SI sFichier <> "" ALORS 
    	IMG_photo = sFichier
    FIN
     
    dSauveImageJPEG (IMG_photo, "C:\ProgramData\logo1.jpg", 300)
     
    LIB_logo_validé.Visible = Vrai
    Temporisation(500)
    Ferme (FEN_popup_Logo)

    Dans mon état j'ai insérer le code sur la ligne "Avant impression"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IMG_Logo = "C:\ProgramData\logo1.jpg"

    Sur mon PC cela fonctionne très bien. Je peut changer à volonté mon image logo.

    Après avoir créer une procédure d'exécution de l'exécutable. j'ai installé le programme sur un autre PC.

    Pas de possibilité de changer l'image logo. L'image logo qui s'affiche sur le 2ème PC est celle qui existait sur le premier PC avant la création de la procédure d'exécution de l'exécutable.

    Sur le 2ème PC lorsque je fait une recherche dans programdata, la fonction dsauve image fonctionne parfaitement mais les images logo modifiées n'apparaissent pas sur l'état.

    Auriez vous une piste pour résoudre ce problème ?

    Merci pour votre aide

    Claude

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    Tu utilises le chemin "C:\programData". Je pense (et je suis quasi certain) que tu n'as pas le droit d'écrire dans ce dossier. Tu as ldevrais plutôt écrire dans "C:\programData\Editeur\NomProgramme". Pour faire plus simple et surtout plus propre fais qqchose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dsauveimage((IMG_photo, completerep(srProgramFilesCommunUtilisateur)+"Logo1.jpg", 300)
    Et bien sûr, tu vas le récupérer de la même façon dans ton état.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 267
    Points
    5 267
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Une autre solution, si tu veux vraiment enregistrer le logo est de placer la ligne dans le code d'ouverture de l'état.
    On peut même pousser le vice à passer le chemin du logo en paramètre à l'état
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Quand tu crées l'exécutable, il y a une fenêtre assistant avec plein d'onglets successifs. Il y a un des onglets qui donne la liste des fichiers à intégrer dans l'exécutable. Dans cette liste, enlève ton logo. Je ne sais pas si ça va suffire, mais au moins, un type qui recevrait ton exécutable et qui le décortiquerait ne tomberait plus sur ce logo qui n'a rien à faire là.
    Tu peux aussi regarder ton fichier MonProjet.WDU, si je me souviens bien, il contient la liste des fichiers à intégrer dans l'exécutable.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 267
    Points
    5 267
    Billets dans le blog
    1
    Par défaut
    Un doute m'assaille
    Citation Envoyé par saosimao Voir le message
    Dans mon état j'ai insérer le code sur la ligne "Avant impression"
    En WD25 cet événement n'existe pas. Le seul qui s'en approche est "Avant impression de l'état".
    Or cet événement n'est déclenché que lors de l'impression depuis l'aperçu. Si ce n'est pas le cas, il est logique que le code ne soit pas exécuté.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Responsable sécurité incendie
    Inscrit en
    Février 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable sécurité incendie
    Secteur : Service public

    Informations forums :
    Inscription : Février 2017
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    La solution proposée par Voroltinquo fonctionne partiellement à savoir

    J'ai insérer dans la ligne du code d'ouverture de l'état le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    PROCÉDURE MonEtat()
    sFichier est une chaîne
     
    // Ouvre le sélecteur d'images
    sFichier = fSélecteurImage("", "", "Sélectionnez une image.....")
     
    SI sFichier <> "" ALORS 
    	IMG_photo = sFichier
    FIN

    J'ai sur la page de cet état renommer mon image logo1 en IMG_photo.
    Cela fonctionne sur les deux ordinateurs

    Néanmoins, l'image logo ne reste pas enregistré sur les PC. Il faut insérer cette image logo à chaque impression.

    Pour frenchsting,

    j'ai tester la solution proposée, mais cela me retourne les erreurs suivantes :
    J'ai essayer les deux dsauveimgage et dsauvauveimage JPEG sans succès

    Nom : Develo.jpg
Affichages : 145
Taille : 84,7 Ko


    pour tbc92, suis un peu perdu sur la piste proposée.

    Claude

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Responsable sécurité incendie
    Inscrit en
    Février 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable sécurité incendie
    Secteur : Service public

    Informations forums :
    Inscription : Février 2017
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    En réponse à Voroltinquo


    Effectivement erreur sur la retranscription de ma demande initiale

    le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IMG_Logo = "C:\ProgramData\logo1.jpg"
    n'avait pas été positionné sur avant impression mais bien sur la ligne "Ouverture de l'état"

    Claude

  8. #8
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 267
    Points
    5 267
    Billets dans le blog
    1
    Par défaut
    As tu tenté cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    FONCTION Imprimer():entier
    saCheminLogo est chaine
     
    saCheminLogo=fSélecteurImage("", "", "Sélectionnez une image.........")
    //Paramètres et destination
    RENVOYER iImprimeEtat(ETAT_MonEtat,saCheminLogo)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    PROCEDURE ETAT_MonEtat(saLogo est chaine)
    IMG_Logo=saLogo
    Tu peux aussi enregistrer le chemin dans une variable persistante qui sera vérifiée à l'initialisation.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  9. #9
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Ma réponse n'était pas vraiment une réponse à ton besoin.
    Tu as en fait 2 bugs si on veut.
    Il y a un fichier image qui est sur ton PC au départ, et qui se retrouve copié ''en même temps que ton programme'' sur le 2ème PC. Ce fichier image est donc intégré dans ton fichier .EXE, à tort.
    Ce n'est pas catastrophique, mais ce n'est pas souhaitable.
    Je cherchais donc comment faire en sorte que ce fichier ne soit pas intégré dans le fichier .EXE.
    Par effet de bord, ça peut aider à résoudre ton problème.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  10. #10
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    Concernant le fait que tu aies des erreurs : il faut que tu fasses qqchose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SI PAS DsauveImageJPEG() ALORS
       Erreur(ErreurInfo(errMessage)
    FIN
    Pour connaître la vraie raison de l'erreur.

    Concernant le fait qu'il faille demander à chaque fois le chargement de l'image, il te faut alors modifier ton code et tester la présence (ou non) de cette image à l'emplacement que tu utilises. Regarde du côté de ffichierexiste().
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Responsable sécurité incendie
    Inscrit en
    Février 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable sécurité incendie
    Secteur : Service public

    Informations forums :
    Inscription : Février 2017
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Après divers essais et en suivant vos conseils, je vient de réussir à obtenir le résultat souhaité.

    J'ai procédé comme suit :

    J'ai créé un état appelé état logos qui ne comporte qu'un champ image appelé IMG photo (Il ne servira qu'à faire un état dit tampon!)

    sur la ligne ouverture état logos, j'ai insérer le code suivant
    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
    sFichier est une chaîne
     
    // Ouvre le sélecteur d'images
    sFichier = fSélecteurImage("", "", "Sélectionnez une image.....")
     
    SI sFichier <> "" ALORS 
    	IMG_photo = sFichier
    FIN
     
     
    dSauveImageJPEG (IMG_photo, "C:\ProgramData\logo1.jpg", 300)
     
    ResSauvegarde est une chaîne
    // Sauvegarde du contenu du champ Image "IMG_ImageDessin"
    ResSauvegarde = dSauveImageJPEG(IMG_photo, "C:\ProgramData\logo1.jpg")
    // Sauvegarde effectuée ?
    SI ResSauvegarde = Vrai ALORS
    	Info("La sauvegarde a été effectuée")
    SINON
    	Erreur(ErreurInfo(errMessage))
    FIN

    Sur une fenêtre j'ai insérer dans un bouton le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    iAperçu()
    iInitRequêteEtat(ETAT_Logos)
    iImprimeEtat(ETAT_Logos)

    Ensuite pour mes autres états j'ai créer un bouton sur une fenêtre avec le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	iAperçu()
    	iInitRequêteEtat(ETAT_Synthèse2)
    	ETAT_Synthèse2.IMG_Logo	= "C:\ProgramData\logo1.jpg"
    	iImprimeEtat(ETAT_Synthèse2)

    Je ne sais pas pourquoi cela à marché, mais le principal est le résultat obtenu !!!

    Merci pour l'aide apportée

  12. #12
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    Il y a plusieurs trucs qui m'interpellent mais un en particulier me chatouille : tu fais un test sur le nom du fichier. Mais s'il est vide, que se passe t'il ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sFichier est une chaîne
     
    // Ouvre le sélecteur d'images
    sFichier = fSélecteurImage("", "", "Sélectionnez une image.........")
     
    SI sFichier <> "" ALORS 
    	IMG_photo = sFichier
    FIN
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Responsable sécurité incendie
    Inscrit en
    Février 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable sécurité incendie
    Secteur : Service public

    Informations forums :
    Inscription : Février 2017
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Ces codes ne sont pas de ma création. il s'agit soit de codes trouvés sur ce forum soit en retour d'une demande d'aide avec une personnalisation en fonction de mon besoin.

    Pour la question posée "Mais s'il est vide, que se passe t'il ?".

    Lors du démarrage de ce programme il demande à récupérer une image pour en faire un logo sur une entête d'un état. Si lors de l'ouverture de la fenêtre de recherche d'une image, je clique ensuite sur annuler, le message suivant s'affiche "La sauvegarde à été effectuée" et aucun logo ne s'affiche.

    Claude

  14. #14
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 396
    Points
    9 396
    Par défaut
    Tu peux essayer de nettoyer un peu ce code.
    Tu as une instruction dSauveImageJPEG, puis 3 lignes plus bas, à nouveau dSauveImageJPEG avec un paramètre différent.
    En gros, un ordre, et juste après, un contre-ordre, pour annuler ce qui vient d'être fait.

    Et toutes ces instructions autour de l'image, si on veut faire les choses proprement, il faut les exécuter uniquement si l'utilisateur a choisi une image.
    Si l'utilisateur clique sur 'Annuler' au moment où on lui propose de sélectionner une image, on ne devrait pas exécuter ces 5 ou 6 instructions.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  15. #15
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 267
    Points
    5 267
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    ETAT_Logo ne comporte qu'un champ Image,
    1-pourquoi dans ce cas utiliser iInitRequêteEtat ?
    2-pourquoi l'imprimer ? L'utilisateur va se retrouver avec une page ne comportant que son logo. C'est un coup à recevoir un mail laconique :
    Ça ne marche pas
    3-Je ne comprend pas son utilité, tu peux très bien sélectionner ton logo à l'extérieur de ton état via une variable image (affectée via dChargeImage) ou tout simplement, afin d'éviter d'avoir deux fois la même image sur le disque, sauvegarder le chemin en paramètre (SauveParamètre)
    Un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    FONCTION Imprimer():entier
    saCheminLogo est chaine
     
    saCheminLogo=ChargeParamètre("Logo","") //On récupère le chemin de l'image, vide s'il n'a jamais été sélectionné
    SI saCheminLogo="" OU PAS fFichierExiste(saCheminLogo) ALORS //Aucune sauvegarde ou sauvegarde inconnue
         saCheminLogo=fSélecteurImage("", "", "Sélectionnez un logo.....")
         SauveParamètre("Logo",saCheminLogo)
    FIN
    //Paramètres et destination
    RENVOYER iImprimeEtat(ETAT_MonEtat,saCheminLogo)
    Le fait de saisir le chemin du logo à l'ouverture de l'état est du même ordre que d'ouvrir la fenêtre client lors de l'impression d'une fiche client.
    Tu as deux traitements biens séparés, la saisie des données (dont le logo) et l'impression de ces données
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Responsable sécurité incendie
    Inscrit en
    Février 2017
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Responsable sécurité incendie
    Secteur : Service public

    Informations forums :
    Inscription : Février 2017
    Messages : 47
    Points : 29
    Points
    29
    Par défaut
    Merci pour tous ces retours.

    Claude

Discussions similaires

  1. [WD25] Récupérer une image pour en faire un logo sur un état
    Par saosimao dans le forum WinDev
    Réponses: 14
    Dernier message: 09/03/2023, 09h07
  2. [Conky] Avoir une image sur l'état des leds du clavier
    Par ignace72 dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 14/05/2022, 18h44
  3. [WD14] Problème d'image sur un état
    Par Raptor92 dans le forum WinDev
    Réponses: 7
    Dernier message: 23/06/2011, 17h49
  4. Image sur état
    Par albere dans le forum IHM
    Réponses: 1
    Dernier message: 28/08/2006, 11h09
  5. [CR8.5][Visual Adelia] Insertion d'images sur état
    Par adu dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 01/12/2004, 16h34

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