OVH Cloud OVH Cloud

Images incorporées et objet BoundObjectFrame

19 réponses
Avatar
J-Pierre
Bonjour tout le monde,

J'ai des images incorporées dans une base Access, type de champ "objet OLE".
J'ouvre la table en mode feuille de données, clic droit sur le champ OLE, puis insérer un objet, ça marche.Toujours en mode de
feuille de données, même méthode, je peux modifier l'image qui est enregistrée dans chaque ligne de la table.

Par contre, quand j'affiche l'image dans un formulaire, pas moyen de modifier l'image enregistrée, la doc MS se contente de
dire:
"Vous pouvez créer ou modifier ce type d'objet à partir du formulaire ou de l'état dans lequel il est inséré, en utilisant le
serveur OLE. "
Oui, bien sûr, Bill, et pour utiliser le serveur OLE, je fais comment ?

Le modèle d'objet BoundObjectFrame n'offre que peu de méthodes, ce qui est logique, puisque c'est le serveur OLE qui fait le
boulot.....

Alors, si vous avez un bout de code......
Et si aussi, vous avez des précisions sur le "serveur OLE", et son modèle d'objet.....
Peut-être suffit-il de rajouter une référence pour y avoir accès, mais laquelle ?

Merci
J-Pierre

9 réponses

1 2
Avatar
3stone
Salut,

"J-Pierre"
| Prochaine étape: adapter la dimension du contrôle OLE à l'image, et non l'inverse...... Je
reviendrai si je n'y arrive pas.



Forms!LeForm!ctrlImage.SizeToFit

devrait faire l'affaire...
mais en mode création évidemment! Mais là, tu sauras faire ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
J-Pierre
Oui Pierre, merci Pierre. J'y ai passé la nuit :-(((((

Mais à part ça, il semble impossible d'obtenir les caractéristiques de l'image contenue dans le contrôle, seulement les
dimensions du contrôle (image ou OLE objet).

Autre possibilité, récupérer les caractéristiques du fichier image sur disque dur avant de charger l'image dans le contrôle,
adapter les dimensions du contrôle, puis charger l'image. Avantage annexe: contrôler les caractéristiques (en particulier le
poids) de l'image avant de l'incorporer dans la base, pas envie d'avoir des logos qui font 20 megs, ils en seraient
capables....

Le problème: que dois-je utiliser ? n'importe quoi, pourvu que ça me donne les infos....au minimum me semble-t-il: poids du
fichier, taille de l'image (en pixels et ppp comme dans les propriétés, ou en n'importe quoi, j'arriverai bien à convertir)

J'ai trouvé grâce à de vieux posts de Pierre, un logiciel iview.exe (http://www.irfanview.com/), qui a l'air de faire des tas
de choses, mais pas juste de retourner l'info. Alors, avant de l'installer, est-ce le bon ?

Dernier point: je préfèrerais utiliser des fonctions standard MS plutôt que de devoir installer sur chaque poste de travail,
mais je prends tout ce qui vient :-)))

Merci

J-Pierre

Juste pour dire, taille de la base, c'est effrayant, en testant avec 4 logos qui font entre 20k et 150k, en 2 heures, la base
prend 20 megs.....
Avatar
3stone
Salut,

"J-Pierre"
| Mais à part ça, il semble impossible d'obtenir les caractéristiques de l'image contenue dans le
contrôle, seulement les
| dimensions du contrôle (image ou OLE objet).
|
| Autre possibilité, récupérer les caractéristiques du fichier image sur disque dur avant de charger
l'image dans le contrôle,
| adapter les dimensions du contrôle, puis charger l'image. Avantage annexe: contrôler les
caractéristiques (en particulier le
| poids) de l'image avant de l'incorporer dans la base, pas envie d'avoir des logos qui font 20
megs, ils en seraient
| capables....
|
| Le problème: que dois-je utiliser ? n'importe quoi, pourvu que ça me donne les infos....au minimum
me semble-t-il: poids du
| fichier, taille de l'image (en pixels et ppp comme dans les propriétés, ou en n'importe quoi,
j'arriverai bien à convertir)
|
| J'ai trouvé grâce à de vieux posts de Pierre, un logiciel iview.exe (http://www.irfanview.com/),
qui a l'air de faire des tas
| de choses, mais pas juste de retourner l'info. Alors, avant de l'installer, est-ce le bon ?
|
| Dernier point: je préfèrerais utiliser des fonctions standard MS plutôt que de devoir installer
sur chaque poste de travail,
| mais je prends tout ce qui vient :-)))



Regarde ceci, cela devrait te convenir dans ce cas :
http://www.3stone.be/access/download.php?lng=fr&pg17



| Juste pour dire, taille de la base, c'est effrayant, en testant avec 4 logos qui font entre 20k et
150k, en 2 heures, la base
| prend 20 megs.....


Je t'avais bien dit que OLE était crade ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
J-Pierre
Formidable.......

Merci Pierre

J-Pierre
Avatar
J-Pierre
Salut Pierre,

Je comprends mieux ton expression sardonique quand tu me disais:

"Forms!LeForm!ctrlImage.SizeToFit
devrait faire l'affaire...
mais en mode création évidemment! Mais là, tu sauras faire ;-)"

A part ça, pour être plus sérieux, ton code marche très bien. Je l'ai modifié pour ouvrir un formulaire existant en mode
création plutôt que d'en créer un, ce qui permet de le cacher avec acHidden et d'éviter des affichages peu conviviaux.

Mais il y a un problème sur la taille de l'image affichée, cette taille d'affichage en twips est proportionnelle au nombre de
points par pouce de l'image.

Si une image a 96 ppp, la taille en twips en correcte, et si je recalcule la taille de l'image en cm, cela correspond au
fichier.
Si une image a 300 ppp, la taille de l'image en twips est multipliée par 3,125 (300 / 96).

Un exemple:
Mon image sur le disque:
taille 626 x 835 pixels, ppp 300
ce qui donne taille en pouces 2.08 x 2.78, en cm 5.30 x 7.07.

L'image chargée dans le formulaire:
taille en twips 9390 x 12525
ce qui donne toujours 626 x 835 en pixels
mais 16.56 x 22.09 en cm (1440 twips = 1 pouce = 2.54 cm)

Et on retrouve bien le rapport de cet agrandissement avec les PPP:
5.30 / 96 * 300 = 16.56
7.07 / 96 * 300 = 22.09

Tout ça est logique, l'écran affiche en 96 ppp, donc l'image est agrandie. Mais ça ne m'arrange pas trop pour calculer la
taille réelle de l'image telle qu'elle devra apparaître à l'impression, car à l'impression, le problème est identique.

Je vois deux possibilités:
1-Tu sors de ta boîte à malices le bout de code qui permet de récupérer le PPP de l'image.
2-Tu sors de ta boîte à malices le logiciel qui me permet de créer une image temporaire sur disque avec un PPP de 96 (ou plus
exactement avec un PPP identique à celui de l'écran, j'ai déjà le code avec GetDeviceCaps), puis je chargerai cette image dans
le formulaire de travail pour récupérer sa vraie dimension.

Voilà voilà....

J-Pierre

Heuuuuu........ je m'adresse à Pierre, mais tout autre contributeur est le bienvenu :-)
Avatar
J-Pierre
Bonjour tout le monde,

Ca a été un peu laborieux, mais j'y suis arrivé.

En fait, je suis parti dans une autre direction, j'ouvre le fichier en binaire et je calcule différentes choses, dont la
taille en twips à l'affichage indépendamment de la résolution de l'écran. Et je me passe de cet abominable SizeToFit :-)

A l'affichage, évidemment, ce n'est pas parfait, un cm à l'écran ne fait pas un cm, mais l'affichage est d'une taille
raisonnable, proche de la réalité, proportionné aux autres infos affichées.

Par contre, à l'impression, pile poil. :-))))))

J'ai fait ça pour les fichiers BMP dont j'ai le format. Parcontre, j'ai un peu de mal à trouver le format des fichiers GIF et
JPG (ou pourquoi pas PNG et autres). Alors, si vous avez ça quelque part, merci de me donner le lien ou de me l'envoyer.

Si ça vous intéresse, quand j'aurai fini, je fais une base démo que Pierre pourra éventuellement publier sur son site, il y a
un peu trop de code pour le coller ici.

A+
J-Pierre
Avatar
J-Pierre
Changement de stratégie, après tout, Access n'est pas un logiciel de retouche d'images, je ne traite que le format BMP, et
n'importe quel utilisateur a un logiciel pour convertir l'image à ce format. Avantage annexe: Pas besoin de s'emmerder à
calculer le poids d'un fichier jpg ou autre une fois converti en bmp.
Avatar
3stone
Ho jean-Pierre,

"J-Pierre"
| Changement de stratégie, après tout, Access n'est pas un logiciel de retouche d'images, je ne
traite que le format BMP, et
| n'importe quel utilisateur a un logiciel pour convertir l'image à ce format. Avantage annexe: Pas
besoin de s'emmerder à
| calculer le poids d'un fichier jpg ou autre une fois converti en bmp.


Si je suis sardonique, alors tu es plutôt du genre teigne ;-)


Si tu souhaite laisser choisir un logo pour différents documents,
un simple control image, affichage sur zoom et qui contient
déjà un truc tout simple du genre [logo].

On veut en changer, pas de problème!
Tu laisse choisir un image en controlant éventuellement le poids,
avec éventuellement un conseil selon le poids du fichier choisi.
Ouverture en mode caché, attribuer l'image et sauvegarder avec
le paramètre acSaveYes et terminer...

Si l'utilisateur choisi n'importe quoi, il s'en rendra vite compte.


PS:
Il faut que je vérifie encore ton raisonnement sur les twips ;-)
Le SizeToFit n'est rien d'autre que le "Ajuster au contenu" utilisé par
et pour tout les contrôles... et où l'on ne s'occupe pas non plus de
la résolution de l'image... et ou 1000 twips reste 1000 twips.

Pour ma part, je n'ai jamais remarqué de petits ou grands twips ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
J-Pierre
Trop tard, c'est tout développé et testé.....

Quand on crée une société, on choisit un logo, je l'enregistre dans la table des sociétés avec toutes ses caractéristiques
pour pouvoir l'afficher et l'imprimer avec des proportions exactes dans tous les documents (facture, devis, etc...) en
fonction de la société émettrice.

Je ne sais pas si c'est très utile, mais je me suis bien amusé..... :-)

Et je préfère tout contrôler avant plutôt qu'un utilisateur fasse n'importe quoi et en emmerde plus de 20 autres...

Du très beau code, grâce à toi et Raymond.

J-Pierre

PS: Pour les autres formats d'images, il y aurait une solution simple: convertir en fichier temp BMP avec le logiciel adéquat
appelé avec un shell, puis chargement de l'image, puis suppression du fichier temp. Je le ferais bien, mais je n'ai pas envie
de compliquer la procédure d'installation sur les postes avec un logiciel supplémentaire. Si vous en connaissez un qui est
automatiquement installé avec Windows et qui travaille avec ligne de commande ou paramètres dans le registre, je suis preneur.

"3stone" a écrit dans le message de news: %2386A$
Ho jean-Pierre,

"J-Pierre"
| Changement de stratégie, après tout, Access n'est pas un logiciel de retouche d'images, je ne
traite que le format BMP, et
| n'importe quel utilisateur a un logiciel pour convertir l'image à ce format. Avantage annexe: Pas
besoin de s'emmerder à
| calculer le poids d'un fichier jpg ou autre une fois converti en bmp.


Si je suis sardonique, alors tu es plutôt du genre teigne ;-)


Si tu souhaite laisser choisir un logo pour différents documents,
un simple control image, affichage sur zoom et qui contient
déjà un truc tout simple du genre [logo].

On veut en changer, pas de problème!
Tu laisse choisir un image en controlant éventuellement le poids,
avec éventuellement un conseil selon le poids du fichier choisi.
Ouverture en mode caché, attribuer l'image et sauvegarder avec
le paramètre acSaveYes et terminer...

Si l'utilisateur choisi n'importe quoi, il s'en rendra vite compte.


PS:
Il faut que je vérifie encore ton raisonnement sur les twips ;-)
Le SizeToFit n'est rien d'autre que le "Ajuster au contenu" utilisé par
et pour tout les contrôles... et où l'on ne s'occupe pas non plus de
la résolution de l'image... et ou 1000 twips reste 1000 twips.

Pour ma part, je n'ai jamais remarqué de petits ou grands twips ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/







1 2