PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Image et champ mémo
Image et champ mémo
Débuté par Serge LANTHIER, 11 jan. 2019 06:35 - 2 réponses
Membre enregistré
213 messages
Popularité : +12 (12 votes)
Posté le 11 janvier 2019 - 06:35
Salutations,

Une question toute simple...

J'ai un champ table dans lequel j'affiche une liste de données et une image.
Style TableAjoute(NomTable, MonFichier.Info1 + Tab + MonFichier.Info2 + Tab + MonFichier.RubriqueImage)

Si je sauvegarde mon image de la façon suivante tout va bien:
MonFichier.RubriqueImage = Chemin\NomImage.Format

Mais mon image doit se trouver sur le disque à son emplacement d'origine sinon Pouf! plus d'image.
Déception...


Je fouille et je me tourne vers HAttacheMémo.
Style HAttacheMémo(MonFichier, RubriqueImage, "Chemin\NomImage.Format", hMémoImg)
Suivi d'un HAjoute ou HModifie naturellement.

Mais MonFichier.RubriqueImage ne passe plus dans mon TableAjoute.


Ma question:
Doit-on absolument "HExtraitMémo" l'image sur disque pour pouvoir l'utiliser?
Ne peut-on assigner l'image directement à la table depuis le mémo?

J'ai fouillé... Manifestement sans succès.

Merci d'avance pour toute réponse.

Serge
Membre enregistré
213 messages
Popularité : +12 (12 votes)
Posté le 14 janvier 2019 - 21:33
Après avoir laissé le problème de côté quelques jours je me réponds.
Un autre développeur qui bute sur le problème pourra toujours lire.

1) Description de fichier / rubrique
Pour ma "RubriqueImage" j'ai activé les vignettes.
Vignette de 32x32 pour le besoin de l'exemple.


2) Ajout de l'image dans "MonFichier"
...
MonFichier.RubriqueX = ValeurX
MonFichier.RubriqueY = ValeurY
HAttacheMémo (MonFichier, RubriqueImage, "Chemin\NomImage.Format", hMémoImg)
...
HAjoute ou HModifie naturellement.


3) Assigner la vignette de l'image à "MaTable"
...
HLitPremier (MonFichier, RubriqueX, HBlocageNon)
TANTQUE HTrouve(MonFichier)
...
TableAjoute("MaTable", MonFichier.RubriqueX + Tab + MonFichier.RubriqueY)
MaTable.RubriqueImage[MaTable..Occurence] = MonFichier.RubriqueImage..Vignette[1] // <---------- La magie est ici.
...
HLitSuivant (MonFichier, RubriqueX, HBlocageNon)
FIN
...


-----
Dans cet exemple "MaTable" a 3 colonnes
Colonne 1 pour ValeurX
Colonne 2 pour ValeurY
Colonne 3 pour la vignette de mon image (Colonne de type Image)

-----
Idem pour assigner l'image elle-même à un champ image.
MonChampImageGrandFormat = MonFichier.RubriqueImage
MonChampImagePetitFormat = MonFichier.RubriqueImage..Vignette[1]

-----
Vignette[Indice] prend autant d'indice que de vignettes sur votre image (Description de fichier).
Testé de mon côté avec 4 vignettes de différentes tailles.

-----
Pas besoin de HExtraitMémo et l'image n'a pas à être sur le disque.
Merveilleux!

Si vous avez plus simple à suggérer je suis preneur.

Serge

Bon Windev!
Message modifié, 14 janvier 2019 - 21:46
Membre enregistré
213 messages
Popularité : +12 (12 votes)
Posté le 16 janvier 2019 - 17:39
Un constat pour un lecteur éventuel...

Windev ne gère pas les vignettes de façon efficace.

Du moins depuis une image de 512x512 pour de petites vignettes de 16x16 ou 32x32.
Sur 250 images je me retrouve avec quelques vignettes tout simplement illisibles.
Une seule vignette illisible c'est trop...

Comme il s'agit d'images fixes dans le temps j'en suis venu à stocker celles-ci selon les dimensions requises.
Par exemple une même image en 16x16, 32x32, 64x64, 128x128, 256x256, 512x512 et 1024x1024.

Jusqu'à 256x256 je demande une vignette de taille équivalente par image.
Par exemple mon image en 32x32 a sa vignette en 32x32.

Maintenant je peux utiliser images et vignettes sans aucune difficulté.
Résultats impeccables sur champ table ou champ arbre.

Je biffe ce problème de ma liste et poursuit mon développement.

Serge

Bon WinDev!