PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Drag&Drop image navigateur vers champ image WinDev
Drag&Drop image navigateur vers champ image WinDev
Iniciado por JLRob, nov., 15 2017 5:23 PM - 16 respostas
Membro registado
5 mensagems
Publicado em novembro, 15 2017 - 5:23 PM
Bonjour à tous,
Je souhaite faire une copie directe d'une image dans mon navigateur vers un champ image d'une fenêtre WinDev pour illustrer rapidement une base d'articles.
J'ai testé tous les exemples fournis dans WinDev.
J'arrive à faire mon Drag&Drop du navigateur vers le bureau puis du bureau vers mon champ image mais en direct, je n'ai pas trouvé comment faire..
J'ai fait une recherche sur le forum dans les précédents sujets sans rien trouver non plus.
Quelqu'un aurait-il une astuce à partager ? Merci d'avance
jluc
Publicado em junho, 25 2019 - 7:23 AM
Bonjour Jean-Luc,

As tu réussi à mettre en oeuvre un D&D d'une image d'un navigateur vers un champ Windev permettant de récupérer l'URL de l'image et donc de pouvoir l'afficher ?

Je n'ai pas l'impression qu'on ait beaucoup avancé sur le sujet depuis ta question et je n'arrive pas à avoir un retour sur ST sur la question.

Ca parait pourtant bête comme opération.

Le pire, c'est que sans rien faire, ça fonctionne en mode GO en glissant l'image sur un champ HTML, sans code quoi que ce soit pour le D&D, mais en lançant l'exe ... plus rien !

Merci pour ton retour.
Fabien
Membro registado
11 mensagems
Publicado em junho, 25 2019 - 7:56 AM
Bonjour Jean-Luc,

As-tu trouvé une solution à ton pb ?
Je suis confronté à la même problématique, je voudrai pouvoir récupérer l'URL d'une image glissés sur un champ (n'importe lequel) de mon appli pour pouvoir travailler dessus ... mais à part passer par l'intégration lourde et fastidieuse d'un Chrominium dans mon appli, je ne vois pas de solution.

--
Cordialement,
Fabien
Membro registado
5 mensagems
Publicado em junho, 25 2019 - 9:41 AM
Salut Fabien,
J'ai laissé tombé, et la question, et plus généralement le développement de logiciels...
J'espère que tu auras plus de retour que moi de la part du forum.
jl
Membro registado
11 mensagems
Publicado em junho, 25 2019 - 1:57 PM
Pas vraiment pour l'instant, mais merci qd même pour le retour.

--
Cordialement,
Fabien
Membro registado
309 mensagems
Popularité : +31 (37 votes)
Publicado em junho, 25 2019 - 3:52 PM
Bonjour,
On peut faire un drop depuis n'importe quelle application externe comme ceci :

Créer une fenetre contenant un champ table nommé TableDrop, puis :

En declaration globale de la fenetre :

TableDrop..DndCible = dndProgrammé
dataDrop est une chaîne
DnDEvénement("SurLacherDD",TableDrop, dndLâcher)
DnDEvénement("EnsurvolDD",TableDrop, dndSurvol)
DnDEvénement("FinSUrvolDD",TableDrop, dndSortieChamp)


Puis créer les 3 Procedures

Procedure EnsurvolDD()

SI DnDDonnéeDisponible(CF_TEXT) = Vrai ALORS
// Le déplacement est autorisé
DnDAccepte(dndDéplacer)
dataDrop= DnDRécupère(CF_TEXT)
SINON
// Aucune action autorisée
DnDAccepte(dndInterdit)
FIN


Procedure FinSurvolDD()
dataDrop=""


Procedure surLacherDD()
SI ChaîneOccurrence(dataDrop,"http",SansCasse) ALORS

TableAjoute(TableDrop,dataDrop)
FIN



Plus qu'à exécuter et dropper sur la table.

Bon dev
Membro registado
46 mensagems
Popularité : -1 (9 votes)
Publicado em junho, 25 2019 - 5:21 PM
Bonjour,
Testé, ça fonctionne pas. Lors du survol de la fenêtre ou du champ table, le + ne s'affiche pas. problème ...
Membro registado
309 mensagems
Popularité : +31 (37 votes)
Publicado em junho, 25 2019 - 6:09 PM
Bonjour,
Si le + n’apparaît pas c'est que la source n'est pas de type TEXT ou que la reprise de code est erronée...verifiez.
Testé avec Chrome, IE et Opera sans problème...

Bon dev.
Membro registado
11 mensagems
Publicado em junho, 25 2019 - 7:22 PM
Bonsoir Samir,

Merci pour le retour, j'étais arrivé, depuis mon message, sur le même principe à récupérer l'URL des images.
Je confirme donc que le principe fonctionne sur Chrome et Edge, par contre, pas avec Firefox ... étonnant, mais on fera avec.

Par contre, je butte sur un autre problème.
Avec le CF_TEXT, on récupère dans le cas des images simples le src img ... ok, parfait.
Si on prends par exemple les avatars dans ce fil de discussion par exemple, ça donne l'URL de l'image.

Par contre, si je glisse le logo PC Soft en haut de la page, qui lui est un lien de type a href, au lieu de me retourner l'URL de l'image qui est :


, il me retourne la valeur du a href : https://www.pcsoft.fr/

A ta connaissance, y aurait-il un moyen de récupérer un peu plus d'info ?
J'ai essayé à tâton avec les autres constantes CF_*, mais sans succès.
Peut-être y aurait-il un moyen de récupérer un handle sur l'objet, l'image déplacée, avec un peu plus d'infos ?
Mais en aveugle ça me semble compliqué.

Merci encore pour ton retour et si tu as une idée pour la suite, je pense qu'en plus de moi, ça risque d'intéresser du monde.

--
Cordialement,
Fabien
Membro registado
46 mensagems
Popularité : -1 (9 votes)
Publicado em junho, 25 2019 - 9:18 PM
JLRob a écrit :
Je souhaite faire une copie directe d'une image dans mon navigateur vers un champ image d'une fenêtre WinDev pour illustrer rapidement une base d'articles.
Quelqu'un aurait-il une astuce à partager ? Merci d'avance
jluc



Avec Firefox, j'arrive à faire un drag and drop, et afficher directement l'image dans un champ Windev
pas besoin de récupérer l'url, même le logo de PC Soft et les avatars s'affichent.
Midou
Mensagem modificada, junho, 25 2019 - 9:23 PM
Membro registado
11 mensagems
Publicado em junho, 25 2019 - 9:40 PM
@midou23175, tu utilises quel type de champ de destination pour ton drag and drop vers Windev ?
C'est bizarre ces comportements pas très constants.

Autre bizarrerie sur laquelle je suis tombé, mes tests précédents fonctionnaient aussi bien en mode Go (Test) qu'avec l'application compilée.
Je teste donc l'intégration, assez simpliste dans une autre appli.
Là ça fonctionne en mode Go, mais plus dans l'application compilée.

Quelqu'un aurait déjà rencontré le pb ?

--
Cordialement,
Fabien
Membro registado
46 mensagems
Popularité : -1 (9 votes)
Publicado em junho, 25 2019 - 11:37 PM
@Fabien
j'ai testé en mode go et avec application compilée (exécutable) sur les champs
- champ image
- champ table fichier avec colonne image
ça fonctionne.

Au fait, j'utilise un code personnel, avec Evénément WM_DROPFILES, valable dans toute la fenêtre.
Après le Drag and Drop, j'ai une procédure de traitement et là, je passe à la récupération de l'image, et éventuellement à son enregistrement.
Membro registado
46 mensagems
Popularité : -1 (9 votes)
Publicado em junho, 26 2019 - 1:13 AM
Après test, voici le code que j'utilise pour faire le Drag and Drop

dans code fin initialisation fenêtre :
// autoriser le drag and drop par cette fenêtre
ExplorerAccepte(Vrai,"")
Evénement("RecupFichiers","*.*",WM_DROPFILES)


dans code fermeture fenêtre
ExplorerAccepte(Faux)


procédure RecupFichiers

Procedure RecupFichiers()

NbFic est un entier=ExplorerRécupère(_EVE.wParam)
sNomFic est une chaîne
// recupération de tous les fichiers du drag an drop
i est un entier
POUR i=1 _À_ NbFic
sNomFic=ExplorerRécupère(_EVE.wParam,i)
Copier_Image(sNomFic)
FIN


PROCÉDURE Copier_Image
Procedure Copier_Image(sNomfichier)
// exemple copier les images dans un répertoire sur le disque dur
NomImage est une chaîne=""
NomImage=fNomLong(sNomfichier)

SI fFichierExiste(fRepExe()+"\Image\"+NomImage)=Faux ALORS
fCopieFichier(sNomfichier,fRepExe()+"\Image\"+NomImage)
FIN

// s'il s'agit d'une seule image à partir du navigateur (internet) à mettre dans un champ image par exemple
IMG_MonImage = sNomfichier

// l'enregistrer éventuellement, dans une table (analyse) ou sur disque dur
Mensagem modificada, junho, 26 2019 - 1:34 AM
Membro registado
11 mensagems
Publicado em junho, 26 2019 - 7:36 AM
Merci pour le retour.

Concernant le mode Go qui fonctionne et le mode compilé qui ne fonctionne pas, j'ai trouvé d'où ça venait ... coup de bol !
Je détaille l'explication, ça pourra servir à ceux qui se retrouveront bloqués comme moi.

Je compilais mon appli avec l'option au niveau UAC : "Mon application utilisera les privilèges maximums de l'utilisateur courant" ... en la passant à "Mon application ne nécessite pas de privilèges particuliers", ça fonctionne.
Ce qui risque de poser des problèmes par la suite, mais chaque chose en son temps.
Peut-être que le ST expliquera pourquoi l'UAC bloque le DnD quand justement l'appli peut utiliser les privilèges max. Pas très logique tout ça !

Sinon, pour le coup ça fonctionne.
J'avais effectivement utilisé la méthode que tu proposes dans un premier temps avant d'essayer le DnD programmé, mais dans un cas comme dans l'autre, pas moyen de récupérer les URL des images qui sont imbriquées avec un "a href".

Je reprends mon précédent exemple :
Avec le CF_TEXT (ou ExplorerRécupère(_EVE.wParam,i)), on récupère dans le cas des images simples le "src img" ... ok, parfait.
Si on prends par exemple les avatars dans ce fil de discussion par exemple, ça donne l'URL de l'image, du genre : "

"

Par contre, si je glisse le logo PC Soft en haut à gauche de la page, qui lui est un lien de type a href, au lieu de me retourner l'URL de l'image qui est :
"

" il me retourne la valeur du a href : https://www.pcsoft.fr/

Comme tu m'avais dit que tu arrivais à récupérer les avatars (normal) ET le logo PC SOFT (c'est là que je bloque), ça m'intéresserai de savoir comment ?
Merci !

--
Cordialement,
Fabien
Membro registado
324 mensagems
Popularité : +21 (51 votes)
Publicado em junho, 26 2019 - 9:05 AM
Je souhaite faire une copie directe d'une image dans mon navigateur vers un champ image d'une fenêtre WinDev pour illustrer rapidement une base d'articles.


Je ne suis pas très sur de la légalité de la chose, même si les images sont dans google image, vous n'avez pas le droit de les copier et les ré-utiliser tel quel.
Membro registado
46 mensagems
Popularité : -1 (9 votes)
Publicado em junho, 26 2019 - 1:19 PM
Bonjour Fabien,
avec le code evénement WM_DROPFILES, pour récupérer le logo de PC Soft, j'ai 2 possibilités :
je glisse le drag and drop sur le bureau ou bien je le dépose dans un champ image de windev et là je l'enregistre sur disque dur, ensuite je fais IMG_MonImage = image enregistré avec chemin
Au fait Fabien, comment arrives-tu à récupérer l'URL d'une image glissé, sur un champ pour pouvoir travailler dessus ?
Mensagem modificada, junho, 26 2019 - 1:29 PM
Membro registado
11 mensagems
Publicado em junho, 26 2019 - 3:26 PM
L'enregistrer localement n'est pas une option envisageable pour moi ... le but étant uniquement de récupérer l'URL de l'image pour permettre une analyse à posteriori.
Dans les deux cas que tu cites, tu passes par un fichier local, avec ou sans manip intermédiaire en passant par le bureau, ça ne fonctionnera pas pour moi, j'ai besoin de l'URL d'origine du fichier.

Pour ma part, j'ai une procédure SurLâcher qui récupère simplement le CF_TEXT qui contient l'URL :
Procedure SurLâcher()

bufDonneesDrop est un Buffer
DnDAccepte(dndCopier+dndDéplacer)

//Récupération des données
bufDonneesDrop = DnDRécupère(CF_TEXT)

SAI_Fichier_URL = bufDonneesDrop
HTM_SansNom1 = bufDonneesDrop


Tu peux ensuite l'affecter à un champ HTM pour l'afficher.

Mais si tu glisses le logo PC Soft, c'est l'URL du site qui est récupérée, donc c'est le site qui sera affiché dans le champ HTM ... pas le logo !

D'où ma recherche d'un moyen de récupérer un peu plus d'info que la simple URL d'une image droppée ... sans succès pour l'instant.

--
Cordialement,
Fabien