Intégrer le contenu d'une variable au Project en mode développement

SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 février 2006 - 5 mars 2005 à 16:18
SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 février 2006 - 6 mars 2005 à 21:43
Hello !



Je reconnais que le titre n'est pas super ! En fait, je développe un
OCX pour les GIF animés et il y a une propriété "Embed" qui permettrait
d'intégrer une image au Project.



Je m'explique : Mon OCX contient une fonction 'ExtractImages(buf As
String)' qui permet de charger le GIF à partir de ses octets, et comme
je l'ai dit, cette fameuse propriété 'Embed' qui fonctionne ainsi : Si
elle est réglée à 'False' en mode développement, les octets du fichier
source contenu dans 'FileName' ne sont pas sauvegardés au project... et
je voudrais que si 'Embed' est réglé à 'True', que les octets soient
sauvegardés dans la variable 'm_OctetsFile'.



Le problème réside dans le fait que quand on fait 'F5', les octets sont
bien stockés dans la variable mais celle-ci est déchargée une fois
qu'on quitte le prog... et je voudrais justement qu'ils soient encore
dans la variable, et que si on sauvegarde le project, qu'on le ferme et
le ré-ouvre, que la variable contienne encore les octets, ce qui n'est
pas le cas

Je n'aurais alors plus qu'à appeler la fonction 'ExtractImages' en lui passant les octets.



C'est exactement le même principe qu'avec une PictureBox : en mode
édition, on peut définir le fichier Image source et les octets sont
carrément intégré au programme (même à l'EXE une fois compilé). C'est
ce que je voudrais faire.



J'espère avoir été compréhensible



Merci d'avance !!!



SkyRocKo

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 mars 2005 à 16:38
Salut
Tu peux sauver et relire le paramétrage de ton composant en utilisant les
UserControl_WriteProperties et
UserControl_ReadProperties
Regarde dans l'aide.

Vala
Jack
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 février 2006
5 mars 2005 à 16:55
Salut !



Merci jack pour cette réponse



On peut même stocker un string de plusieurs dizaines de ko avec UserControl_WriteProperties



Le problème c'est que si je met ça dans UserControl_WriteProperties :



If Embed = True Then Call PropBag.WriteProperty("OctetsFichier", m_OctetsFile)



...alors on verra une nouvelle propriété "OctetsFichier" ajoutée à l'OCX, ou je me trompe



Je vais faire un tour dans l'aide, je n'ai pas vu le problème abordé sur ce site.



Merci d'avance



SkyRocKo
0
SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 février 2006
6 mars 2005 à 19:51
Hello jack



J'ai essayé, ça fonctionne en partie !



UserControl_WriteProperties sauvegarde bien la variable... mais pas en entier !



Il s'agit d'une variable de type String, je suis allé voir dans le
fichier .frm du project contenant l'OCX avec notepad et il y a ceci :



Begin Animated_GIF.AnimatedGIF AnimatedGIF1

AutoSize = 0 'False

AutoStart = -1 'True

BackColor = 12648447

BackStyle = 1

Embed = -1 'True

FileName = "c:\mon_fichier.gif"

Interval = 0

OctetsFile = "GIF89ax" <= Juste le header !!!

End



J'ai ouvert avec un éditeur hexadécimal le fichier GIF de mon project et il y a bien un Chr(0) après
"GIF89ax" comme je l'attendais. Je pense que la suite du fichier n'a donc pas été enregistré à cause du Chr(00)



Y-a-t-il une astuce pour contourner cela




Merci d'avance



SkyRocKo
0
SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 février 2006
6 mars 2005 à 21:43
J'ai regardé le fichier .frm d'un project utilisant un OCX du même
genre que le mien et qui lui, permet d'intégrer l'image GIF au project.
Le fichier Form1.frm contient ceci :



Begin GIF89LibCtl.Gif89a Gif89a1

Height = 1710

Left = 3360

OleObjectBlob = "FORM1.frx":0000 <= hehe !

TabIndex = 0

Top = 2880

Width = 1800

End



Apparemment, l'image est stockée dans le fichier "Form1.frx".



A quoi correspond 'OleObjectBlob'... et surtout, comment faire pareil en VB6

Comment est-ce faisable



Ca ferait grandement avancer le développement de l'OCX !!!



Merci d'avance



SkyRocKo
0
Rejoignez-nous