PB à toute heure et à tout moment. (à parcourir avec modération)

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.
  • Index
  •  » Powerscripts
  •  » Alimenter un picture control, dans une DataWindow, par un Blob

#1 08-12-2008 16:48:00

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Alimenter un picture control, dans une DataWindow, par un Blob

Bonsoir,

Lorsque l'on place un Picture Control dans une fenêtre, on dispose d'une méthode SetPicture(Blob PictureContent) qui permet d'alimenter le Picture Control avec une image au format texte binaire.
C'est bien pratique, car il n'y a pas besoin de disposer d'une image "physique" sur le disque pour qu'elle soit affichée.

Dans mon cas, j'ai une fenêtre qui contient une datawindow. Dans ma datawindow, j'ai un Picture Control... Mais il semblerait qu'un Picture Control d'une datawindow soit différent d'un Picture Control hors d'une datawindow ! Je ne dispose pas de méthode SetPicture(Blob PictureContent). Au lieu de cela, j'ai une propriété FileName de type String, qui me permet de lier le PictureControl à un fichier physique.

Ne connaitriez-vous pas une astuce pour alimenter un Picture Control, dans une datawindow, par du Blob ?
Mon objectif - pour raisons de sécurité - est de ne pas créer d'image sur le disque pour ensuite la charger dans le Picture Control.

Je vous remercie pour vos conseils avisés !

Hors ligne

 

#2 08-12-2008 20:55:23

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: Alimenter un picture control, dans une DataWindow, par un Blob

Bonjour,

C'est bien la tous le problème.

L'astuce que j'utilise est de placer un "windows picture control" à l'emplacement désirée par dessus la datawindow. Cela n'est valable bien entendu que pour une datawindow de type form.

Hors ligne

 

#3 09-12-2008 07:49:57

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: Alimenter un picture control, dans une DataWindow, par un Blob

Héhé oui mais la problème c'est que je souhaite imprimer cette datawindow
Si j'imprime directement la window, le rendu n'est pas le même : ça imprime un espèce de screenshot.

Peut-être que je peux tirer quelque chose du InkPicture control, non ?

Dernière modification par Nyphel (09-12-2008 08:07:56)

Hors ligne

 

#4 09-12-2008 08:14:18

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: Alimenter un picture control, dans une DataWindow, par un Blob

Bonjour,

Il faut donner tous les éléments.

Pour imprimer le logo société dans tous mes entêtes de reports, j'utilise tous simplement un control OLE de type Paint.Picture.

Mais, cela nécessite de sauvegarder l'image dans une colonne de type Blob de la base de données. Mais, c'est toujours plus sécurisé que de l'écrire sur le disque.
Il y a plus de facilité pour sécuriser la chose (droits spécifiques sur la table, cryptage ...)

(Edition : Pour afficher une image avec un control OLE, l'image doit être sauvegarder dans la base par le control OLE. L'image n'est pas stocké au format natif mais au format OLE. On ne peut plus dans ce cas récupérer l'image native au format JPEG, BMP, ...)

Hors ligne

 

#5 09-12-2008 08:38:03

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: Alimenter un picture control, dans une DataWindow, par un Blob

En fait, sur mon disque, je dispose d'images JPG au format JPG qui sont cryptées et illisibles.

Une DLL décrypte ces images et me fournit le code binaire décrypté correspondant au code JPG décrypté des images. Je récupère donc cela dans un Blob, dans le but d'alimenter un picture control.

Je souhaite afficher ces images dans une datawindow invisible, puis imprimer cette datawindow.
Ma contrainte principale est de ne pas créer d'image JPG décryptée sur le disque dur, mais je peux éventuellement envisager d'enregistrer temporairement les données OLE dans une table dédiée... Quitte à vider cette table en fin de traitement (sait-on jamais...)

J'ai l'impression que le control InkPicture agit plus ou moins de la même façon, en lisant le Blob dans une colonne d'une table dédiée, et en enregistrant le texte manuel dans une autre colonne blob. Toutefois, comme pour le PictureControl, la méthode LoadPicture(Blob pictureContent) ne semble pas disponible lorsque l'on utilise un InkPicture Control dans une datawindow.

Ce control OLE de type Paint.Picture m'intéresse donc tout particulièrement. Buck, si vous aviez le temps de me fournir des informations complémentaires là-dessus, ou des exemples d'utilisation, ça m'aiderait probablement ;)

Merci !

Hors ligne

 

#6 09-12-2008 09:36:25

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: Alimenter un picture control, dans une DataWindow, par un Blob

Nyphel a écrit:

Ma contrainte principale est de ne pas créer d'image JPG décryptée sur le disque dur...

Pourquoi ?
Le but est d'empécher l'utilisateur d'en conserver une copie ?
Si tu ouvre le fichier en lecture avec le verrou "LockReadWrite!", aucun autrre programme ne devrait pouvoir y accéder (enfin ça c'est la théorie : à tester)


never let people work on more than one thing at once.

Hors ligne

 

#7 09-12-2008 11:43:59

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: Alimenter un picture control, dans une DataWindow, par un Blob

Oui, je ne veux pas qu'il soit accessible (ni en lecture, ni en écriture). Si j'en fais une copie physique - même protégée - je prends des risques. Le client ne veut pas de tels risques...

Hors ligne

 

#8 10-12-2008 08:47:27

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: Alimenter un picture control, dans une DataWindow, par un Blob

Bonjour,

En fait, il y a très longtemps que j'avais écrit cette solution. Et je ne me rappelai plus de quelle façon j'insérai l'image dans la base et en fait je passe par une méthode InsertFile du contrôle OLE.

Donc, cela nécessite forcément une étape par le disque dur. Sinon, j'utilise simplement le contrôle OLE de Microsoft Paint (Paint.Picture) en standard sur le système.

Après insertion dans la base, le blob peut être directement affecté au contrôle OLE via sa propriété ObjectData. Mais l'image n'est plus dans son format natif, elle est encapsulée dans une enveloppe OLE.

Le problème est qu'à l'époque je n'avais pas trouvé la documentation sur ce contrôle et j'avais recroisé les informations de différents forums pour arriver à la solution. J'ai de nouveau essayé de rechercher la documentation sans la trouver. Il y a peut être d'autres possibilités d'affecter l'image.

En cherchant, il existe certainement d'autres types de contrôle OLE à partir desquelles on peut directement affecté un type BLOB.

Hors ligne

 

#9 10-12-2008 14:24:48

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: Alimenter un picture control, dans une DataWindow, par un Blob

Dans la mesure où je ne trouve pas d'OLE objects qui ne nécessitent pas d'enregistrer l'image sur le disque dur, je vais moi-même l'enregistrer directement dans un fichier JPG et ensuite charger cette image dans mon PictureControl.

Le problème n'est donc pas vraiment résolu, puisqu'on ne sait toujours pas charger un Blob dans un PictureControl d'une datawindow sans écrire le contenu sur le disque dur :-/

Merci tout de même pour ces pistes !

Hors ligne

 
  • Index
  •  » Powerscripts
  •  » Alimenter un picture control, dans une DataWindow, par un Blob

Pied de page des forums

Propulsé par FluxBB 1.2.22